Перейти к основному содержимому

Аудит действий пользователя

В процессе работы пользователя Памир генерирует события. Эти события могут быть использованы для интеграции с внешней системой и логирования.

События Памир попадают в exchange RabbitMQ типа topic, который называется pamir_audit_exchange. Клиенты должны самостоятельно создать подписку на необходимые события и обрабатывать их в своих очередях.

Тип сериализации тела событий - json. Тело событий:

event_type: str
user_id: UUID | None
user_login: str
endpoint: str
parameters: str
metadata: dict
response_status_code: int
timestamp: datetime

События сервиса аутентификации

НазваниеКлюч маршрутизации
Изменение профиля пользователяauth.user_action.user.UserChanged
Создание пользователяauth.user_action.user.UserCreated
Изменение данных пользователяauth.user_action.user.UserProfileChanged
Удаление пользователяauth.user_action.user.UserDeleted
Изменение пароля пользователяauth.user_action.user.UserPasswordChanged
Установка пароля пользователяauth.user_action.user.UserPasswordSet
Изменение статуса пользователяauth.user_action.user.UserStatusChanged
Изменение истёкшего пароляauth.user_action.user.UserExpiredPasswordChanged
Сброс/установка пароля для произвольного пользователяauth.user_action.user.UserPasswordReset
Получение данных Super Userauth.user_action.user.SuperUserDataAccessed
Удаление данных Super Userauth.user_action.user.SuperUserDataRevoked
Создание атрибутаauth.user_action.attributes.AttributeCreated
Обновление атрибутаauth.user_action.attributes.AttributeUpdated
Удаление атрибутаauth.user_action.attributes.AttributeDeleted
Сброс базы данных до начального состоянияauth.user_action.maintenance.DatabaseResetTriggered
Обновление правила доступа для интерфейсовauth.user_action.access_rules.AccessRuleUpdated
Удаление правила доступаauth.user_action.access_rules.AccessRuleDeleted
Создание нового правила доступа для интерфейсовauth.user_action.access_rules.AccessRuleCreated
Обновление тегов доступа пользователяauth.user_action.access_rules.UserAccessTagsUpdated
Изменение системной настройкиauth.user_action.settings.SettingUpdated

События сервиса СРМ

НазваниеКлюч маршрутизации
Изменение типа CIsrm.user_action.ci_type.CITypeUpdated
Удаление типа CIsrm.user_action.ci_type.CITypeDeleted
Создание типа CIsrm.user_action.ci_type.CITypeCreated
Обновление атрибутов типа CIsrm.user_action.ci_type.CITypeAttributesUpdated
Обновление возможных связей типа CIsrm.user_action.ci_type.CITypeLinksUpdated
Обновление атрибутов связи типа CIsrm.user_action.ci_type.CITypeLinkAttributesUpdated
Обновление шаблонов имен CIsrm.user_action.ci_type.CITypeNamesTemplateUpdated
Создание атрибутаsrm.user_action.attribute.AttributeCreated
Обновление атрибутаsrm.user_action.attribute.AttributeUpdated
Удаление атрибутаsrm.user_action.attribute.AttributeDeleted
Создание связи между CIsrm.user_action.cit_links.CILinkCreated
Удаление связи между CIsrm.user_action.cit_links.CILinkDeleted
Обновление связи между CIsrm.user_action.cit_links.CILinkUpdated
Обновление атрибутов связиsrm.user_action.cit_links.CILinkAttributesUpdated
Обновление фетчера атрибутовsrm.user_action.attribute_fetchers.AttributeFetcherUpdated
Создание фетчера атрибутовsrm.user_action.attribute_fetchers.AttributeFetcherCreated
Удаление фетчера атрибутовsrm.user_action.attribute_fetchers.AttributeFetcherDeleted
Обновление парсера атрибутовsrm.user_action.attribute_parsers.AttributeParserUpdated
Создание парсера атрибутовsrm.user_action.attribute_parsers.AttributeParserCreated
Удаление парсера атрибутовsrm.user_action.attribute_parsers.AttributeParserDeleted
Удаление плагинаsrm.user_action.plugins.PluginDeleted
Деинсталляция плагинаsrm.user_action.plugins.PluginUninstalled
Установка плагинаsrm.user_action.plugins.PluginInstalled
Установка плагина на раннерыsrm.user_action.plugins.PluginRunnersInstalled
Загрузка плагинаsrm.user_action.plugins.PluginUploaded
Обновление модификаторов атрибутов CITsrm.user_action.attribute_modifiers.CITypeAttributeModifiersUpdated
Удаление модификаторов атрибутов CITsrm.user_action.attribute_modifiers.CITypeAttributeModifiersDeleted
Обновление фетчера связи CITsrm.user_action.cit_link_fetchers.CITypeLinkFetcherUpdated
Создание фетчера связи CITsrm.user_action.cit_link_fetchers.CITypeLinkFetcherCreated
Удаление фетчера связи CITsrm.user_action.cit_link_fetchers.CITypeLinkFetcherDeleted
Обновление парсера связи CITsrm.user_action.cit_link_parsers.CITypeLinkParserUpdated
Создание парсера связи CITsrm.user_action.cit_link_parsers.CITypeLinkParserCreated
Удаление парсера связи CITsrm.user_action.cit_link_parsers.CITypeLinkParserDeleted
Создание правила доступаsrm.user_action.access_rules.AccessRuleCreated
Изменение правила доступаsrm.user_action.access_rules.AccessRuleUpdated
Удаление правила по IDsrm.user_action.access_rules.AccessRuleDeleted
Удаление правила по имениsrm.user_action.access_rules.AccessRuleByNameDeleted
Изменение правила TQLsrm.user_action.access_rules_tql.TQLRuleUpdated
Удаление правила TQLsrm.user_action.access_rules_tql.TQLRuleDeleted
Создание правила TQLsrm.user_action.access_rules_tql.TQLRuleCreated
Удаление правила TQL по имениsrm.user_action.access_rules_tql.TQLRuleByNameDeleted
Создание запросаsrm.user_action.search_queries.SearchQueryCreated
Изменение запросаsrm.user_action.search_queries.SearchQueryUpdated
Удаление запросаsrm.user_action.search_queries.SearchQueryDeleted
Создание шаблонаsrm.user_action.attribute_templates.AttributeTemplateCreated
Изменение шаблонаsrm.user_action.attribute_templates.AttributeTemplateUpdated
Удаление шаблонаsrm.user_action.attribute_templates.AttributeTemplateDeleted
Создание правила идентификацииsrm.user_action.cit_identify_rules.IdentifyRuleCreated
Обновление правила идентификацииsrm.user_action.cit_identify_rules.IdentifyRuleUpdated
Удаление правила идентификацииsrm.user_action.cit_identify_rules.IdentifyRuleDeleted
Установка шаблона наименованияsrm.user_action.cit_name_templates.NameTemplateSet
Изменение шаблона наименованияsrm.user_action.cit_name_templates.NameTemplateUpdated
Удаление шаблона наименованияsrm.user_action.cit_name_templates.NameTemplateDeleted
Изменение фильтра связиsrm.user_action.cit_link_filters.LinkFilterUpdated
Создание фильтра связиsrm.user_action.cit_link_filters.LinkFilterCreated
Удаление фильтра связиsrm.user_action.cit_link_filters.LinkFilterDeleted
Создание плана обогащенияsrm.user_action.enrichment_plans.EnrichmentPlanCreated
Обновление плана обогащенияsrm.user_action.enrichment_plans.EnrichmentPlanUpdated
Удаление плана обогащенияsrm.user_action.enrichment_plans.EnrichmentPlanDeleted
Импорт планов обогащения из JSONsrm.user_action.exchange.EnrichmentPlansJsonImported
Импорт планов обогащения из файлаsrm.user_action.exchange.EnrichmentPlansFileImported
Экспорт планов обогащения в JSONsrm.user_action.exchange.EnrichmentPlansJsonExported
Экспорт планов обогащения в файлsrm.user_action.exchange.EnrichmentPlansFileExported
Экспорт CI в CSVsrm.user_action.exchange.CIsCsvExported
Экспорт CI в CSV файлsrm.user_action.exchange.CIsCsvFileExported
Экспорт графа CI в JSONsrm.user_action.exchange.CIsJsonGraphExported
Экспорт графа CI в JSON файлsrm.user_action.exchange.CIsJsonGraphFileExported
Импорт типов CI из JSONsrm.user_action.exchange.CITypesJsonImported
Импорт типов CI из файлаsrm.user_action.exchange.CITypesFileImported
Экспорт типов CI в JSONsrm.user_action.exchange.CITypesJsonExported
Экспорт типов CI в JSON файлsrm.user_action.exchange.CITypesFileExported
Экспорт атрибутов в JSONsrm.user_action.exchange.AttributesJsonExported
Экспорт атрибутов в JSON файлsrm.user_action.exchange.AttributesFileExported
Экспорт дашбордов в JSONsrm.user_action.exchange.DashboardsJsonExported
Экспорт дашбордов в JSON файлsrm.user_action.exchange.DashboardsFileExported
Импорт дашбордов из JSONsrm.user_action.exchange.DashboardsJsonImported
Создание дашбордаsrm.user_action.dashboard.DashboardCreated
Обновление дашбордаsrm.user_action.dashboard.DashboardUpdated
Удаление дашбордаsrm.user_action.dashboard.DashboardDeleted
Клонирование дашбордаsrm.user_action.dashboard.DashboardCloned
Импорт дашбордов из файлаsrm.user_action.dashboard.DashboardsFileImported
Изменение настройкиsrm.user_action.settings.SettingUpdated
Создание правила доступаsrm.user_action.access_rules_dashboard.DashboardRuleCreated
Обновление правила доступаsrm.user_action.access_rules_dashboard.DashboardRuleUpdated
Удаление правила доступаsrm.user_action.access_rules_dashboard.DashboardRuleDeleted
Удаление orphan-правилsrm.user_action.access_rules_dashboard.OrphanDashboardRulesDeleted
Удаление правила по имениsrm.user_action.access_rules_dashboard.DashboardRuleByNameDeleted
Изменение CIsrm.user_action.ci_public_v4.CIUpdated
Удаление CIsrm.user_action.ci_public_v4.CIDeleted
Изменение карты CIsrm.user_action.ci_public_v4.CIMapUpdated
Изменение цифрового отпечаткаsrm.user_action.ci_public_v4.CIFingerprintUpdated
Массовое удаление CIsrm.user_action.ci_public_v4.CIsBatchDeleted
Удаление отмеченных CIsrm.user_action.ci_public_v4.CIsMarkedDeleted
Запуск обогащения CIsrm.user_action.ci_action_v4.CIEnrichmentStarted
Массовый запуск обогащенияsrm.user_action.ci_action_v4.CIsEnrichmentStarted
Импорт CI из CSVsrm.user_action.ci_exchange_v4.CIsCsvImported
Импорт графа CI из JSONsrm.user_action.ci_exchange_v4.CIsJsonGraphImported
Удаление вкладкиsrm.user_action.dashboard_tabs.TabDeleted
Создание вкладкиsrm.user_action.dashboard_tabs.TabCreated
Создание вкладки из дашбордаsrm.user_action.dashboard_tabs.DashboardTabCreated
Изменение виджета вкладкиsrm.user_action.dashboard_tabs.TabWidgetUpdated
Создание виджета вкладкиsrm.user_action.dashboard_tabs.TabWidgetCreated
Изменение шаблона вкладкиsrm.user_action.dashboard_tabs.TabConfigUpdated
Частичное обновление шаблонаsrm.user_action.dashboard_tabs.TabConfigPatched
Сброс настроек вкладкиsrm.user_action.dashboard_tabs.TabSettingsReset
Сохранение настроек в дашбордsrm.user_action.dashboard_tabs.TabSettingsSaved
Восстановление из корзиныsrm.user_action.dashboard_tabs.TabRestored
Удаление виджета вкладкиsrm.user_action.dashboard_tabs.TabWidgetDeleted

События сервиса управления заданиями

НазваниеКлюч маршрутизации
Изменение настройкиtask_tool.user_action.settings.SettingUpdated
Отмена задачиtask_tool.user_action.tasks.TaskRevoked
Массовая отмена задачtask_tool.user_action.tasks.TasksBulkRevoked
Прерывание выполнения задачиtask_tool.user_action.tasks.TaskAborted
Очистка очередиtask_tool.user_action.queues.QueueCleared

События сервиса управления docker контейнерами

НазваниеКлюч маршрутизации
Загрузка файла в контейнерdocker_tool.user_action.containers.ContainerFileUploaded
Выполнение команды в контейнереdocker_tool.user_action.containers.ContainerCommandExecuted
Запуск контейнераdocker_tool.user_action.containers.ContainerStarted
Остановка контейнераdocker_tool.user_action.containers.ContainerStopped
Перезапуск контейнераdocker_tool.user_action.containers.ContainerRestarted
Изменение настройкиdocker_tool.user_action.settings.SettingUpdated
Изменение подключенияdocker_tool.user_action.docker_urls.DockerUrlUpdated
Удаление подключенияdocker_tool.user_action.docker_urls.DockerUrlDeleted
Создание подключенияdocker_tool.user_action.docker_urls.DockerUrlCreated

События сервиса уведомлений

НазваниеКлюч маршрутизации
Изменение настройкиnotification.user_action.settings.SettingUpdated
Сброс базы данныхnotification.user_action.maintenance.DatabaseReset
Изменение конфигурацииnotification.user_action.alertmanager.AlertmanagerConfigUpdated
Восстановление конфигурацииnotification.user_action.alertmanager.AlertmanagerConfigRestored
Обновление конфигурацииnotification.user_action.alertmanager.AlertmanagerConfigRefreshed
Изменение глобальной конфигурацииnotification.user_action.global_config.GlobalConfigUpdated
Изменение правил подавленияnotification.user_action.inhibit_rules.InhibitRulesUpdated
Изменение шаблонов конфигурацииnotification.user_action.template_config.TemplateConfigUpdated
Изменение получателяnotification.user_action.receiver.ReceiverUpdated
Удаление получателяnotification.user_action.receiver.ReceiverDeleted
Создание получателяnotification.user_action.receiver.ReceiverCreated
Изменение подпискиnotification.user_action.route.RouteUpdated
Удаление подпискиnotification.user_action.route.RouteDeleted
Создание подпискиnotification.user_action.route.RouteCreated
Изменение отправителяnotification.user_action.sender.SenderUpdated
Удаление отправителяnotification.user_action.sender.SenderDeleted
Создание отправителяnotification.user_action.sender.SenderCreated
Изменение интервалаnotification.user_action.time_interval.TimeIntervalUpdated
Удаление интервалаnotification.user_action.time_interval.TimeIntervalDeleted
Создание интервалаnotification.user_action.time_interval.TimeIntervalCreated
Изменение шаблона уведомленийnotification.user_action.template.NotificationTemplateUpdated

События сервиса мониторинга

НазваниеКлюч маршрутизации
Изменение типа индикатораmonitoring.user_action.hi_types.HITypeUpdated
Удаление типа индикатораmonitoring.user_action.hi_types.HITypeDeleted
Создание типа индикатораmonitoring.user_action.hi_types.HITypeCreated
Изменение метрикиmonitoring.user_action.tql_metrics.TQLMetricUpdated
Удаление метрикиmonitoring.user_action.tql_metrics.TQLMetricDeleted
Создание метрикиmonitoring.user_action.tql_metrics.TQLMetricCreated
Активация метрикmonitoring.user_action.tql_metrics.TQLMetricsEnabled
Отключение метрикmonitoring.user_action.tql_metrics.TQLMetricsDisabled
Импорт шаблонаmonitoring.user_action.mt_exchange.TemplateImported
Массовый импорт шаблоновmonitoring.user_action.mt_exchange.TemplatesBulkImported
Импорт шаблона из файлаmonitoring.user_action.mt_exchange.TemplateFileImported
Импорт экспортераmonitoring.user_action.mt_exchange.ExporterImported
Импорт экспортера из файлаmonitoring.user_action.mt_exchange.ExporterFileImported
Импорт типа HImonitoring.user_action.mt_exchange.HITypeImported
Импорт типа HImonitoring.user_action.mt_exchange.HITypeFileImported
Импорт заданияmonitoring.user_action.mt_exchange.JobImported
Импорт задания из файлаmonitoring.user_action.mt_exchange.JobFileImported
Импорт правилmonitoring.user_action.mt_exchange.RulesImported
Изменение шаблонаmonitoring.user_action.templates.TemplateUpdated
Удаление шаблонаmonitoring.user_action.templates.TemplateDeleted
Создание шаблонаmonitoring.user_action.templates.TemplateCreated
Обновление конфигурацииmonitoring.user_action.prometheus.PrometheusConfigUpdated
Перезагрузка Prometheusmonitoring.user_action.prometheus.PrometheusReloaded
Изменение экспортераmonitoring.user_action.exporters.ExporterUpdated
Удаление экспортераmonitoring.user_action.exporters.ExporterDeleted
Создание экспортераmonitoring.user_action.exporters.ExporterCreated
Изменение способа управленияmonitoring.user_action.exporters.ExporterManagementChanged
Применение конфигурацииmonitoring.user_action.exporters.ExporterApplied
Создание заданияmonitoring.user_action.jobs.JobCreated
Изменение заданияmonitoring.user_action.jobs.JobUpdated
Удаление заданияmonitoring.user_action.jobs.JobDeleted
Изменение настройкиmonitoring.user_action.settings.SettingUpdated
Сброс базы данныхmonitoring.user_action.maintenance.DatabaseReset
Обновление правилаmonitoring.user_action.access_rule_acl.AccessRuleUpdated
Удаление правилаmonitoring.user_action.access_rule_acl.AccessRuleDeleted
Создание правилаmonitoring.user_action.access_rule_acl.AccessRuleCreated
Удаление правила по имениmonitoring.user_action.access_rule_acl.AccessRuleByNameDeleted
Изменение связиmonitoring.user_action.tql_hi_links_v2.HILinkUpdated
Удаление связиmonitoring.user_action.tql_hi_links_v2.HILinkDeleted
Создание связиmonitoring.user_action.tql_hi_links_v2.HILinkCreated
Активация связейmonitoring.user_action.tql_hi_links_v2.HILinksEnabled
Изменение связиmonitoring.user_action.thl_alert_hint.AlertHintLinkUpdated
Удаление связиmonitoring.user_action.thl_alert_hint.AlertHintLinkDeleted
Создание связиmonitoring.user_action.thl_alert_hint.AlertHintLinkCreated

События сервиса лицензий

НазваниеКлюч маршрутизации
Загрузка новой лицензииlicense.user_action.license_management.LicenseUploaded
Генерация файла запроса лицензииlicense.user_action.license_management.LicenseRequestGenerated

Формирование лога аудита событий

Для формирования лога аудита событий используется утилита vector

Подключение утилиты vector

Для подключения утилиты vector в виде сервиса, необходимо в файл docker-compose.additional.yml добавить следующие строки:

  vector: 
image: timberio/vector:latest-alpine
networks: [pamir-net]
profiles: [all, additional]
restart: unless-stopped
env_file:
- .env
volumes:
- type: bind
source: ./data/vector
target: /etc/vector
command: ["--config", "/etc/vector/vector.toml"]

Настройка утилиты vector

Конфигурацию сервиса vector нужно записать в файл vector.toml. Путь к файлу vector.toml необходимо указать в файле docker-compose.additional.yml, в volumes. Для аудита событий аутентификации конфигурация vector должна быть следующей:

[sources.rabbitmq]
type = "amqp"
connection_string = "amqp://${RABBITMQ_USER}:${RABBITMQ_PASSWORD}@${RABBITMQ_HOST}:5672/${RABBITMQ_VHOST}"
queue = "vector"
consumer = "vector"

[transforms.parse_json]
type = "remap"
inputs = ["rabbitmq"]
source = '''
parsed, err = parse_json(.message)

. = {
"event": .routing,
"timestamp": parsed.timestamp,
"user_id": parsed.user_id,
"user_login": parsed.user_login,
"endpoint": parsed.endpoint,
"parameters": parsed.parameters,
"metadata": parsed.metadata,
"response_status_code": parsed.response_status_code,
}

'''

[sinks.file]
type = "file"
inputs = ["parse_json"]
path = "/etc/vector/log/audit-%Y-%m-%d.log"
encoding.codec = "json"

[sinks.console]
type = "console"
inputs = ["parse_json"]
encoding.codec = "json"

Значения переменным RABBITMQ_USER, RABBITMQ_PASSWORD, RABBITMQ_HOST и RABBITMQ_VHOST присваиваются в файле .env

Настройка RabbitMQ

В RabbitMQ необходимо создать очередь vector. В веб интерфейсе RabbitMQ сделать это можно следующим образом: на вкладке Queues выберите Add a new queue и задайте следующие параметры:

  • Type: Classic;
  • Name: vector;
  • Durability: Durable;
  • Auto delete: No.

Выберите Add queue, будет создана очередь vector.

После создания очереди необходимо настроить маршрутизацию сообщений. Для этого на вкладке Queues, выберите очередь vector, на открывшейся странице Queue vector выберите Bindings и задайте следующие параметры:

  • From exchange: pamir_audit_exchange;
  • Routing key: #.

Выберите Bind, маршрутизация настроена.

Routing key (Ключ маршрутизации) - это строка, которая поддерживает символы подстановки:

  • * - заменяет одно слово;
  • # - заменяет несколько слов или их отсутствие.

Возможные значения Routing key: auth.user_action.user.* или auth.#.

Принцип работы

RabbitMQ принимает сообщения Памир. Vector подключается к RabbitMQ, читает сообщения из очереди vector, разбирает их согласно transforms.parse_json и сохраняет их в файл ./data/vector/log/audit-%Y-%m-%d.log в формате JSON.