Как начать работать с Audit Trails
Audit Trails собирает аудитные логи ресурсов Yandex Cloud и загружает их в бакет Object Storage, лог-группу Cloud Logging или поток данных Data Streams.
Управление аудитными логами внутри Audit Trails осуществляется через трейлы.
По этой инструкции вы создадите новый трейл, который будет загружать аудитные логи ресурсов вашей организации в бакет Object Storage.
Совет
Чтобы дополнительно защитить аудитные логи, зашифруйте бакет.
Перед началом работы
-
Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы. -
На странице Биллинг
убедитесь, что у вас подключен платежный аккаунт и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. -
Убедитесь, что в вашем облаке существует бакет для хранения аудитного лога, при необходимости создайте новый бакет с ограниченным доступом.
-
Назначьте роли сервисному аккаунту:
CLIЕсли у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
.-
Назначьте роль
audit-trails.viewer
на облако, со всех ресурсов которого будут собираться аудитные логи:yc resource-manager cloud add-access-binding \ --role audit-trails.viewer \ --id <идентификатор_облака> \ --service-account-id <идентификатор_сервисного_аккаунта>
Где:
--role
— назначаемая роль;--id
— идентификатор облака, с которого будут собираться аудитные логи;--service-account-id
— идентификатор сервисного аккаунта.
-
Назначьте роль
storage.uploader
на каталог, в котором будет находиться трейл:yc resource-manager folder add-access-binding \ --role storage.uploader \ --id <идентификатор_каталога> \ --service-account-id <идентификатор_сервисного_аккаунта>
Где:
--role
— назначаемая роль;--id
— идентификатор каталога, в котором будет находиться трейл;--service-account-id
— идентификатор сервисного аккаунта.
-
-
На странице Управление доступом
убедитесь, что у вас есть роли:iam.serviceAccounts.user
на сервисный аккаунт;audit-trails.editor
на каталог, где будет находиться трейл;audit-trails.viewer
на организацию, с которой будут собираться аудитные логи;kms.editor
на каталог, в котором будет создан ключ шифрования для бакета;storage.viewer
на бакет или каталог.
Зашифровать бакет
Чтобы хранить логи в зашифрованном виде:
-
Создайте симметричный ключ шифрования в сервисе Yandex Key Management Service.
-
Включите шифрование бакета, используя созданный ключ.
-
Назначьте сервисному аккаунту, который вы создали ранее, роль
kms.keys.encrypter
на ключ, чтобы загружать логи в зашифрованный бакет:yc kms symmetric-key add-access-binding \ --role kms.keys.encrypter \ --id <идентификатор_ключа> \ --service-account-id <идентификатор_сервисного_аккаунта>
Где:
--role
— назначаемая роль;--id
— идентификатор ключа шифрования;--service-account-id
— идентификатор сервисного аккаунта.
Создать трейл
Примечание
При изменении объекта назначения в существующем трейле может произойти потеря событий. Создайте новый трейл, если вам нужно безопасно изменить объект назначения.
Чтобы создать первый трейл в Audit Trails и запустить процесс управления аудитными логами уровня конфигурации:
-
В консоли управления
выберите каталог, в котором вы хотите разместить трейл. -
Выберите сервис Audit Trails.
-
Нажмите кнопку Создать трейл.
-
В поле Имя укажите имя создаваемого трейла.
-
В поле Описание задайте описание трейла, необязательный параметр.
-
В блоке Назначение задайте параметры объекта назначения:
- Назначение —
Object Storage
. - Бакет — выберите бакет, в который будут загружаться аудитные логи.
- Префикс объекта — необязательный параметр, участвует в полном имени файла аудитного лога.
Примечание
Используйте префикс, если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
- Ключ шифрования — если выбранный бакет зашифрован, укажите ключ шифрования.
- Назначение —
-
В блоке Сервисный аккаунт выберите сервисный аккаунт, от имени которого трейл будет загружать файлы аудитного лога в бакет.
-
В блоке Сбор событий c уровня конфигурации задайте параметры сбора аудитных логов уровня конфигурации:
- Сбор событий — выберите
Включено
. - Ресурс — выберите
Организация
. - Организация — не требует заполнения, содержит имя текущей организации.
- Облако — оставьте значение по умолчанию
Все
.
- Сбор событий — выберите
-
(опционально) В блоке Сбор событий с уровня сервисов задайте параметры сбора аудитных логов уровня сервисов:
-
Сбор событий — выберите
Включено
. -
Выберите сервисы, для которых вы хотите собирать аудитные логи.
-
Для каждого выбранного сервиса укажите область сбора аудитных логов и тип фильтра событий:
Получать все
— чтобы получать все события сервиса.Выбранные
— чтобы получать только выбранные события. Затем выберите события.Исключить
— чтобы получать все события, кроме выбранных. Затем выберите события.
-
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания трейла:
yc audit-trails trail create --help
-
Выполните команду, чтобы создать трейл для сбора аудитных логов уровня конфигурации в организации:
yc audit-trails trail create \ --name <имя_трейла> \ --description "<описание_трейла>" \ --service-account-id <идентификатор_сервисного_аккаунта> \ --destination-bucket <имя_бакета> \ --destination-bucket-object-prefix <префикс_в_бакете> \ --filter-from-organisation-id <идентификатор_организации> \ --filter-some-cloud-ids <список_облаков_в_организации>
Где:
-
--name
— имя создаваемого трейла.
Требования к формату имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
--description
— описание трейла, которое позволит отличать его от других трейлов. Например--description "My very first trail"
. Необязательный параметр. -
--service-account-id
— идентификатор сервисного аккаунта, от имени которого трейл будет загружать файлы аудитного лога в бакет.В зависимости от области сбора аудитных логов, сервисному аккаунту должна быть назначена роль
audit-trails.viewer
на организацию, облако или каталог, в которых трейл будет собирать аудитные логи.
-
--destination-bucket
— имя бакета, в который будут загружаться аудитные логи.
Чтобы получить список бакетов в каталоге по умолчанию, выполните команду CLIyc storage bucket list
. -
--destination-bucket-object-prefix
— префикс, который будет присвоен объектам с аудитными логами в бакете. Необязательный параметр, участвует в полном имени файла аудитного лога.Примечание
Используйте префикс, если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
-
--filter-from-organisation-id
— идентификатор организации, которой принадлежит создаваемый трейл и для ресурсов которой будут собираться аудитные логи.При использовании параметра
--filter-from-organisation-id
необходимо также задать идентификаторы облаков в параметре--filter-some-cloud-ids
.Использование параметра
--filter-from-organisation-id
исключает использование параметра--filter-all-organisation-id
. -
--filter-some-cloud-ids
— список идентификаторов облаков, для ресурсов которых трейл будет собирать аудитные логи. Используйте этот параметр только в том случае, если задан параметр--filter-from-organisation-id
.Указанные в параметре облака должны принадлежать организации, заданной в параметре
--filter-from-organisation-id
.Если аудитные логи нужно собирать во всех облаках, принадлежащих организации, используйте параметр
--filter-all-organisation-id
. -
--filter-all-organisation-id
— идентификатор организации, которой принадлежит создаваемый трейл и для всех ресурсов во всех облаках которой будут собираться аудитные логи.Использование параметра
--filter-all-organisation-id
исключает использование параметра--filter-from-organisation-id
.
Результат:
done (1s) id: cnpe0gldjeq0******** folder_id: b1g9d2k0itu4******** created_at: "2024-03-31T16:54:56.187Z" updated_at: "2024-03-31T16:54:56.187Z" name: sample-trail description: My very first trail destination: object_storage: bucket_id: at-destination-bucket object_prefix: sample-trail-audit-logs service_account_id: ajeee339l4m5******** status: ACTIVE filter: path_filter: root: some_filter: resource: id: bpfaidqca8vd******** type: organization-manager.organization filters: - any_filter: resource: id: b1glti4eser3******** type: resource-manager.cloud - any_filter: resource: id: b1gssd27h7ra******** type: resource-manager.cloud event_filter: {} cloud_id: b1glti4eser3********
Подробнее о команде
yc audit-trails trail create
читайте в справочнике CLI. -
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры трейла, который будет собирать аудитные события ресурсов организации:
resource "yandex_audit_trails_trail" "basic_trail" { name = "<имя_трейла>" folder_id = "<идентификатор_каталога>" description = "<описание_трейла>" labels = { key = "value" } service_account_id = "<идентификатор_сервисного_аккаунта>" storage_destination { bucket_name = "<имя_бакета>" object_prefix = "<префикс_в_бакете>" } filter { path_filter { some_filter { resource_id = "<идентификатор_организации>" resource_type = "<тип_родительского_ресурса>" any_filters { resource_id = "<идентификатор_облака_1>" resource_type = "<тип_дочернего_ресурса>" } any_filters { resource_id = "<идентификатор_облака_2>" resource_type = "<тип_дочернего_ресурса>" } } } event_filters { service = "<идентификатор_сервиса_1>" categories { plane = "DATA_PLANE" type = "<тип_действия>" } path_filter { any_filter { resource_id = "<идентификатор_организации>" resource_type = "<тип_ресурса>" } } } event_filters { service = "<идентификатор_сервиса_2>" categories { plane = "DATA_PLANE" type = "<тип_действия>" } path_filter { any_filter { resource_id = "<идентификатор_организации>" resource_type = "<тип_ресурса>" } } } } }
Где:
-
name
— имя создаваемого трейла. Требования к формату имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
folder_id
— идентификатор каталога, в котором создается трейл. -
description
— описание трейла, которое позволит отличать его от других трейлов. НапримерMy very first trail
. Необязательный параметр. -
labels
— список меток в форматеключ=значение
. Необязательный параметр. -
service_account_id
— идентификатор сервисного аккаунта, от имени которого трейл будет загружать файлы аудитного лога в бакет.В зависимости от области сбора аудитных логов, сервисному аккаунту должна быть назначена роль
audit-trails.viewer
на организацию, облако или каталог, в которых трейл будет собирать аудитные логи.
storage_destination
— структура, описывающая целевой бакет.-
bucket_name
— имя бакета, в который будут загружаться аудитные логи.
Чтобы получить список бакетов в каталоге по умолчанию, выполните команду CLIyc storage bucket list
. -
object_prefix
— префикс, который будет присвоен объектам с аудитными логами в бакете. Необязательный параметр, участвует в полном имени файла аудитного лога.Примечание
Используйте префикс, если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
-
filter
— структура, описывающая обработку событий трейлом. Содержит объектыpath_filter
иevent_filters
.-
path_filter
— структура, описывающая обработку трейлом событий уровня конфигурации (Control Plane). Может содержать один объектsome_filter
или один объектany_filter
. Если в конфигурации отсутствует объектpath_filter
, трейл не будет обрабатывать события Control Plane.-
some_filter
— структура, описывающая ресурсы, для которых будут собираться аудитные логи. В зависимости от области сбора аудитных логов позволяет настроить обработку событий в отдельных облаках организации или каталогах облака, к которым относится трейл.-
resource_id
— идентификатор родительского ресурса, которому принадлежит создаваемый трейл и для ресурсов которого будут собираться аудитные логи. В зависимости от области сбора аудитных логов укажите в этом параметре идентификатор организации или идентификатор облака, к которому относится трейл. -
resource_type
— тип родительского ресурса Yandex Cloud, в котором создается трейл. В зависимости от области сбора аудитных логов укажите в этом параметре значениеorganization-manager.organization
илиresource-manager.cloud
. -
any_filters
— структура, описывающая один дочерний ресурс, в котором будут собираться аудитные логи. Чтобы указать несколько дочерних ресурсов, задайте параметрany_filters
необходимое количество раз. В зависимости от области сбора аудитных логов, указывайте в этом параметре информацию об облаках или каталогах, в которых трейл будет обрабатывать события:resource_id
— идентификатор дочернего ресурса. В зависимости от области сбора аудитных логов укажите идентификатор облака или каталога, в котором трейл будет собирать аудитные логи.resource_type
— тип дочернего ресурса. В зависимости от области сбора аудитных логов укажите в этом параметре значениеresource-manager.cloud
илиresource-manager.folder
.
Чтобы задать текущий каталог в качестве области сбора аудитных логов, вместо параметра
some_filter
используйте параметрany_filter
.Использование параметра
some_filter
исключает использование параметраany_filter
. -
-
any_filter
— структура, описывающая ресурсы, для которых будут собираться аудитные логи. В зависимости от области сбора аудитных логов позволяет настроить обработку событий во всех облаках организации, к которой относится трейл, во всех каталогах облака, к которому относится трейл, или в текущем каталоге, в котором создается трейл. Использование параметраany_filter
исключает использование параметраsome_filter
.resource_id
— идентификатор ресурса, которому принадлежит создаваемый трейл и для ресурсов которого будут собираться аудитные логи. В зависимости от области сбора аудитных логов укажите в этом параметре идентификатор организации, облака или каталога.resource_type
— тип ресурса Yandex Cloud. В зависимости от области сбора аудитных логов задайте значениеorganization-manager.organization
,resource-manager.cloud
илиresource-manager.folder
.
-
-
event_filters
— структура, описывающая обработку трейлом событий уровня сервисов (Data Plane). Если в конфигурации отсутствует объектevent_filters
, трейл не будет обрабатывать события Data Plane. В одном блокеevent_filters
настраивается обработка аудитных логов Data Plane для одного сервиса Yandex Cloud. Чтобы настроить обработку трейлом событий Data Plane для нескольких сервисов, укажите в конфигурации параметрevent_filters
необходимое количество раз.-
service
— идентификатор сервиса, в котором трейл будет обрабатывать события.
Возможные значения:dns
;kms
;lockbox
;mdb.mongodb
;mdb.mysql
;mdb.postgresql
;storage
.
-
categories
— структура, описывающая тип собираемых событий.plane
— уровень событий. Для событий уровня сервисов указывайте значениеDATA_PLANE
.type
— тип действия события в ресурсе. Возможные значения:READ
иWRITE
.
-
path_filter
— структура, описывающая обработку трейлом событий уровня сервисов (Data Plane). Может содержать один объектsome_filter
или один объектany_filter
.-
some_filter
— структура, описывающая ресурсы, для которых будут собираться аудитные логи. В зависимости от области сбора аудитных логов позволяет настроить обработку событий в отдельных облаках организации или каталогах облака, к которым относится трейл.-
resource_id
— идентификатор родительского ресурса, которому принадлежит создаваемый трейл и для ресурсов которого будут собираться аудитные логи. В зависимости от области сбора аудитных логов укажите в этом параметре идентификатор организации или идентификатор облака, к которому относится трейл. -
resource_type
— тип родительского ресурса Yandex Cloud, в котором создается трейл. В зависимости от области сбора аудитных логов укажите в этом параметре значениеorganization-manager.organization
илиresource-manager.cloud
. -
any_filters
— структура, описывающая один дочерний ресурс, в котором будут собираться аудитные логи. Чтобы указать несколько дочерних ресурсов, задайте параметрany_filters
необходимое количество раз. В зависимости от области сбора аудитных логов, указывайте в этом параметре информацию об облаках или каталогах, в которых трейл будет обрабатывать события:resource_id
— идентификатор дочернего ресурса. В зависимости от области сбора аудитных логов укажите идентификатор облака или каталога, в котором трейл будет собирать аудитные логи.resource_type
— тип дочернего ресурса. В зависимости от области сбора аудитных логов укажите в этом параметре значениеresource-manager.cloud
илиresource-manager.folder
.
Чтобы задать текущий каталог в качестве области сбора аудитных логов, вместо параметра
some_filter
используйте параметрany_filter
.Использование параметра
some_filter
исключает использование параметраany_filter
. -
-
any_filter
— структура, описывающая ресурсы, для которых будут собираться аудитные логи. В зависимости от области сбора аудитных логов позволяет настроить обработку событий во всех облаках организации, к которой относится трейл, во всех каталогах облака, к которому относится трейл, или в текущем каталоге, в котором создается трейл. Использование параметраany_filter
исключает использование параметраsome_filter
.resource_id
— идентификатор ресурса, которому принадлежит создаваемый трейл и для ресурсов которого будут собираться аудитные логи. В зависимости от области сбора аудитных логов укажите в этом параметре идентификатор организации, облака или каталога.resource_type
— тип ресурса Yandex Cloud. В зависимости от области сбора аудитных логов задайте значениеorganization-manager.organization
,resource-manager.cloud
илиresource-manager.folder
.
-
-
-
Более подробную информацию о параметрах ресурса
yandex_audit_trails_trail
в Terraform см. в документации провайдера . -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc audit-trails trail get <имя_трейла>
-
Воспользуйтесь методом REST API create для ресурса Trail или вызовом gRPC API TrailService/Create.
Просмотр аудитных логов
При загрузке аудитных логов в бакет Audit Trails формирует файлы аудитных логов приблизительно раз в 5 минут. Трейл запишет все события, которые произошли за это время с ресурсами организации, в один или несколько файлов. Если никакие события за этот период не произойдут, файлы не сформируются.
Удостоверьтесь, что файл аудитного лога существует в бакете, указанном при создании трейла.
Просмотр файлов аудитных логов
Audit Trails создает файлы логов в формате JSON
.
Получите доступ к содержимому файла аудитного лога одним из способов:
- Скачайте объект.
- Получите публичную ссылку на объект.
- Смонтируйте бакет через FUSE
: s3fs или goofys.
Экспорт аудитных логов в SIEM
Вы можете экспортировать файлы аудитных логов в ваше SIEM-решение.
Что дальше
- Узнайте больше о сервисе.
- Узнайте о типах аудитных логов.