О логировании на платформе
Логирование событий производится с помощью инструмента 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 – получение доступа к списку тем; |
Раскрыть |
---|
title | Пользовательские виджеты |
---|
| 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 | Результат выполненной операции. Возможны два варианта: |
панель |
---|
panelIconId | atlassian-note |
---|
panelIcon | :note: |
---|
bgColor | #E3FCEF |
---|
|
Образец записи события (сохранение дашборда пользователем “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
, и что операция завершилась успешно.
Просмотр лога
Для получения доступа к логу, выполните следующие шаги:
В веб-браузере перейдите по адресу http://<platform-address>/v3/grafana
, где <platform-address>
– IP-адрес или доменное имя сервера.
В открывшемся окне нажмите Home → Explore в левой стороне экрана:
В открывшемся окне выберите один из режимов построения запросов в правой стороне экрана: Builder или Code. Мы выберем Code:
Теперь для просмотра данных необходимо ввести команду в строке запроса. Как мы уже говорили, для логирования событий на платформе используется 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="
| Поиск событий, относящихся к попытке войти в систему с помощью незарегистрированной учетной записи, либо к использованию неправильного логина или пароля для существующей учетной записи. Пример результата поиска: Попытка войти в систему с помощью незарегистрированной учетной записи: Блок кода |
---|
type=LOGIN_ERROR, realmId=542bcff6-563b-4936-9c7a-e9cd82d9e405,
clientId=visiology_designer, userId=null, ipAddress=87.246.142.5,
error=user_not_found, auth_method=openid-connect, auth_type=code,
redirect_uri=https://sec.test.visiology.su/v3/visiology-designer/signin-callback,
code_id=c9f31548-8e6f-4536-83ed-a214ef8f3083, username=dfgdfdffd,
authSessionParentId=c9f3121548-8e6f-4636-83ed-a214ef8f3083,
authSessionTabId=hwJdVuJjo2A |
Использование неправильных учетных данных пользователя: Блок кода |
---|
type=LOGIN_ERROR, realmId=543bcff6-573b-4836-9c7a-e9cd82d9e405,
clientId=visiology_designer, userId=a5433912-d8b9-5b78-8e10-672f3b324b2e,
ipAddress=87.245.142.5, error=invalid_user_credentials,
auth_method=openid-connect, auth_type=code,
redirect_uri=https://sec.test.visiology.su/v3/visiology-designer/signin-callback,
code_id=c9f31548-8e6f-4626-83ed-a214ef8f3083, username=admin,
authSessionParentId=c9f31548-8e6f-4636-83ed-a214 ef0f3083,
authSessionTabId=hwJsVuJh02A |
|
{component="v3-dashboard-service"} |= "OperationName"
| Логирование доступа к различным объектам. В примере ниже приведена запись о сохранении дашборда. Пример результата поиска: Блок кода |
---|
OperationName:\"SaveDashboard\" with AccessType: \"Write\" on ObjectType:
\"Dashboard\" with ObjectId:\"6fc9df8cc4a4412fa9089c89ddf6a6d8\" with
WorkspaceId:\"b764a535-6594-4bf1-9d6d-5e46 62825889\" completed by User:
\"admin\" with OperationStatus:\"Success\"
{SubId=\"a5433912-d8b9-4b78-8e18-672f3b324b2e\",
ActionId=\"548ff2a1-8db0-4262-a789-30f8bc8cdb1f\",
ActionName=\"Visiology. DashboardService.Mod ules.Dashboards.
Api.Controllers.DashboardsController.SaveDashboard (Visiology.
DashboardService.Modules. Dashboards.Api)\", RequestId=\"HMVODLA517EJ:00000002\",
RequestPath=\"/api/workspaces/b764a535-6594-4bf1-9d6d-5 e4662825889/dashboards/
6fc9df8cc4a4412fa9889c89ddf6a6d8\", ConnectionId=\"0HMVØDLA517EJ\",
ServiceName=\"dashboard-service\", ServiceVersion=\"1.0.0\"} \n",
"stream":"stdout", "attrs":{"component":"v3-dashboard-service"},
"time":"2823-11-08T15:24:18.934614889Z"} |
|
Смотрите также
📄 Трейсинг запросов