Аудит-логи — это механизм записи всех операций, выполняемых пользователями через API Deckhouse Development Platform (DDP). Логи сохраняются в базе данных PostgreSQL и используются для аудита действий пользователей.
Компоненты
В формировании и хранении аудит-логов участвуют следующие компоненты:
- DDP Backend — формирует записи аудит-логов.
- PostgreSQL — обеспечивает хранение данных.
Содержимое аудит-логов
Для каждого HTTP-запроса (кроме GET) создаётся запись аудит-лога, содержащая:
- «Email» — адрес электронной почты пользователя, выполнившего запрос.
- «IP» — IP-адрес клиента.
- «Тело запроса» — тело HTTP-запроса.
- «Путь» — путь API, к которому был выполнён запрос.
- «Метод» — HTTP-метод запроса (POST, PUT, DELETE, PATCH).
- «Статус» — HTTP-код ответа.
- «Дата» — дата выполнения запроса.
Принцип работы
Аудит-логи формируются автоматически в DDP Backend с использованием промежуточного слоя обработки запросов (middleware) для всех HTTP-запросов, кроме GET.
Для снижения нагрузки на базу данных используется буферизация записей со следующими параметрами:
- Размер батча — 40 записей.
- Интервал записи — 20 секунд.
- Размер буфера в памяти — 4 записи.
Хранение
Аудит-логи хранятся в таблице audit_logs базы данных PostgreSQL. Таблица партиционирована на основе поля timestamp с разделением по дням.
Структура таблицы поддерживается автоматически: ежедневно в 00:00 по серверному времени подготавливается пространство для записи логов на следующие 7 дней.
Логи хранятся неограниченно долго. Автоматическая очистка старых записей не выполняется. Для управления временем хранения необходимо настроить автоматическое удаление старых групп логов через внешние инструменты (например, cron-задачи или скрипты очистки базы данных).
Просмотр логов
Аудит-логи доступны через веб-интерфейс в разделе «Администрирование» → «Аудит». Логи можно фильтровать по следующим параметрам:
- Период (дата и время начала и окончания);
- Email пользователя;
- IP-адрес;
- Путь;
- Метод запроса;
- Статус ответа.
Выгрузка в CSV
На странице просмотра аудит-логов доступна кнопка «Скачать .csv». Выгрузка выполняется только при наличии разрешения на чтение аудит-логов.
В файл попадают все записи, соответствующие текущим фильтрам и сортировке. Если число подходящих событий превышает лимит в 100 000 записей, выгрузка не выполняется.
Настройка
Механизм аудит-логирования включён по умолчанию и не требует дополнительной настройки. Для управления временем хранения логов необходимо настроить автоматическое удаление старых партиций базы данных.