Перейти к основному содержимому

Журналы аудита пользователей

Примечание

Эта функция доступна с версии 4.23.0 и выше.

Эта функция недоступна в SaaS.

Если ваши политики безопасности требуют ведения журнала действий пользователей в системе, такое ведение журнала можно настроить на стороне ТестОпс.

ТестОпс ведет журналы действий, связанных с:

  • лицензированием,
  • управлением пользователями,
  • работой конечных пользователей в проектах (создание, редактирование и удаление сущностей).

Профили ведения журнала

Общее ведение журнала в системе может быть в формате JSON или в текстовом формате.

Формат журналов, предоставляемых ТестОпс, определяется параметром конфигурации SPRING_PROFILES_ACTIVE, который всегда присутствует во всех конфигурациях ТестОпс.

Параметр конфигурации SPRING_PROFILES_ACTIVE принимает множество профилей, разделенных запятыми.

Существуют следующие профили:

  • kubernetes
    • Этот профиль установлен по умолчанию при запуске приложения в Kubernetes. События будут записываться в консоль (stdout) в формате JSON.
  • compose
    • Этот профиль установлен по умолчанию при запуске приложения в docker compose. События будут записываться в консоль (stdout) в текстовом формате с элементами, разделенными пробелами.
  • package
    • Этот профиль установлен по умолчанию при развертывании приложения через пакеты Linux (deb или rpm). События будут записываться в консоль (stdout) в текстовом формате с элементами, разделенными пробелами.
  • logging-console-json
    • События будут записываться в консоль (stdout) в формате JSON.
  • logging-file-json
    • События будут записываться в файл в формате JSON. Путь к файлу должен быть указан через переменную окружения LOG_FILE (описано ниже).

Уровень ведения журнала

Для ведения журнала аудита существуют два уровня, определяющие тип событий, записываемых системой, задаваемые параметром LOGGING_LEVEL_ACCESSLOG.

  • debug
    • События POST, DELETE, PATCH, PUT будут записываться
    • это в основном означает, что действия пользователей, связанные с созданием, изменением/обновлением, удалением сущностей, будут записываться
  • trace
    • События GET, HEAD, OPTION будут записываться
      • этот тип ведения журнала будет показывать все действия пользователей и будет очень избыточным

Ведение журнала в файл

Ведение журнала может выполняться в файл, который может быть обработан приложением, таким как logstash.

Чтобы записывать события в файл, конфигурация должна содержать параметр LOG_FILE, указывающий на файл, в который необходимо записывать журналы.

Полная конфигурация ведения журнала

Следующий фрагмент конфигурации позволяет записывать события POST, DELETE, PATCH, PUT в формате JSON в stdout и в файл /var/log/testops/testops.log

SPRING_PROFILES_ACTIVE: logging-console-json,logging-file-json
LOGGING_LEVEL_ACCESSLOG: debug
LOG_FILE: /var/log/testops/testops.log

Поля записи журнала

Каждая запись журнала доступа будет содержать следующий набор полей.

  • message - сообщение в "сыром" формате
  • logger_name - имя логгера. Для ведения журнала действий пользователей имя логгера будет accesslog
  • method - метод API, вызванный действием конечного пользователя (GET/POST/PUT и т.д.)
  • endpoint - вызванная конечная точка
  • query - параметры запроса, например, ID проекта, дополнительные параметры
  • status - статус ответа (2xx, 3xx, 4xx, 5xx)
  • user - имя пользователя, вызвавшего действие
  • roles - роль пользователя
  • client - IP-адрес конечного пользователя

Пример записи

{
"@timestamp": "2023-11-13T12:00:00.778Z",
"@version": "1",
"message": "status=200, method=GET, endpoint=/rs/testcasetree/leaf, query=projectId=4&treeId=8&sort=id%2Casc&size=100, client=192.168.100.4, user=admin, roles=[ROLE_ADMIN]",
"logger_name": "accesslog",
"thread_name": "http-nio-8081-exec-7",
"level": "trace",
"level_value": 5000,
"endpoint": "/rs/testcasetree/leaf",
"method": "GET",
"query": "projectId=4&treeId=8&sort=id%2Casc&size=100",
"roles": "ROLE_ADMIN",
"client": "192.168.1.4",
"user": "admin",
"status": "200"
}