Версия 77.1 (PATCH)

Мы выпустили обновление к 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 коллектора, в частности фильтры

Также в качестве событий ИБ выгружаются все авторизованные вызовы 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 — теперь настройки доступности шаблонов для типов дел сохраняются при повторном подключении интеграции.