Мы выпустили обновление к 77 версии Case.one, где доработали возможности выгрузки событий безопасности и публикации интеграционных событий.
OpenTelemetry
Теперь доступно выгружать события ИБ (информационной безопасности) не только в syslog, но и в OpenTelemetry Collector для дальнейшей обработки:
- Включите интеграцию с OpenTelemetry.
- Активируйте новый параметр конфигурации EnableCyberSecurityEventsSender в файле настроек конфигурации appsettings.json в секции Custom:
"Custom": {
"EnableCyberSecurityEventsSender": "true"
}
- Выгружаемые события и атрибуты:
- Для передачи событий ИБ используется семантика событий, предусмотренная спецификацией OpenTelemetry:
- Timestamp — дата и время возникновения события
- TraceId — идентификатор трейса
- SpanId — идентификатор шага трейса
- SeverityText — уровень важности события (Trace, Information, Warning, Error и т.д.)
- Body — тело события, которое содержит:
- EventName — имя события (определяет тип события ИБ и его набор атрибутов)
- Текстовое описание события ИБ
- EventName — имя события (определяет тип события ИБ и его набор атрибутов)
- Attributes — дополнительные атрибуты события ИБ (в т.ч. дополнительные параметры журналирования):
- operationResult — результат операции (failure/success)
- userId — идентификатор пользователя, связанного с событием
- externalUserId — внешний идентификатор пользователя
- userEmail — email пользователя, связанного с событием
- userFullName — ФИО пользователя
- ipAddress — IP-адрес пользователя, связанного с событием
- protocol — протокол доступа, используемый для обращения к системе
- Для фильтрации событий ИБ по типу (EventName) или по другим свойствам и атрибутам (Attributes) можно использовать обработчики на уровне OpenTelemetry коллектора, в частности фильтры
- Для передачи событий ИБ используется семантика событий, предусмотренная спецификацией OpenTelemetry:
Также в качестве событий ИБ выгружаются все авторизованные вызовы API приложения (событие с типом api_invoked_by_user), тело события в этом случае содержит информацию о вызываемом методе API и объекте, связанном с данным вызовом.
Публикация интеграционных событий
Для настройки публикации интеграционных событий в файле конфигурации appsettings.json добавили новую секцию PublicEvents:
- В параметре IsEnabled можно включить или выключить настройку (отключена по умолчанию):
{
"PublicEvents": {
"IsEnabled": "false" // Enable publishing public events to RabbitMq. Disabled by default.
}
}
- Сообщения публикуются:
- В основном Exchange приложения, имя которого формируется по шаблону: main.{instance_name}, где instance_name — первое доменное имя сайта
- С Routing Key, который формируется по шаблону: public.events.{entity_type}.{notification_type}, где:
- entity_type — тип сущности (project, document и т.д.)
- notification_type — тип события (created, updated, deleted)
- Формат интеграционных сообщений:
{
"Context": {
"UserId": "6ac0d9c0-cf98-45fe-b9d3-90e2c0a5bc88", // Идентификатор пользователя, действия которого спровоцировали событие
"RaisedOn": "2025-03-17T06:56:37.9569433Z" // Дата и время события
},
"Event": {
// Список изменений сущности
"Changes": [
{
// Предыдущее значение поля
"OldValue": {
"Value": "Before value"
},
// Новое значение поле
"NewValue": {
"Value": "After"
},
// Информация об измененном поле
"Field": {
"Id": "58b8ab03-2bdc-e411-9674-902b343a9588", // идентификатор поля
"Tag": "Project_Name", // Тэг поля или системное имя поля
"Type": 0 // Тип поля: 0 - системное, 1 - кастомное
},
// Информация об линии поля. Для системных полей null
"Line": null,
// Информация об блоке поля. Для системных полей null
"Block": null
},
{
// Предыдущее значение поля
"OldValue": {
"Value": "Before text field"
},
// Новое значение поля
"NewValue": {
"Value": "After text field"
},
// Информация об измененном поле
"Field": {
"Id": "23c19b3e-e1c0-42cd-0f44-08dd6511e8e4", // идентификатор поля
"Tag": "tag_text_field", // Тэг поля или системное имя поля
"Type": 1 // Тип поля: 0 - системное, 1 - кастомное
},
// Информация об линии поля.
"Line": {
"Id": "6952f11b-0a0e-17d3-9d1e-b2a30058a110", // Идентификатор линии
"OldOrder": 0, // Предыдущий порядковый номер линии. Может быть отличен от 0 для мультилиний
"NewOrder": 0, // Новый порядковый номер линии. Может быть отличен от 0 для мультилиний
"LineId": "3016c4cb-409f-424a-0f43-08dd6511e8e4" // Идентификатор линии в типе сущности
},
// Информация об блоке поля. Для системных полей null
"Block": {
"Id": "a1c2d96a-5059-9dc9-8c49-b2a30058a110", // Идентификатор блока
"OldOrder": 0, // Предыдущий порядковый номер блока. Может быть отличен от 0 для мультиблоков
"NewOrder": 0, // Новый порядковый номер блока. Может быть отличен от 0 для мультиблоков
"BlockId": "50ffb9d7-7ada-437e-0f41-08dd6511e8e4" // Идентификатор блока в типе сущности
}
}
],
"EntityId": "3a64d036-0046-99eb-12bf-b2a300589f77", // Идентификатор сушности
"EntityType": "Project", тип сущности, может принимать значения: Project, Task, Document
"Operation": "Update" // операция над сущностью: Create, Update, Delete
}
}
Улучшения и исправления
- Исправили ошибку синхронизации карточек дел с Casebook при переходе на API Casebook версии 3.0, которые ранее были синхронизированы с КАД.
- Исключили дублирование вкладок Настройки и Мой арбитр карточек объектов в БД при переносе типа объекта с помощью модулей — теперь при повторном использовании типа дела в новом модуле дубли вкладок не создаются в БД.
- Восстановили данные в шаблонах документов в Case.one после повторного подключения интеграции с Doc.one — теперь настройки доступности шаблонов для типов дел сохраняются при повторном подключении интеграции.