Быстрый старт
Сервис аудита (услуга 1.15) позволяет осуществлять запись событий безопаности. Механика работы с сервисом выглядит следующим образом:
- Прорабатывается событийная метамодель, которая описывает все возможные события безопасности, а также список их дополнительных параметров.
- При запуске приложения публикуется подготовленная модель в сервисе аудита.
- В процессе работы сервиса при возникновении ситуации, требующей запись в журнал событий безопасности, выполняется отправка данных события в сервис аудита.
Адрес сервиса - http://platform-gateway/audit/proxy.
Узнать адрес виртуальной машины можно в паспорте стенда вашего проекта. Дополнительную информацию можно получить у аккаунт-менеджера.
Подготовим JSON для метамодели (с двумя событиями, второе в качестве закрепления) и загрузим её через API (curl).
Проработаем метамодель для нашего приложения. Представим, что приложение занимается установкой ролей для пользователей и необходимо отправлять события аудита на каждое редактирование роли. Проработаем содержание события:
- название события - "Role changed";
- описание события - "Смена роли пользователя";
- название приложения (чтобы знать, что это именно его события) - указываем свой идентификатор в качестве названия приложения;
- логин пользователя, который вызвал действие;
- узел (IP/FQDN), с которого пользователь выполняет действия.
В качестве параметров события необходимо передать:
- логин пользователя, роль которого мы меняем;
- итоговый список ролей.
Также мы хотим явно отличать события, посланные из приложения, от любого другого. Исходя из указанных требований, составим следующую метамодель (согласно API Аудит):
Метамодель type=json{ "metamodelVersion": 1, "module": "укажите-ваш-идентификатор", "events": [ { "name": "Role Changed", "description": "Смена роли пользователя", "success": true, "mode": "speed", "params": [ { "name": "Target User", "description": "Логин пользователя, роли которого изменяются в рамках события" }, { "name": "Roles", "description": "Итоговый список ролей" } ] } ] }``` Вместо `укажите-ваш-идентификатор` укажите свой идентификатор сервиса. Далее загрузим JSON-описание метамодели в Аудит, выполнив следующий запрос: `http://{auditUrl}/audit/proxy/v1/metamodel` `auditUrl` - днс:порт, либо через `platform-gateway`, либо через интеграционный шлюз МТП (предпочтительно для ПК или ВМ). Запрос для загрузки метамодели: ```conf name=Запрос type=json curl -X 'POST' \ 'http://{auditUrl{/audit/proxy/v1/metamodel' \ -H 'accept: application/json' \ -H 'SOURCERN: PLATCORE1' \ -H 'Content-Type: application/json' \ -d '{ "metamodelVersion": 1, "module": "укажите-ваш-идентификатор", "events": [ { "name": "Role Changed", "description": "Смена роли пользователя", "success": true, "mode": "speed", "params": [ { "name": "Target User", "description": "Логин пользователя, роли которого изменяются в рамках события" }, { "name": "Roles", "description": "Итоговый список ролей" } ] } ] }'
При отправке данного запроса из приложения в Kubernetes можно использовать
http://platform-gateway (платформенный шлюз)
.В качестве ответа на данный запрос мы получим идентификатор нашей метамодели:
Ответ type=json{ "id": "b1df2678-7c44-4288-b0ff-e08532639aad" }
Учтите, что при обновлении версии метамодели, необходимо инкрементировать
metamodelVersion
.Теперь попробуем отправить событие в Аудит (согласно описанной нами метамодели). Составим следующее JSON-описание события:
Событие type=json{ "metamodelVersion": "1", "name": "Role Changed", "session": "сессия", "module": "укажите-ваш-идентификатор", "createdAt": 1699442898000, "userLogin": "admin", "userName": "Ivanov Ivan", "userNode": "127.0.0.1", "params": [ { "name": "Target User", "value": "user" }, { "name": "Roles", "value": "view,edit,create" } ] }
Не забудьте обновить следующие поля:
Поле | Описание |
---|---|
module | Идентификатор |
createdAt | Актуальная дата создания |
metamodelVersion | Версия метамодели (в случае, если вы её обновляли) |
Отправим это событие при помощи следующего запроса (укажите свой JSON):
http://{auditUrl}/audit/proxy/v1/event
Запрос для загрузки метамодели:
Запрос type=jsoncurl -X 'POST' \ 'http://{auditUrl}/audit/proxy/v1/event' \ -H 'accept: application/json' \ -H 'X-Node-ID: node-id' \ -H 'SOURCERN: PLATCORE1' \ -H 'Content-Type: application/json' \ -d '{ "metamodelVersion": "1", "name": "Role Changed", "session": "сессия", "module": "укажите-ваш-идентификатор", "createdAt": 1699442898000, "userLogin": "admin", "userName": "Ivanov Ivan", "userNode": "127.0.0.1", "params": [ { "name": "Target User", "value": "user" }, { "name": "Roles", "value": "view,edit,create" } ] }'
При отправке данного запроса из приложения в Kubernetes можно использовать ссылку
http://platform-gateway (платформенный шлюз)
.В качестве ответа мы получим идентификатор отправленного события:
Идентификатор type=json{ "id": "49b70292-cafd-461e-b758-c841a669396a" }
Поиск отправленного события
-
Переходим на интерфейс Аудита по ссылке ИАМ (через звездное небо).
-
Авторизовывамся при помощи учетной записи.
-
Нажимаем на карточку Поиск событий аудита. Откроется окно поиска событий аудита.
Увеличить
Увеличить
-
Выбираем тенант, который мы использовали ранее. Указываем период, сходный текст и свой идентификатор.
Увеличить
-
В результатах поиска отобразятся нужные нам события. Нажмите на строку с событием, чтобы узнать о нем подробнее.
Увеличить
В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Аудит
Отправка произведённых в системе событий с уникальными идентификаторами и настраиваемым набором параметров