Аудит-логи — это механизм записи всех операций, выполняемых пользователями через API Deckhouse Development Portal (DDP). Логи сохраняются в базе данных PostgreSQL и используются для аудита действий пользователей.

Компоненты

В формировании и хранении аудит-логов участвуют следующие компоненты:

  • DDP Backend — формирует записи аудит-логов.
  • PostgreSQL — обеспечивает хранение данных.

Содержимое аудит-логов

Для каждого HTTP-запроса к API, кроме запросов GET, создаётся запись аудит-лога со следующими полями:

  • «Email» — адрес электронной почты пользователя, выполнившего запрос.
  • «IP» — IP-адрес клиента.
  • «Тело запроса» — тело HTTP-запроса.
  • «Путь» — путь API, к которому был выполнен запрос.
  • «Метод» — HTTP-метод запроса (POST, PUT, DELETE или PATCH).
  • «Статус» — HTTP-код ответа.
  • «Дата» — дата и время выполнения запроса.

Следующие запросы в аудит-логи не записываются:

  • POST /api/v2/users/access-credentials — сохранение учётных данных пользователя.
  • POST /api/v2/security/encryption-key/rotate — ротация ключа шифрования.
  • POST /api/v2/widgets/data/<WIDGET_UUID> и POST /api/v2/widgets/data/<WIDGET_UUID>/stream — получение данных виджета.

Принцип работы

Аудит-логи формируются автоматически в DDP Backend с использованием промежуточного слоя обработки запросов (middleware) для HTTP-запросов, перечисленных в разделе «Содержимое аудит-логов».

Для снижения нагрузки на базу данных используется буферизация записей со следующими параметрами:

  • Размер батча — 40 записей.
  • Интервал записи — 20 секунд.
  • Размер буфера в памяти — 4 записи.

Хранение

Аудит-логи хранятся в таблице audit_logs базы данных PostgreSQL. Таблица партиционирована на основе поля timestamp с разделением по дням.

Структура таблицы поддерживается автоматически: ежедневно в 00:00 UTC подготавливается пространство для записи логов на следующие 7 дней.

Логи хранятся неограниченно долго. Автоматическая очистка старых записей не выполняется. Для управления временем хранения необходимо настроить автоматическое удаление старых групп логов через внешние инструменты (например, cron-задачи или скрипты очистки базы данных).

Просмотр логов

Аудит-логи доступны через веб-интерфейс в разделе «Администрирование» → «Аудит». Логи можно фильтровать по следующим параметрам:

  • «Начало периода» и «Окончание периода» — интервал даты и времени.
  • «Email» — адрес электронной почты пользователя.
  • «Путь» — начало пути API.
  • «Метод» — метод запроса.
  • «Статус» — статус ответа.
  • «Поиск» — подстрока адреса электронной почты, IP-адреса, пути, метода или статуса.

Выгрузка в CSV

На странице просмотра аудит-логов доступна кнопка «Скачать .csv». Выгрузка выполняется только при наличии разрешения на чтение аудит-логов.

В файл попадают все записи, соответствующие текущим фильтрам и сортировке. Если число подходящих событий превышает лимит в 100 000 записей, выгрузка не выполняется.

Настройка

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