Настройка интеграции с Единым Аудитом#

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

Регистрируются действия в программном продукте, для совершения которых требуются привилегии администратора (например - создание почтового ящика, изменение настроек почтового ящика и пр.). Полный список событий аудита, отправляемых в Единый Аудит, заранее согласуется и фиксируется в метамодели программного продукта.

Интеграция программного продукта с Единым Аудитом происходит по REST.

О сервисе mail-audit-adapter#

Отправка и сохранение событий аудита#

За отправку событий аудита в программном продукте отвечает сервис mail-audit-adapter. Другие сервисы (например, mail-back) фиксируют у себя событие аудита и отправляют его сервису mail-audit-adapter. Сервис mail-audit-adapter принимает событие аудита и сохраняет его в отдельной схеме в базе данных, в таблицу mail_events. В сервисе mail-audit-adapter периодически срабатывает шедулер, по которому события аудита извлекаются из базы данных и отправляются в Единый Аудит. Событиям, успешно отправленным в Единый Аудит, в базе данных проставляется поле sent_at, равное времени отправки события. Если событие аудита ещё не было успешно отправлено до Единого Аудита, поле sent_at будет null.

Метамодель аудита#

Перед отправкой событий аудита в Единый Аудит необходимо зарегистрировать согласованную метамодель - для этого её необходимо отправить в Единый Аудит хотя бы один раз. До тех пор, пока метамодель не зарегистрирована в Едином Аудите, он не будет принимать отсылаемые события и будет выдавать ошибку. В сервисе mail-audit-adapter отправка метамодели происходит в двух сценариях:

  • Каждый раз при поднятии сервиса mail-audit-adapter. Если метамодель не удастся отправить в Единый Аудит при поднятии сервиса, сервис выведет ошибку в логах, но всё равно поднимется и будет работать;

  • При срабатывании шедулера на отправку метамодели. Шедулер необходим для случая, если метамодель не удалось отправить при поднятии сервиса.

Метамодель встроена в сервис mail-audit-adapter. Изменение метамодели требует её пересогласования, а также пересборки дистрибутива.

Очистка старых событий аудита из базы данных#

В сервисе предусмотрен шедулер для очистки старых событий аудита из БД. Можно настроить крон-выражение срабатывания шедулера, а также срок хранения событий аудита в БД. В таблице mail_events присутствует поле created_at, равное времени сохранения события аудита в БД. Определение, является ли событие аудита старым, происходит следующим образом: считается разница между текущим временем и временем, указанным в поле created_at - если разница больше срока хранения событий аудита в БД, то событие аудита подлежит удалению из БД. События аудита, которые ещё не были успешно отправлены в Единый Аудит, не удаляются из базы данных, даже если срок их хранения истёк.

Настройка стендозависимых параметров#

Для сервиса mail-audit-adapter требуется отдельная схема в базе данных. Перед установкой дистрибутива на кластер необходимо создать отдельную схему в БД и выдать нужные права на таблицы и последовательности в БД.

Для настройки интеграции с Единым Аудитом необходимо внести изменения в два конфигурационных файла: mail-audit-adapter.conf и mail-egress-gateway.istio.all.conf.

mail-audit-adapter.conf#

Ниже перечислены основные параметры, на которые стоит обратить внимание:

  • mail_audit_adapter.ose.configmap.data.application_config.audit.host - хост Единого Аудита;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.virtualIp - виртуальный IP для маршрутизации трафика до Единого Аудита;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.port.external - внешний порт Единого Аудита;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.urlPath - URL-путь до Единого Аудита. URL-путь определяется следующим образом: http://host:port{urlPath}. Например, если полный URL до Единого Аудита - https://audit-host:443/push/project/ms-audt/split-by-ott, то URL-путём будет являться /push/project/ms-audt/split-by-ott;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.eventSendSize - максимальное количество событий аудита, отправляемых в Единый Аудит при срабатывании шедулера на отправку событий аудита;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.eventRetentionTime - срок хранения событий аудита в БД, в днях. Все события аудита, у которых истёк срок хранения и которые были успешно отправлены в Единый Аудит, удаляются из БД по шедулеру. Если задать значение, равное 0, то события никогда не будут очищаться из БД;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.send-audit-events.cron - крон-выражение, по которому запускается шедулер на отправку событий аудита из БД в Единый Аудит. При изменении этого параметра, скорее всего, потребуется соответствующее изменение параметров:

    • mail_audit_adapter.ose.configmap.data.application_config.audit.send-audit-events.lock.at-least

    • mail_audit_adapter.ose.configmap.data.application_config.audit.send-audit-events.lock.at-most

    Эти параметры отвечают за настройку Shedlock-блокировки по БД в целях недопущения выполнения шедулера на отправку событий аудита более, чем одного раза в распределённой системе (например, когда на кластере развёрнуто несколько подов mail-audit-adapter, или когда дистрибутив развёрнут на нескольких кластерах). Если задать эти параметры некорректно, шедулер может срабатывать более одного раза за промежуток времени, что приведёт к отправке дубликатов событий аудита в Единый Аудит.

  • mail_audit_adapter.ose.configmap.data.application_config.audit.send-audit-events.lock.at-least - минимальная продолжительность Shedlock-блокировки для шедулера на отправку событий аудита, в формате ISO-8601 Duration;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.send-audit-events.lock.at-most - максимальная продолжительность Shedlock-блокировки для шедулера на отправку событий аудита, в формате ISO-8601 Duration;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.clear-old-audit-events.cron - крон-выражение, по которому запускается шедулер на очистку старых событий аудита из БД;

  • mail_audit_adapter.ose.configmap.data.application_config.audit.send-audit-metamodel.cron - крон-выражение, по которому запускается шедулер на отправку метамодели в Единый Аудит.

mail-egress-gateway.istio.all.conf#

В этом файле указываются параметры для настройки Istio-правил для маршрутизации трафика до хоста Единого Аудита:

  • mail_egress_gateway.ose.istio.egress.audit.host - хост Единого Аудита;

  • mail_egress_gateway.ose.istio.egress.audit.port.egress - порт Egress для Единого Аудита;

  • mail_egress_gateway.ose.istio.egress.audit.port.external - внешний порт Единого Аудита;

  • mail_egress_gateway.ose.istio.egress.audit.virtualIp - виртуальный IP для маршрутизации трафика до Единого Аудита;

  • mail_egress_gateway.ose.istio.egress.audit.pki.engine - PKI-движок для получения сертификатов, использующихся для подключения к серверу Единого Аудита. Если не задать этот параметр, то сертификаты будут браться из SecMan-хранилища из секрета, указанного в параметре mail_egress_gateway.vault.secret.path.egress. Сертификаты в таком случае будут браться по следующим ключам:

    • ca-bundle - цепочка доверенных сертификатов;

    • audit.key - приватный ключ сертификата для подключения к серверу Единого Аудита;

    • audit.pem - сертификат для подключения к серверу Единого Аудита

  • mail_egress_gateway.ose.istio.egress.audit.certCommonName - CN сертификата, использующегося для подключения к серверу Единого Аудита;

  • mail_egress_gateway.ose.istio.egress.audit.getChainFromKv.enabled - флаг получения цепочки доверенных сертификатов из хранилища KV. Если false, то для генерации цепочки используется PKI-движок из параметра mail_egress_gateway.ose.istio.egress.audit.pki.engine.

Интеграция с OTT#

Интеграция с Единым Аудитом по REST может осуществляться как с использованием OTT (One-Time Token), так и без.

Если к интеграции с Единым Аудитом предъявляются требования по использованию OTT, то необходимо дополнительно настроить интеграцию с OTT. Если же интеграция с OTT не нужна, то необходимо явно отключить поддержку OTT (см. раздел Настройка интеграции с OTT).