- Создатель Эдуард Столяр, отредактировано дек. 08, 2023
Вы просматриваете старую версию данной страницы. Смотрите текущую версию.
Сравнить с текущим просмотр истории страницы
« Предыдущий Версия 7 Текущий »
О логировании на платформе
Логирование событий производится с помощью инструмента 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 – создание копии дашборда; Изображения UploadImage – загрузка изображения; Темы DeleteTheme – удаление темы; Пользовательские виджеты CreateUserWidget – создание пользовательского виджета; Виджеты GetWidgetTemplateCode – получение доступа к коду виджета, который используется по умолчанию; |
AccessType |
|
ObjectType |
|
WorkspaceId | Идентификатор рабочей области. Например, |
ObjectId | Идентификатор объекта, над которым выполнилось действие. Например, |
User | Логин пользователя, который совершил операцию. Например, |
OperationStatus | Результат выполненной операции. Возможны два варианта:
|
Образец записи события (сохранение дашборда пользователем “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}}"
). Для просмотра более подробной информации, необходимо развернуть запись, щелкнув по ней мышкой.
Запрос | Описание |
---|---|
| Поиск событий со статусом 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... |
| Поиск событий, относящихся к созданию дашборда. 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 |
| Поиск событий, относящихся к удалению темы. 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 |
| Поиск событий, относящихся к обновлению данных. Пример результата поиска: 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"} |
| Поиск событий, относящихся к попытке войти в систему с помощью незарегистрированной учетной записи, либо к использованию неправильного логина или пароля для существующей учетной записи. Пример результата поиска: Попытка войти в систему с помощью незарегистрированной учетной записи: 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 |
| Логирование доступа к различным объектам. В примере ниже приведена запись о сохранении дашборда. Пример результата поиска: 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"} |
Смотрите также
- Нет меток