Аудит в Stronghold предназначен для записи запросов к API и ответов на них. Так как любая операция в Stronghold выполняется через API, аудит позволяет восстановить последовательность действий пользователей, сервисов и администраторов, а также использовать эти данные для расследований, мониторинга и контроля соответствия требованиям безопасности.
Содержимое журнала аудит
При включенном аудит-устройстве Stronghold записывает:
- запросы к API;
- ответы на запросы;
- ошибки, возникшие при выполнении операций.
В результате журнал аудита становится основным источником информации о том, кто, когда и к какому пути обращался, какая операция выполнялась и каким был результат.
Пути, которые не проходят через аудит
Часть системных путей не проходит через аудит. К ним относятся:
sys/initsys/seal-statussys/sealsys/step-downsys/unsealsys/leadersys/healthsys/rekey/initsys/rekey/updatesys/rekey/verifysys/rekey-recovery-key/initsys/rekey-recovery-key/updatesys/rekey-recovery-key/verifysys/storage/raft/bootstrapsys/storage/raft/joinsys/internal/ui/feature-flags
При определённых настройках listener следующие пути неаутентифицированного доступа также могут обходить аудит:
sys/metricssys/pprof/*sys/in-flight-req
Эти исключения важно учитывать при проектировании общей схемы наблюдаемости и расследований.
Формат и защита данных в журнале аудита
Каждая запись журнала аудита представляет собой JSON-объект. Поле type указывает тип записи:
request— запись о запросе;response— запись об ответе.
По умолчанию чувствительные строковые данные в журналах аудита не сохраняются в открытом виде, а хешируются с использованием алгоритма HMAC-SHA256 и криптографической соли конкретного аудит-устройства. Это уменьшает риск утечки секретов через журналы, сохраняя возможность проверять значения через механизм audit hash.
Важно учитывать:
- не все типы данных маскируются одинаково;
- после отключения аудит-устройства его соль хеширования теряется, и сравнение старых значений через это устройство становится невозможным;
- Незащищенное логирование чувствительных данных должно выполняться осознанно и строго ограниченно.
Подробнее о составе аудит-записи и формате хранения данных — на странице «Схема записей журнала аудита».
Использование нескольких аудит-устройств
Если включено несколько аудит-устройств, Stronghold пытается записать событие во все из них. Это дает сразу несколько преимуществ:
- появляется резервная копия аудит-записей;
- можно направлять журналы в разные системы;
- легче обнаруживать проблемы доставки и возможную порчу данных.
Это означает, что полную картину аудита нужно собирать как объединение журналов со всех настроенных устройств.
Рекомендуется использовать как минимум два аудит-устройства или хотя бы одно основное устройство и продуманную схему резервирования. Ошибки аудита могут влиять на возможность Stronghold обслуживать запросы.
Ошибки аудит-устройств
Аудит критически важен для безопасности Stronghold, поэтому поведение при ошибках зависит от типа сбоя:
- если хотя бы одно аудит-устройство успешно записало событие, запрос обычно может завершиться успешно;
- если аудит-устройство вошло в блокирующее состояние и запись в него не завершается, запросы к Stronghold могут оставаться в состоянии ожидания до устранения проблемы;
- при использовании сетевых бэкендов нужно отдельно учитывать риски тайм-аутов, недоступности сокета или потери UDP-пакетов.
Перед включением аудит-устройства убедитесь, что все узлы кластера действительно могут в него писать.
Поддерживаемые типы аудит-устройств
Stronghold поддерживает те же базовые бэкенды аудита, что и Vault:
file— запись в файл;syslog— отправка в локальный syslog-агент;socket— отправка в TCP-, UDP- или UNIX-сокет.
File
Наиболее предсказуемый бэкенд для локального хранения и последующей передачи в систему централизованного логирования.
Пример включения:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold audit enable file file_path=/var/log/stronghold_audit.logstronghold audit enable file file_path=/var/log/stronghold_audit.logSyslog
Подходит для Unix-систем с уже настроенным syslog-стеком логирования.
Пример включения:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold audit enable syslog tag="stronghold" facility="AUTH"stronghold audit enable syslog tag="stronghold" facility="AUTH"Записи аудита могут быть большими, поэтому для syslog лучше использовать надёжную транспортную конфигурацию или дополнительно включать бэкенд file.
Socket
Подходит для интеграции с внешними системами через TCP-, UDP- или UNIX-сокет.
Пример включения:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold audit enable socket address=127.0.0.1:9090 socket_type=tcpstronghold audit enable socket address=127.0.0.1:9090 socket_type=tcpПри использовании UDP учитывайте риск незаметной потери сообщений. Для production-сценариев желательно комбинировать socket с другим, более надежным аудит-устройством.
Базовые операции
Включить аудит-устройство:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold audit enable file file_path=/var/log/stronghold_audit.logstronghold audit enable file file_path=/var/log/stronghold_audit.logПосмотреть список устройств:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold audit liststronghold audit listОтключить устройство:
- Stronghold в DKP
- Stronghold в Linux
d8 stronghold audit disable file/stronghold audit disable file/Продвинутые возможности
В Stronghold доступны дополнительные механизмы тонкой настройки журналов аудита:
- Схема записей журнала аудита — структура аудит-записи, ключевые объекты
auth,request,responseи защита чувствительных данных; - Фильтрация данных аудита — позволяет направлять в конкретное устройство только записи, соответствующие условию;
- Исключение полей из данных аудита — позволяет удалять отдельные поля из записей перед их сохранением.
Эти возможности полезны для разграничения потоков журналов, снижения объёма журналов и ограничения хранения отдельных чувствительных полей, но должны применяться с осторожностью.
Фильтрация и исключение полей являются продвинутыми функциями. Неверная конфигурация может привести к пробелам в журналах аудита или к потере важных данных для расследований.
Рекомендации
- Включайте аудит сразу после инициализации Stronghold.
- Для production-сред используйте более одного аудит-устройства.
- Не тестируйте конфигурацию фильтров и исключений в production-среде.
- Учитывайте, что аудит является частью модели безопасности, а не только средством диагностики.