Аудитный лог событий уровня сервисов
Отслеживайте события уровня сервисов, чтобы убедиться, что только авторизованные пользователи получают доступ к вашим данным и изменяют их. Это поможет обеспечить соответствие вашей облачной инфраструктуры нормативным правовым актам и отраслевым стандартам. Например, вы можете отслеживать получение сотрудниками доступа к конфиденциальным данным, хранящимся в бакетах.
Анализируйте логи событий уровня сервисов, чтобы оптимизировать использование ресурсов в вашей инфраструктуре. Так вы сможете определить наиболее часто используемые ресурсы и повысить их производительность. Или, наоборот, выявить редко используемые ресурсы, которые можно объединить или удалить для сокращения затрат.
Важно
При настройке сбора событий уровня сервисов для бакета Object Storage не рекомендуем выбирать этот же бакет в качестве объекта назначения загрузки логов. В этом случае может возникнуть автоматическая рекурсивная генерация логов аудита, что приведет к увеличению объема генерируемых логов (приблизительно на 16 МБ в месяц для всех событий одного трейла, сохраняемых в бакете).
Аудитный лог событий уровня сервисов — это запись о событиях, которые произошли с ресурсами Yandex Cloud, в форме JSON-объекта.
Формат записей универсален для всех событий. Значения некоторых полей определяются ресурсом-источником и типом события.
Объект события — ресурс сервиса, над которым производится операция. Субъект события — аккаунт, от имени которого производится операция.
Пример аудитного лога уровня сервисов при запросе содержимого секрета
Если федеративный пользователь запросит содержимое секрета в сервисе Yandex Lockbox, в аудитный лог попадет такая запись:
{
"event_id": "<идентификатор_события>",
"event_source": "lockbox",
"event_type": "yandex.cloud.audit.lockbox.GetPayload",
"event_time": "<дата_события>",
"authentication": {
"authenticated": true,
"subject_type": "FEDERATED_USER_ACCOUNT",
"subject_id": "<идентификатор_пользователя>",
"subject_name": "<логин_пользователя>",
"federation_id": "<идентификатор_федерации>",
"federation_name": "<имя_федерации>",
"federation_type": "<тип_федерации>"
},
"authorization": {
"authorized": true
},
"resource_metadata": {
"path": [
{
"resource_type": "organization-manager.organization",
"resource_id": "<идентификатор_организации>",
"resource_name": "<имя_организации>"
},
{
"resource_type": "resource-manager.cloud",
"resource_id": "<идентификатор_облака>",
"resource_name": "<имя_облака>"
},
{
"resource_type": "resource-manager.folder",
"resource_id": "<идентификатор_каталога>",
"resource_name": "<имя_каталога>"
}
]
},
"request_metadata": {
"remote_address": "cloud.yandex",
"user_agent": "Yandex Cloud",
"request_id": "<идентификатор_запроса>"
},
"event_status": "DONE",
"details": {
"secret_id": "<идентификатор_секрета>",
"secret_name": "<имя_секрета>",
"secret_version_id": "<идентификатор_версии_секрета>",
"secret_kms_key_id": "<идентификатор_ключа_шифрования_секрета_в_KMS>",
"secret_status": "<статус_секрета>",
"secret_version_status": "<статус_версии_секрета>",
"secret_version_payload_entry_keys": [
"<ключи_записей_в_версии_секрета>"
]
},
"request_parameters": {
"secret_id": "<идентификатор_секрета>",
"version_id": "<идентификатор_версии_секрета>"
},
"response": {
"version_id": "<идентификатор_версии>",
"entry_keys": [
"<ключи_записей>"
]
}
}
Схема данных
{
"event_id": string,
"event_source": string,
"event_type": string,
"event_time": string,
"authentication": {
"authenticated": boolean,
"subject_type": string,
"subject_id": string,
"subject_name": string,
"federation_id": string,
"federation_name": string,
"federation_type": string,
"token_info": {
"masked_iam_token": string,
"iam_token_id": string,
"impersonator_id": string,
"impersonator_type": string,
"impersonator_name": string,
"impersonator_federation_id": string,
"impersonator_federation_name": string,
"impersonator_federation_type": string
}
},
"authorization": {
"authorized": boolean
},
"resource_metadata": {
"path": [{
"resource_type": string,
"resource_id": string,
"resource_name": string
}]
},
"request_metadata": {
"remote_address": string,
"user_agent": string,
"request_id": string
},
"event_status": string,
"error": {
"code": number,
"message": string,
"details": {
object
}
},
"details": {
object
},
"request_parameters": {
object
},
"response": {
object
}
}
Поле | Описание |
---|---|
event_id |
string Идентификатор события. |
event_source |
string Имя сервиса-источника события. |
event_type |
string Тип события. Определяется сервисом-источником события. Подробнее смотрите в разделе Справочник событий уровня сервисов. |
event_time |
string Время, в которое произошло событие. |
authentication 1 |
object Данные аутентификации субъекта события. |
authentication.authenticated |
boolean Результат аутентификации. Возможные значения:
|
authentication.subject_type |
string Тип субъекта. Возможные значения:
|
authentication.subject_id |
string Идентификатор субъекта. |
authentication.subject_name |
string Имя субъекта. |
authentication.federation_id 2 |
string Идентификатор федерации, в которой состоит федеративный пользователь. |
authentication.federation_name 2 |
string Имя федерации, в которой состоит федеративный пользователь. |
authentication.federation_type 2 |
string Тип федерации. Возможное значение:
|
authentication.token_info 1 |
object Данные аутентификации субъекта события. |
authentication.token_info.masked_iam_token |
string Зашифрованное значение IAM-токена, с которым субъект выполнил запрос. |
authentication.token_info.iam_token_id |
string Идентификатор зашифрованного IAM-токена. |
authentication.token_info.impersonator_id |
string Идентификатор субъекта при использовании имперсонации. |
authentication.token_info.impersonator_type |
string Тип субъекта-имперсонатора. Возможные значения:
|
authentication.token_info.impersonator_name |
string Имя субъекта-имперсонатора. |
authentication.token_info.impersonator_federation_id 2 |
string Идентификатор федерации, в которой состоит федеративный пользователь-имперсонатор. |
authentication.token_info.impersonator_federation_name 2 |
string Имя федерации, в которой состоит федеративный пользователь-имперсонатор. |
authentication.token_info.impersonator_federation_type 2 |
string Тип федерации. Возможное значение:
|
authorization 1 |
object Данные авторизации субъекта события. |
authorization.authorized |
boolean Результат авторизации. Возможные значения:
|
resource_metadata 1 |
object Метаданные объекта события. |
resource_metadata.path[] |
array Путь к ресурсу в котором произошло событие. |
resource_metadata.path[].resource_type |
string Тип ресурса. |
resource_metadata.path[].resource_id |
string Идентификатор ресурса. |
resource_metadata.path[].resource_name |
string Имя ресурса. |
request_metadata |
object Данные о запросе, который инициировал событие. |
request_metadata.remote_address |
string IP-адрес субъекта события. |
request_metadata.user_agent |
string User-Agent субъекта события. |
request_metadata.request_id |
string Идентификатор запроса. |
event_status |
string Статус события. Определяется сервисом-источником и типом события. Возможные значения:
|
error |
object Статус ошибки. Объект типа google.rpc.Status
|
details |
object Детали события. Определяются сервисом-источником и типом события. |
request_parameters 1 |
object Параметры запроса. |
response 1 |
object Полученные данные. |
1 Блок полей используется не для всех типов событий.
2 Поле доступно, когда subject_type
= FEDERATED_USER_ACCOUNT
.
Примечание
Если действие выполнил один из инфраструктурных сервисов Yandex Cloud или сотрудник поддержки, то в поле remote address
будет значение cloud.yandex
, а в поле user agent
— Yandex Cloud
.
Представление аудитного лога
В зависимости от объекта назначения — бакет или лог-группа — изменяется структура и содержимое сообщения, в составе которого Audit Trails передает объекту назначения аудитные логи:
- для бакета — файл, в котором находится массив JSON-объектов аудитного лога;
- для лог-группы — сообщение, в котором находится только один JSON-объект аудитного лога.
Файл аудитного лога в бакете
Шаблон полного имени файла аудитного лога в бакете:
<префикс_объекта>/<идентификатор_трейла>/<год>/<месяц>/<имя_файла.json>
Запись в лог-группе
Значения записей в лог-группе:
- Время — значение поля
event_time
события. - JSON — JSON-объект события.
- Уровень — вычисляется в зависимости от значения
event_status
события:ERROR
— для значенияERROR
;WARN
— для значенияCANCELLED
;INFO
— в остальных случаях.
- Сообщение — содержит значения полей
event_status
,event_type
,subject_name
,cloud_name
,resource_name
.
При загрузке в Cloud Logging события в лог-группе могут дублироваться. Определить, является ли сохраненное в лог-группе событие дублем, вы можете по уникальному идентификатору записи json_payload.event_id
.