Журналы аудита пользователей
Эта функция доступна с версии 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
(описано ниже).
- События будут записываться в файл в формате JSON. Путь к файлу должен быть указан через переменную окружения
Уровень ведения журнала
Для ведения журнала аудита существуют два уровня, определяющие тип событий, записываемых системой, задаваемые параметром 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"
}