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

Рецепт: отправка находок и журнала в вашу SIEM

Цель: ваша SIEM получает находки control plane и его журнал аудита с обнаружением подделки (audit ledger) в режиме push — без форвардера, тянущего хвост из файлов.

Это путь push S2S (service-to-service) на платформе событий (eventing platform). Постуры pull-экспорта и file-tail остаются полностью поддерживаемыми — pull по-прежнему подходящая форма для WORM-архивации и офлайн-переверификации; push — подходящая форма для живого приёма в SIEM.

Окно терминала
curl -ks -X POST "$BASE/v1/m/eventing/subscriptions" \
-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" \
-H 'Content-Type: application/json' \
-d '{
"name": "splunk-prod",
"event_types": ["finding.reported", "audit.recorded"],
"endpoint": "https://splunk.internal:8088/services/collector",
"sink_kind": "splunk_hec",
"sink_format": "ocsf",
"sink_cred": "<hec-token>"
}'
  • sink_kind выбирает диалект платформы: splunk_hec, sentinel_dcr, datadog, newrelic — либо опустите его полностью для обобщённого веб-хука (конечная точка HTTPS, принимающая событие в JSON, аутентифицируемая HMAC-подписью движка; ротация через …/{id}/rotate-secret).

  • sink_format: ocsf (значение по умолчанию для SIEM-приёмников — схема, учитывающая специфику ИИ), cef, leef, syslog, otlp, otlp_envelope или json.

  • sink_cred (токен HEC / bearer DCR / ключ API) принимается один раз, опечатывается в покое, никогда не возвращается и не логируется. Вендорные виды требуют его при создании; обобщённому веб-хуку он не нужен.

  • event_types — это выбор потока: finding.reported для рельса находок, audit.recorded для журнала (ниже), либо оба.

Проверьте доставку, прежде чем доверять ей:

Окно терминала
curl -ks -X POST "$BASE/v1/m/eventing/subscriptions/$ID/test" \
-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT"

Подписка на audit.recorded включает насос журнала (ledger pump): форвардер обходит опечатанный журнал аудита каждого арендатора от его покурсорного положения и ставит каждую запись в очередь надёжного движка доставки — не менее одного раза, по порядку, с возможностью возобновления. Каждая запись несёт свои поля целостности цепочки дословно, поэтому копия в SIEM позволяет ровно то же, что и pull-экспорт, и не более: СВЯЗЬ цепочки (prev_hash записи n+1 равен hash записи n) и подпись контрольной точки над hash проверяются офлайн. ПЕРЕВЫЧИСЛИТЬ hash записи теперь можно из ОДНОЙ экспортированной строки — все входы хеша цепочки передаются в записи, включая канонический текст occurred_at и обязательство (commitment) метаданных. Точная побайтовая реконструкция сегодня доказана для syslog и трёх вариантов OTLP при алфавитах значений, которые выдаёт этот журнал (UUID, акторы kind:id, глаголы с точками, временная метка фиксированного формата и шестнадцатеричные дайджесты): syslog заменяет CR и LF пробелом, а OTLP заменяет некорректный UTF-8, поэтому ни одна гарантия не безусловна. ocsf (формат приёмника по умолчанию), cef и leef несут те же поля, но пока не позволяют побайтовую реконструкцию, поскольку их экранирование и отображение полей теряют информацию в свободном тексте; если вы намерены перевычислять хеш, выберите один из доказанных форматов. Это обязательство ослеплено для каждой записи: оно достраивает прообраз, ничего не раскрывая о самих метаданных. Три утверждения остаются разными — перевычисление хеша не есть проверка ПОДЛИННОСТИ (для неё нужен внешне доверенный ключ) и не есть проверка ПОЛНОТЫ (для неё нужны соседние записи и контрольная точка). Аудиторский архив остаётся более сильным артефактом: он несёт сами метаданные вместе с их ослепляющим значением, поэтому отвечает и на вопрос, КАКИЕ метаданные покрывает обязательство.

Три свойства, которые стоит знать:

  • Нет подписки — нет работы. Без подписчика на audit.recorded насос ничего не пишет — этот путь не стоит ничего, пока вы его не запросите.
  • «Не менее одного раза» означает возможность дубликатов при повторной доставке; дедуплицируйте по порядковому номеру записи в пределах арендатора.
  • Насос управляется лидером (leader-gated) в HA — пересылает ровно один узел.

Тот же механизм подписки управляет назначениями ITSM через рельс уведомлений — инциденты ServiceNow и задачи Jira из находок, где серьёзность отображается на приоритет. Настраивайте их как назначения уведомлений (выходные коннекторы servicenow / jira), а не как SIEM-приёмники; таблица назначений на странице Splunk показывает этот шаблон.

  1. …/test возвращает «доставлено».
  2. Спровоцируйте что-то наблюдаемое (порог оповещения о бюджете, запрещённый инструмент) и проследите за прибытием находки.
  3. Для журнала: сравните максимальную отметку seq на стороне SIEM с GET /v1/audit/export?from=<seq> — потоки должны совпадать.
  • Конечные точки должны быть HTTPS; движок отказывает приёмникам с открытым текстом.
  • У снимков постуры (сводки по compliance/NHI/находкам) есть собственный модуль экспорта, едущий по тем же рельсам — см. модуль compliance.
  • Полная таблица решений — когда тянуть (pull), когда читать хвост (tail), когда отправлять (push) — на странице форвардинга в Splunk.