Выгрузка в SIEM (CEF)¶
Служба безопасности заказчика собирает события всех своих систем в одну SIEM и разбирает их там, а не в панели каждой системы по отдельности. Agora отдаёт журнал аудита в формате CEF (Common Event Format) — текстовом, по строке на событие, с полями через разделители. Этот формат без доработок принимают ArcSight, KUMA, MaxPatrol SIEM и другие корпоративные приёмники.
Выгрузка отдаёт выбранное окно журнала целиком, одним файлом, от старых записей к новым. Забрать её можно двумя путями:
- кнопкой Выгрузить в CEF в разделе Журнал аудита — файл сохраняется в браузере;
- запросом к API — так журнал забирает сборщик SIEM по расписанию.
Выгрузка — это то же чтение журнала, что и лента в панели: те же права, та же лицензионная опция, те же записи. Файлов на машине и исходящих подключений к приёмнику Agora для неё не заводит.
Выгрузка из панели¶
Кнопка Выгрузить в CEF стоит над лентой, рядом с кнопкой Применить. Она выгружает ровно то, что показывает лента:
- Тип ресурса, Имя ресурса и Актор сужают выгрузку так же, как ленту;
- С и По задают окно времени;
- пустые поля означают «не фильтровать» — выгружается весь журнал за срок хранения.
В выгрузку попадают применённые фильтры. Если после нажатия Применить поле поправили, но ленту не перечитали, выгрузка возьмёт прежнее значение: файл всегда совпадает с тем, что видно на экране.
Файл называется audit-log.cef. В нём все записи окна, а не только страницы, которые успели загрузиться в ленту.
Кнопка видна тем же ролям, что и сам журнал, — security и superadmin. Когда журнал не входит в лицензию, кнопка неактивна.
Файл собирается в памяти вкладки браузера. Для окна в несколько дней этого достаточно; журнал за долгий срок хранения удобнее забирать по API.
Выгрузка по API¶
GET /central/api-v4/audit-log/export?format=cef&from=2026-09-27T00:00:00Z&to=2026-09-27T12:00:00Z
Авторизация — та же операторская, что у остального управляющего API, и роли те же: security и superadmin.
Параметры:
format— обязателен, сейчас единственное значениеcef;from,to— границы окна в формате RFC 3339, обе включаются в окно;resource_type,resource_name,actor,actor_type— те же фильтры, что в панели;actor_typeпринимаетadmin,staticиnode.
Ответ — текст (text/plain), вложением с именем audit-log.cef. Он идёт потоком: первые строки приходят сразу, а сервер держит в памяти одну страницу журнала, поэтому размер окна ничем не ограничен.
Отказы:
- 400 — граница окна не в формате RFC 3339 либо формат не указан или неизвестен. Негодный запрос никогда не превращается в выгрузку всего журнала;
- 403 — у роли нет доступа к журналу;
- 404 — журнал аудита не входит в лицензию.
Если выгрузка оборвалась посреди передачи — например, на стороне машины отказала база данных, — ответ завершается незавершённой передачей: curl сообщает об оборванном соединении, браузер помечает загрузку как неудавшуюся. Файл, который пришёл целиком, содержит всё окно.
Без to окно открыто вперёд: записи, сделанные, пока выгрузка идёт, в неё тоже попадают. Нужна неподвижная граница — задайте to.
Строка CEF¶
Каждое событие — одна строка:
CEF:0|Flussonic|agora|26.09|stream_config.patch|stream_config.patch|3|rt=1790590530250 externalId=0f6b8a1e-6a3c-5d7e-9b1a-2c3d4e5f6a7b dvchost=11111111-2222-3333-4444-555555555555 suid=admin suser=ivanov outcome=success src=10.20.1.11 cs1=stream cs1Label=resourceType cs2=conference-a cs2Label=resourceName cs3=9c1f07e2 cs3Label=sessionId cs4=4bf92f3577b34da6a3ce929d0e0e4736 cs4Label=traceId cs5={"fields":["labels"],"role":"admin","src_ip":"10.20.1.11","version":7} cs5Label=details cn1=3672 cn1Label=auditId cn2=1 cn2Label=schemaVersion
Шапка до седьмой вертикальной черты:
- Device Vendor —
Flussonic; - Device Product —
agora: по нему SIEM выбирает правила разбора; - Device Version — версия установленной Agora;
- Device Event Class ID и Name — действие, то же машинное имя, что в колонке Действие ленты:
stream_config.patch,admin.create,auth.login_failed; - Severity — важность события, о ней ниже.
Дальше идут поля в виде ключ=значение:
| Поле CEF | Что в нём |
|---|---|
rt |
время события, миллисекунды от начала эпохи |
externalId |
глобальный идентификатор события — по нему SIEM отбрасывает дубли |
dvchost |
идентификатор установки Agora: события двух установок в одной SIEM не смешиваются |
suid |
вид актора: admin, static (статический ключ) или node (регистрация машины кластера) |
suser |
логин администратора; у статического ключа его нет |
outcome |
success у состоявшегося действия, failure у неудачного входа |
src |
адрес, с которого пришёл запрос |
cs1, cs2 |
тип и имя ресурса (cs1Label=resourceType, cs2Label=resourceName) |
cs3 |
идентификатор сессии администратора (cs3Label=sessionId): им связываются вход и всё, что сделано в этой сессии |
cs4 |
идентификатор трассировки запроса (cs4Label=traceId) — по нему событие сопоставляется с логами |
cs5 |
подробности записи в JSON (cs5Label=details): роль, версия документа, список изменённых полей |
cn1 |
номер записи в журнале установки (cn1Label=auditId) |
cn2 |
версия схемы события (cn2Label=schemaVersion) |
Поля, которых у события нет, в строку не попадают вовсе: пустой ключ SIEM прочла бы как пустое значение. У действия по статическому ключу, например, нет ни suser, ни cs3.
Спецсимволы экранируются по спецификации CEF: в шапке — обратная косая черта и вертикальная черта, в полях — обратная косая черта и знак равенства, переводы строк заменяются на \n. Поэтому одно событие всегда занимает ровно одну строку, что бы ни было записано в его значениях.
Важность события¶
Важность в журнале не хранится — она выводится из события при выгрузке, по одной и той же таблице:
- 7 — неудачное действие; сейчас это неудачная попытка входа (
auth.login_failed); -
5 — действие, которое служба безопасности ждёт выше общего потока:
- удаление чего угодно, отзыв машины, перевыпуск внутрикластерных билетов, раскрытие токена присоединения;
- любое действие с учётными записями администраторов;
- правка настроек доступа и настроек самой управляющей установки;
- открытие и закрытие окна присоединения;
- любое действие по статическому ключу — вход аварийными учётными данными сам по себе повод для внимания;
- 3 — остальное: правка стримов, шаблонов, зон доставки, вход администратора.
Правила опираются на вид действия, а не на заранее составленный список, поэтому действия, которые появятся в новых версиях, получат важность по тем же правилам.
Регулярный забор в SIEM¶
Сборщик SIEM забирает журнал окнами по расписанию: каждый запрос берёт from равным to предыдущего. Обе границы входят в окно, поэтому запись, пришедшаяся ровно на стык, придёт дважды — SIEM отбросит дубль по externalId. Так же без потерь переносится и повтор окна после обрыва.
Окно не должно выходить за срок хранения журнала — семь суток по умолчанию (настройка audit_log_ttl_secs, см. Хранение и защита). Сборщик, который отставал дольше, найдёт в журнале только то, что ещё не удалено.
Сборщику, который умеет читать JSON, подходит и лента журнала с курсором — она описана в разделе Выгрузка в SIEM страницы журнала. Поля события там те же, меняется только форма.