Логирование событий

О логировании на платформе

Логирование событий производится с помощью инструмента Grafana, интегрированному в систему. Анализируя зафиксированные на платформе события, вы можете выявлять несанкционированный доступ к конфиденциальной информации и контролировать работу пользователей с платформой.

Система фиксирует информацию о действиях над следующими объектами:

  • рабочие области;

  • права на рабочие области;

  • наборы данных;

  • дашборды;

  • темы;

Перечень действий, фиксируемых над указанными объектами:

  • добавление;

  • удаление;

  • редактирование.

Для фиксации всех действий субъектов над объектами на платформе используется единый формат логов. Выглядит он следующим образом:

OperationName:{@OperationName} with AccessType:{@AccessType} on ObjectType:{@ObjectType} with WorkspaceId:{@WorkspaceId} completed by User:{@User} with OperationStatus:{@OperationStatus}

где –

  • @OperationName – название произведенной операции;

  • @AccessType – типа доступа к объекту;

  • @ObjectType – тип объекта, над которым была произведена операция;

  • @WorkspaceId – идентификатор рабочего пространство, где произошло событие;

  • @User – логин пользователя, который совершил действие;

  • @OperationStatus – результат произведенной операции.

Ниже приведено описание каждого элемента строки:

Название элемента

Список возможных значений

Название элемента

Список возможных значений

OperationName

CreateCopyDashboard – создание копии дашборда;
CreateDashboard – создание дашборда;
DeleteDashboard – удаление дашборда;
DeleteStaleDashboardsAndThemes – удаление устаревших дашбордов и тем;
RenameDashboard – переименование дашборда;
SaveAsDashboard - сохранение дашборда с помощью Save As;
SaveDashboard – сохранение дашборда;
GetDashboard - получение доступа к дашборду;
GetDashboardList – получение доступа к списку дашбордов;

UploadImage – загрузка изображения;
GetImage – получение доступа к изображению;

DeleteTheme – удаление темы;
ImportTheme – импорт темы;
SetThemeForDashboard – установка темы для дашборда;
SetThemeForWorkspace – установка темы для рабочей области;
ExportTheme – экспорт темы;
ExportThemeFromWidget – экспорт темы виджета;
GetTheme – получение доступа к теме;
GetThemeList – получение доступа к списку тем;

CreateUserWidget – создание пользовательского виджета;
DeleteUserWidget – удаление пользовательского виджета;
UpdateUserWidget – обновление пользовательского виджета;
GetUserWidget – поучение доступа к пользовательскому виджету;
GetUserWidgetList – получение доступа к списку пользовательских виджетов;

GetWidgetTemplateCode – получение доступа к коду виджета, который используется по умолчанию;
ExportWidgetDataToExcel - экспорт данных, отображаемых в виджете, в Excel;
GetWidgetData – получение доступа к данным, отображаемым в виджете.

AccessType

  • None – отсутствие типа доступа;

  • Create – доступ на создание;

  • Read – доступ на чтение;

  • Write – доступ на запись;

  • Delete – доступ на удаление;

  • List – доступ на чтение списка;

  • GrantPermissions – доступ к выдаче прав доступа, например, к рабочей области (для создания ролей и т.д.)

ObjectType

  • Workspace – рабочая область;

  • Dataset – набор данных;

  • Dashboard – дашборд;

  • Theme – тема;

  • ScheduledLoader – загрузчик по расписанию;

  • DataSource – источник данных;

  • UserWidget – пользовательский виджет;

  • Image – изображение;

  • WidgetTemplateCode – код виджета, используемый по умолчанию;

  • WorkspaceRoleMapping – объект, хранящий сопоставление имени пользователя и роли в рабочей области, или группы пользователя и роли в рабочей области;

  • DatasetPermissionMapping – объект, хранящий сопоставление имени пользователя и разрешение в наборе данных, или группы пользователя и разрешение в наборе данных.

WorkspaceId

Идентификатор рабочей области. Например, WorkspaceId:3fe8019c-7e04-4f8b-9c45-d02b4f493281.

ObjectId

Идентификатор объекта, над которым выполнилось действие. Например, ObjectId:5g3660be-8079-4710-975a-0349367d9ebf.

User

Логин пользователя, который совершил операцию. Например, User:admin.

OperationStatus

Результат выполненной операции. Возможны два варианта:

  • Success – действие выполнено успешно;

  • Failed – действие не выполнилось.

Образец записи события (сохранение дашборда пользователем “admin”):
OperationName:SaveDashboard with AccessType:Write on ObjectType:Dashboard with ObjectId:a2202fdbc3384f9fb22fd2d005c43f93 with WorkspaceId:4de8029c-7e04-4f6b-9c46-d02b4f493192 completed by User:admin with OperationStatus:Success

Данная запись информирует о том, что пользователь admin сохранил дашборд с идентификатором a2202fdbc3384f9fb22fd2d005c43f93 в рамках рабочей области с идентификатором 4de8029c-7e04-4f6b-9c46-d02b4f493192, и что операция завершилась успешно.

Просмотр лога

Для получения доступа к логу, выполните следующие шаги:

  1. В веб-браузере перейдите по адресу http://<platform-address>/v3/grafana, где <platform-address> – IP-адрес или доменное имя сервера.

  2. В открывшемся окне нажмите Home Explore в левой стороне экрана:

     

  3. В открывшемся окне выберите один из режимов построения запросов в правой стороне экрана: Builder или Code. Мы выберем Code:

     

  4. Теперь для просмотра данных необходимо ввести команду в строке запроса. Как мы уже говорили, для логирования событий на платформе используется Grafana. При использовании данной системы, в строке ввода запроса в самом начале в фигурных скобках указывается поток, либо компонент, события которого следует фильтровать.
    Например, мы хотим просмотреть записи, касающиеся пользователя ivanov. Для фильтрации по строке в Grafana используется конструкция |="строка", поэтому мы введем следующую команду и нажмем Run query в правом верхнем углу:
    {exporter="OTLP"} |= "ivanov"

     

    В результате мы получили наборы записей, подобные этой:

     

    Проанализировав выведенные данные, вы сможете определить какие действия, над какими объектами и когда производил указанный пользователь.

В Grafana для построения запросов используется язык LogQL.

Примеры запросов

Ниже представлен список примерных запросов с кратким описанием. Запросы построены таким образом, чтобы пользователю было легко воспринимать отображаемую информацию. Строки содержат лишь основные данные о событии (line_format "{{.body}}"). Для просмотра более подробной информации, необходимо развернуть запись, щелкнув по ней мышкой.

Запрос

Описание

Запрос

Описание

{exporter="OTLP"} | json | line_format "{{.body}}" |= "Failed"

Поиск событий со статусом Failed (действие не было выполнено из-за ошибки). Результат поиска:

OperationName:GetWidgetData with AccessType:Read on ObjectType: Global completed by User:admin with OperationStatus:Failed, ErrorMessage:Call failed with status code 400 (Bad Request): POST http://formula-engine:80/api/v1.0/workspaces/4de8029c-7e04...

{exporter="OTLP"} | json | line_format "{{.body}}" |= "CreateDashboard"

Поиск событий, относящихся к созданию дашборда.
Результат поиска:

OperationName:CreateDashboard with AccessType:Create on ObjectType: Dashboard with ObjectId:a4cc7bd500954b4cb733a694ceaddd40 with WorkspaceId:4de8029c-7e04-4f6b-9c46-d02b4f493192 completed by User:admin with OperationStatus:Success

{exporter="OTLP"} | json | line_format "{{.body}}" |= "DeleteTheme"

Поиск событий, относящихся к удалению темы.
Результат поиска:

OperationName:DeleteTheme with AccessType:Delete on ObjectType: Theme with ObjectId:b4c0d1c637594ab9bc353ca07a49976c with WorkspaceId:4de8029c-7e04-4f6b-9c46-d02b4f493192 completed by User:admin with OperationStatus:Success

{component="v3-data-management-service"} |= "Hangfire"

Поиск событий, относящихся к обновлению данных.

Пример результата поиска:

Failed to process the job '654ba6356d3beac4efd06799': an exception occurred. {SourceContext=\"Hangfire.AutomaticRetryAttribute\", ServiceName=\"data-management-service\", ServiceVersion=\"1.0.0\"} System.Exception: В наборе отсутствуют таблицы с возможностью для обновления.\n", "stream":"stdout", "attrs": {"component"="v3-data-management-service"}, "time":"2023-11-08T15:16:01.849212246Z"}

{component="v3-keycloak"} |= "error="

Поиск событий, относящихся к попытке войти в систему с помощью незарегистрированной учетной записи, либо к использованию неправильного логина или пароля для существующей учетной записи.

Пример результата поиска:

Попытка войти в систему с помощью незарегистрированной учетной записи:

Использование неправильных учетных данных пользователя:

{component="v3-dashboard-service"} |= "OperationName"

Логирование доступа к различным объектам. В примере ниже приведена запись о сохранении дашборда.

Пример результата поиска:


Смотрите также

Трейсинг запросов

На этой странице

Видео


Время чтения: 2 мин.


Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.