Интеграция с SIEM

Обновлено 03.07.2026
Экспорт журналов аудита Proto Observability Platform (действия с правами доступа и события входа) и системных журналов в syslog/SIEM. Включается двумя переменными окружения.

Proto Observability Platform умеет отдавать журналы аудита во внешнюю систему мониторинга безопасности (SIEM) по протоколу syslog — для централизованного хранения событий безопасности, корреляции с другими источниками и выполнения требований по аудиту и комплаенсу.

Экспорт по умолчанию выключен и включается двумя переменными — без пересборки образов.

На этой странице:


Что можно экспортировать

ИсточникКомпонентЧто содержит
Аудит действий (RBAC)proto-api-managerДействия субъектов над объектами доступа: allow/deny по проверкам прав на API
События входаproto-authВход/выход и неуспешные попытки входа: LOGIN, LOGOUT, LOGIN_ERROR
Системные журналыСУБД, ОССистемные логи в исходном виде

Быстрое включение

Задайте две переменные в .env рядом с compose-файлом платформы — экспорт журналов аудита включится по всему стеку: RBAC-действия (proto-api-manager) и события входа (proto-auth) начнут уходить в вашу SIEM по syslog.

# .env
POBP_SIEM_ENABLED=true
POBP_SIEM_ENDPOINT=siem-collector:514   # syslog-приёмник вашей SIEM, host:port
docker compose -f docker-compose-<версия>.yaml up -d proto-api-manager proto-auth

По умолчанию (POBP_SIEM_ENABLED не задан или false) экспорт выключен. Записи уходят по syslog напрямую на указанный адрес, протокол — tcp. Отдельные адреса/протокол/теги — в разделе Расширенная настройка. Отправку системных журналов СУБД/ОС — в разделе Системные журналы.

Проверка: включите приёмник на указанном адресе и выполните вход и любое действие с проверкой прав — в потоке приёмника появятся записи с тегами proto-auth (события входа) и proto-api-manager (RBAC-действия). Каждая RBAC-запись содержит время, пользователя, действие, тип и ключ объекта доступа, результат (allow/deny) и IP-адрес.

Схема подключения

ProtoOBP ──(syslog TCP/UDP)──▶  SIEM заказчика

Компоненты платформы отправляют записи по syslog напрямую на адрес из POBP_SIEM_ENDPOINT. Как правило, отдельный шиппер не нужен. Если он всё же требуется (преобразование формата, TLS, сбор системных логов из файлов) — используйте входящий в состав системы proto-otel-collector (см. Системные журналы).

Системные журналы (СУБД и ОС)

Системные журналы СУБД (ClickHouse, PostgreSQL) и ОС уже пишутся в стандартный вывод контейнеров и сохраняются драйвером json-file (по умолчанию, с ротацией). Эти локальные файлы всегда остаются для отладки — драйвер логирования менять не нужно, docker logs продолжает работать.

Чтобы дополнительно отправлять их в SIEM, не трогая локальные файлы, используйте сборщик, который читает docker-логи и форвардит копию. Отдельный Vector/Fluent Bit не обязателен: в состав системы входит proto-otel-collector (на базе OpenTelemetry Collector) с приёмниками file_log и syslog. В его образе уже есть готовый оверлей /etc/otel-collector-siem.yaml с logs-конвейером, по умолчанию не активный (адрес приёмника — из переменных окружения):

# /etc/otel-collector-siem.yaml (уже в образе, для справки)
receivers:
  file_log/containers:            # docker-логи контейнеров; файлы json-file сохраняются
    include: [ /var/lib/docker/containers/*/*-json.log ]
exporters:
  syslog/siem:                    # экспортер под протокол приёма вашей SIEM
    endpoint: ${env:POBP_SIEM_HOST}
    port: ${env:POBP_SIEM_PORT}
    network: tcp
    protocol: rfc5424
service:
  pipelines:
    logs/siem:
      receivers: [file_log/containers]
      processors: [memory_limiter, batch]
      exporters: [syslog/siem]

Включение (у сервиса proto-otel-collector в основном compose-файле): подключить оверлей вторым --config, задать адрес и смонтировать каталог docker-логов только на чтение. Экспортёр otel требует хост и порт раздельно — задайте POBP_SIEM_HOST и POBP_SIEM_PORT:

services:
  proto-otel-collector:
    command:
      - "--config=/etc/otel-collector-config.yaml"
      - "--config=/etc/otel-collector-siem.yaml"
    user: "0:0"                          # читает docker-логи как их владелец (root)
    cap_drop: ["ALL"]                    # uid 0 без capabilities — только чтение
    security_opt: ["no-new-privileges:true"]
    environment:
      POBP_SIEM_HOST: "siem-collector"
      POBP_SIEM_PORT: "514"
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers:ro

Эти строки уже присутствуют закомментированными у сервиса proto-otel-collector — их достаточно раскомментировать. Без второго --config оверлей не загружается. file_log читает логи всех контейнеров — при необходимости сузьте include/exclude (например, исключите лог самого коллектора).

Про права. Docker пишет логи в /var/lib/docker/containers от имени root (каталоги 0710, файлы 0640). Членство в группе docker не помогает — оно даёт доступ к docker-сокету, а не к этим файлам; группы root тоже недостаточно (у каталогов 0710 группе доступен только вход, но не листинг, а file_log перечисляет файлы по маске). Поэтому коллектор читает их как владелец под user: "0:0", а cap_drop: ["ALL"] оставляет только чтение — прав root при этом не остаётся (проверено).

Если запуск под uid 0 недопустим — не читайте /var/lib/docker, а измените способ сбора: направьте логи нужных сервисов docker-драйвером syslog (демон сам отправляет записи — без файлового доступа и без root, но это заменяет json-file, локальные файлы не сохранятся); либо настройте СУБД писать логи в отдельный том, доступный коллектору под его обычным uid, и укажите этот том в file_log.

Полный пример одним файлом

Если удобнее один override-файл вместо правки .env — сохраните рядом с основным compose-файлом платформы docker-compose.siem.yaml и примените его:

docker compose -f docker-compose-<версия>.yaml -f docker-compose.siem.yaml up -d
# docker-compose.siem.yaml — включение экспорта журналов в SIEM
services:
  # Аудит действий (RBAC)
  proto-api-manager:
    environment:
      POBP_SIEM_ENABLED: "true"
      POBP_SIEM_ENDPOINT: "siem-collector:514"   # syslog-приёмник SIEM, host:port

  # События входа
  proto-auth:
    environment:
      POBP_SIEM_ENABLED: "true"
      POBP_SIEM_ENDPOINT: "siem-collector:514"

  # Системные журналы СУБД/ОС — ОПЦИОНАЛЬНО (удалите блок, если не нужно).
  # Требует чтения docker-логов: user "0:0" + том (см. «Системные журналы»).
  proto-otel-collector:
    command:
      - "--config=/etc/otel-collector-config.yaml"
      - "--config=/etc/otel-collector-siem.yaml"
    user: "0:0"
    cap_drop: ["ALL"]
    security_opt: ["no-new-privileges:true"]
    environment:
      POBP_SIEM_HOST: "siem-collector"
      POBP_SIEM_PORT: "514"
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers:ro

Первые два блока эквивалентны двум переменным из Быстрого включения — выбирайте, что удобнее. Третий блок (системные журналы) можно опустить; о правах доступа для него — в разделе Системные журналы.

Расширенная настройка

Двух переменных из Быстрого включения достаточно для большинства случаев. Для тонкой настройки у каждого источника есть отдельные переменные — они переопределяют общие.

proto-api-manager (RBAC-аудит)

ПеременнаяНазначениеDefault
POBP_RBAC_AUDIT_SYSLOG_ENABLEDВключить экспорт (достаточно любого из флагов)false
POBP_RBAC_AUDIT_SYSLOG_ENDPOINTАдрес host:port (переопределяет POBP_SIEM_ENDPOINT)из POBP_SIEM_ENDPOINT
POBP_RBAC_AUDIT_SYSLOG_PROTOCOLПротокол: tcp или udptcp
POBP_RBAC_AUDIT_SYSLOG_APP_NAMEИмя приложения (тег) в syslog-записиproto-api-manager

В Helm-чарте задаются через apiManager.env.

proto-auth (события входа)

Управляется теми же двумя переменными POBP_SIEM_ENABLED / POBP_SIEM_ENDPOINT. Отдельной настройки не требуется: события отправляются по tcp с тегом proto-auth.

Диагностика типовых проблем

СимптомПричина и решение
В приёмнике нет записей аудитаПроверьте POBP_SIEM_ENABLED=true и POBP_SIEM_ENDPOINT; убедитесь, что приёмник доступен по адресу и протоколу. Для RBAC — что RBAC включён (POBP_RBAC_ENABLED=true).
Нет только событий входаВ логе proto-auth при старте должно быть SIEM syslog export enabled. Проверьте, что переменные заданы и переданы сервису proto-auth.
Нет только RBAC-действийproto-api-manager читает переменные из ./.env (env_file). Проверьте, что они там заданы.
Нет системных журналов СУБДПроверьте file_log-приёмник и logs-конвейер proto-otel-collector: смонтирован ли /var/lib/docker/containers, задан ли user: "0:0", POBP_SIEM_HOST/POBP_SIEM_PORT.
Записи не доходят до SIEMПроверьте адрес/порт/протокол приёмника SIEM и сетевую доступность.