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

Сервис аудита

Сервис аудита обрабатывает и сохраняет обработанные события аудита на Платформе Multi-D.
Каждая запись события аудита содержит следующую информацию:

  • тип события;
  • время наступления события.

Сервис предоставляет:

  • Клиент С#: для записи событий аудита;
  • Клиент С#: для работы с справочниками журналов и событий.

Работу сервиса аудита обеспечивают следующие компоненты:

  • RabbitMQ: реализует управление очередью;
  • БД PostgresSQL: реализует хранения сообщений и событий в реляционном хранилище.

Сервис аудита обрабатывает события следующим образом:

  1. события аудита записываются в очередь с названием audit в RabbitMQ для гарантированной обработки события аудита.
  2. RabbitMQ оповещает сервис о новых сообщениях.
  3. Сервис извлекает сообщения по мере их поступления, обрабатывает сообщение, помечает сообщение как обработанное для RabbitMQ и помещает в БД PostgresSQL.

Работа с сервисом возможна с использованием API сервиса или через клиентскую библиотеку ASE.MD.Platform.Infrastructure.AuditService.Client на языке C#.

Сервисы, разработанные на других языках программирования, должны обеспечивать запись событий в очередь RabbitMQ самостоятельно. Формат записи описан ниже.

Формат записи события аудита в очередь RabbitMQ

Событие аудита записывается строкой в формате UTF8 в RabbitMQ .

Пример запроса в RabbitMQ
"{
"Version\":\"1\", //Версия протокола, всегда задается 1
"Journal\":\"system\",
"EventType\":\"eventtype\",
"ObjectType\":\"objecttype\",
"Result\":true,
"CriticalLevel\":\"Verbose\",
"EventDateTime\":\"2021-03-11T12:57:19.8007782+03:00\",
"Source\":\"source\",
"EventData\":\"evenfdata\",


"Ip\":\"ip\",
"Login\":\"login\",
"ContentLocalizationKey\":\"localization\",
"ObjectId\":\"objectid\",
"Description\":\"description\"
}"

Модель данных сервиса аудита

Модель данных сервиса аудита состоит из следующих структур данных:

  • Событие: действие, произошедшее в Платформе Multi-D, например, авторизация пользователя, удаление словаря локализации.
  • Журнал: сущность для централизованного хранения событий Платформы Multi-D. Список журналов динамический, пользователь может добавлять новые журналы, например, system, security, files;
  • Тип события: сущность для классификации событий на Платформе Multi-D. Список типов событий динамический, пользователь может добавлять новые типы событий, например, аутентификация, выход, изменение пароля, редактирование конфигурации.

Событие

Формат модели данных события описывается в следующей таблице.

ПараметрОписаниеТип поляПримеры
значений
Обязательность
JournalЖурнал, в котором
произошло
событие.
Должна быть возможность
добавлять журналы
через API сервиса.
ссылка на справочникБазовые
предуста-
новленные
журналы:
System,
Application,
Security
да
EventTypeтип событияссылка на справочникЕсли переданный
тип события
отсутствует в
справочнике,
то проставляется тип
Unclassified.
да
ObjectTypeтип объекта, с которым
произошло
событие
String (255)User, dictionary, culture,
translation,
namespace
Subject,
object, right,
access, node,
config
нет
ObjectIdID объекта,
с которым
произошло
событие
String (63)нет
ResultРезультат
события
BooleanУспешно = trueда
LevelУровень
критичности
IntОт 1 до 5
Severity Levels:
Critical (1),
Error (2),
Warning (3),
Informational (4),
Verbose (5)
по умолчанию - 4
да
DateTimeдата и время
события в
формате
UTC
dd.mm.yyyy hh:mm:ssда
Sourceназвание сервиса
или модуля системы,
зарегистри-
ровавшего событие
string(63)Пример: identity,
localization, security, discovery
нет
Event
Description
краткое описание событияString(512)Попытка входа, неизвестный пользователь, блокировка пользователя
и т.д.
нет
EventDataразличные аналитические
данные которые система-источник передает вместе с событием
string(255){"Component Name":
"Группа индикаторов", "Project":
"Проект",
"Version": "1.0.0"}
нет
IpAddressIP-адрес компьютера пользователя или сервиса, с которой
инициировано
событие
String (45)нет
Userлогин пользователя или сервиса, который инициировал событиеString (63)UserId из
токена пользователя
да
Localization
Key
ключ к записям содержания
в сервисе локализации.
Содержание
события может быть
локализовано на все
языки используемые в
системе-источнике события.
В строку содержания можно
включать плейсхолдеры.
Набор аргументов содержания получаем из "EventData"
String (127)Тут будет
записан ключ
локализации, например, EventGroupCreated.
Значение: "Создана
группа индикаторов: { Component Name} Проект: {Project}"
нет

Журнал

Формат модели данных журнала описывается в следующей таблице.

ПараметрОписаниеТип поляОбязательность
IDуникальный идентификатор журналаintда
Nameназвание журналаstringда
Descriptionописание журналаstringнет
Settingsнастройки журналаJournalSettingsда

В параметре Settings хранятся параметры:

  • EventsLivingDays (срок удаления записей): обязательное поле.
  • MaxRecordsCount (максимальное количество записей): обязательное поле.

Тип события

Формат модели данных типа события описывается в следующей таблице.

ПараметрОписаниеТип поляОбязательность
IDуникальный идентификатор типа событияintда
JournalNameназвание журналаstring. ссылка на справочникда
JournalIdуникальный идентификатор журналаintда
Nameназвание типа событияstringда
Descriptionописание типа событияstringнет
к сведению

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