Audit devices: логирование обращений

Как Vault фиксирует каждое обращение, не раскрывая при этом сами секреты в логах.

Audit device (аудит-устройство) — компонент, записывающий в лог каждый запрос к Vault и каждый ответ; секретные значения при этом хешируются, а не пишутся в открытом виде.

Аудит — не опция, а основа доверия к Vault. Без него вы не ответите на главный вопрос инцидента: «кто, когда и какой секрет читал». Vault логирует всё — но делает это безопасно.

Включение аудита

# лог в файл
vault audit enable file file_path=/var/log/vault/audit.log

# можно включить несколько устройств сразу
vault audit enable -path=syslog-audit syslog

vault audit list

Что в логе

Каждая запись — это JSON с метаданными запроса и ответа: путь, операция, токен (по accessor), время, IP клиента. Секретные значения хешируются HMAC:

{
  "type": "response",
  "time": "2026-06-24T10:00:00Z",
  "auth": { "accessor": "hmac-sha256:ab12...", "policies": ["orders-read"] },
  "request": { "operation": "read", "path": "database/creds/readonly" },
  "response": { "data": { "password": "hmac-sha256:9f3c..." } }
}

Пароль в логе — это HMAC, а не само значение. Зато по этому HMAC можно проверить, фигурировал ли конкретный секрет в запросе, не раскрывая его читателю лога.

Как работает под капотом

Аудит-устройства встроены в путь обработки запроса до и после выполнения. Важнейшее свойство: если включено хотя бы одно устройство и запись в него не удалась, Vault откажет в операции (fail-closed). Логика жёсткая: лучше не выдать секрет, чем выдать его незалогированным. Поэтому в проде ставят минимум два устройства разных типов (файл + syslog), чтобы отказ одного не блокировал Vault. Хеширование делается ключом, привязанным к устройству, что и позволяет потом сверять значения.

Зачем это критично

  • Расследование инцидентов — точная картина обращений к секретам.
  • Комплаенс — многие стандарты требуют журнал доступа к секретам.
  • Атрибуция — accessor токена показывает, кто обращался.
  • Проверка без раскрытия — HMAC позволяет искать секрет в логах, не светя его.

Частые ошибки

  • Работать без аудита — при инциденте вы слепы.
  • Единственное устройство — его отказ заблокирует Vault (fail-closed).
  • Открытый доступ к audit-логу — там метаданные и HMAC, лог тоже надо защищать и ротировать.
  • Ждать в логе открытых паролей — их там нет, только HMAC, это by design.

Итог

  • Audit-устройства логируют каждый запрос/ответ; секреты в логах хешируются HMAC.
  • При сбое единственного устройства Vault отказывает в операции (fail-closed) — ставьте минимум два.
  • Аудит даёт расследование, атрибуцию и комплаенс без раскрытия значений в логах.
Проверьте себя
1. Как секретные значения выглядят в audit-логе Vault?
AВ открытом виде
BВ виде HMAC-хеша, а не самого значения
CПолностью отсутствуют
DЗашифрованы паролем читателя
2. Что произойдёт, если включено единственное audit-устройство и запись в него не удалась?
AVault проигнорирует и продолжит
BVault откажет в операции (fail-closed)
CVault запечатается
DЛог запишется позже
3. Зачем нужно хотя бы одно audit-устройство в проде?
AДля ускорения Vault
BЧтобы фиксировать кто/когда/какой секрет запрашивал — для расследований и комплаенса
CДля распечатывания
DДля шифрования storage