Перейти к содержимому
Разделы

Руководства

Аудит и SIEM

Принимайте подписанные события аудита и настройте отправку в SIEM.

Настройте доступ

В разделе аудита организации уполномоченный администратор создаёт входящий источник и сохраняет его ключ и одноразовый секрет. Исходящие SIEM-направления настраиваются отдельно с проверкой и активацией в кабинете. Доступ для входящих событий не разрешает административные запросы.

Маршрут кабинета: /organizations/:organizationId/audit → Контроль → Входящие источники или назначения SIEM. Требуется organization.audit.siem.manage; для просмотра — organization.audit.siem.view.

Первый успешный сценарий

Выполните шаги по порядку. Откройте каждый метод для точного тела, обязательных заголовков и схемы ответа.

  1. Подготовьте 1–500 OCSF JSON-событий в UTF-8 NDJSON, по одному объекту на строку, в пределах 2 МБ.
  2. Подпишите Unix-секунды + "." + точное исходное тело декодированным 32-байтовым секретом источника.
  3. Передайте пакет в events организации и источника; сохраните идентификатор принятого пакета и счётчики.

Состояния, повторы и восстановление

Не разбирайте и не сериализуйте тело заново после подписи. Повторная подпись возвращает 409 AUDIT_INGRESS_REPLAY. События проверяются до сохранения; недоступный источник или невозможность расшифровать секрет блокируют приём. SIEM использует отдельно настроенный транспорт, а не входящий протокол подписи.

Приём исходящих пакетов SIEM

После создания назначения проверьте подключение и активируйте проверенную ревизию. Сервер получателя принимает сжатый gzip пакет NDJSON OCSF 1.8.0: Content-Type application/x-ndjson, Content-Encoding gzip. Заголовки X-Hallify-Batch-Id и Idempotency-Key содержат идентификатор пакета; X-Hallify-OCSF-Version — версию 1.8.0.

Проверяйте X-Hallify-Content-SHA256 и HMAC-SHA256 X-Hallify-Signature над точными сжатыми байтами до распаковки. Обе величины передаются в hex; выданный base64url-секрет декодируется в 32 байта. В этом протоколе нет префикса времени. Сохраняйте пакет идемпотентно по его идентификатору, затем подтверждайте успешный приём.

Повторяемые HTTP-статусы: 408, 429 и 5xx. Числовой Retry-After ограничен одним часом; иначе применяется экспоненциальная случайная задержка с потолком 15 минут. Для диагностики используйте состояние назначения и доставки в Audit. Этот исходящий протокол не совпадает с подписью входящих событий.

Примеры запросов
import { createHash, createHmac, timingSafeEqual } from 'node:crypto';

export function verifySiemBatch(compressedBytes, contentHash, signature) {
  const validMetadata = /^[0-9a-f]{64}$/.test(contentHash)
    && /^[0-9a-f]{64}$/.test(signature);
  if (!validMetadata) return false;
  const secret = Buffer.from(process.env.HALLIFY_SIEM_SECRET, 'base64url');
  if (secret.length !== 32) return false;
  const expectedHash = createHash('sha256').update(compressedBytes).digest();
  const expectedSignature = createHmac('sha256', secret).update(compressedBytes).digest();
  return timingSafeEqual(Buffer.from(contentHash, 'hex'), expectedHash)
    && timingSafeEqual(Buffer.from(signature, 'hex'), expectedSignature);
}

Hallify использует обязательные cookies и опциональную аналитику.

Обязательные cookies поддерживают вход, язык и тему. Аналитика выключена, пока вы явно ее не разрешите.