Журналы аудита пользователей
Примечание
Функциональность доступна только для серверной версии ТестОпс, начиная с версии 4.23.0.
Если ваши политики безопасности требуют ведения журнала действий пользователей в системе, это можно сделать на стороне ТестОпс.
ТестОпс ведет учет следующих событий и действий пользователей:
- события, связанные с лицензией ТестОпс;
- управление учетными записями пользователей;
- действия пользователей, связанные с работой в проектах (создание, редактирование и удаление тест-кейсов и других сущностей).
Профили журналирования
ТестОпс может вести журнал в формате 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:
yaml
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-адрес пользователя.
Пример записи журнала
json
{
"@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"
}