Создание трейла для загрузки аудитных логов
Вы можете создать трейл, который будет загружать аудитные логи уровня конфигурации и уровня сервисов в один из объектов назначения:
- бакет Yandex Object Storage;
- лог-группу Yandex Cloud Logging;
- поток данных Yandex Data Streams.
Перед началом работы
В зависимости от выбранного объекта назначения для логов, подготовьте необходимую инфраструктуру для создания трейла:
-
Создайте бакет с ограниченным доступом, в который будут загружаться аудитные логи.
-
(Опционально) Включите шифрование для бакета.
Убедитесь, что у вашего аккаунта есть роль
kms.editor
на каталог, в котором будет создан ключ шифрования для бакета. -
Создайте сервисный аккаунт для трейла.
-
Назначьте роли сервисному аккаунту, чтобы трейл мог собирать и загружать логи:
-
storage.uploader
на бакет. -
kms.keys.encrypter
на ключ шифрования для бакета.Эта роль необходима, только если для бакета было включено шифрование.
-
audit-trails.viewer
на один из ресурсов, который определяет нужную область сбора логов:- Организация — чтобы собирать логи в выбранных облаках организации.
- Облако — чтобы собирать логи в выбранных каталогах облака.
- Каталог — чтобы собирать логи в этом каталоге.
Права доступа наследуются от родительского ресурса к дочерним. Например, если сервисному аккаунту назначить роль на облако, то трейл, использующий этот аккаунт, сможет собирать логи ресурсов во всех каталогах этого облака. Однако трейл не сможет собирать логи в других облаках, принадлежащих организации, — для этого потребуется назначить роль на организацию.
-
-
Убедитесь, что у вашего аккаунта есть необходимые роли для создания трейла:
- audit-trails.editor на каталог, в котором будет находиться трейл.
- iam.serviceAccounts.user на сервисный аккаунт для трейла.
-
Создайте лог-группу, в которую будут загружаться аудитные логи.
-
Создайте сервисный аккаунт для трейла.
-
Назначьте роли сервисному аккаунту, чтобы трейл мог собирать и загружать логи:
logging.writer
на лог-группу.
-
audit-trails.viewer
на один из ресурсов, который определяет нужную область сбора логов:- Организация — чтобы собирать логи в выбранных облаках организации.
- Облако — чтобы собирать логи в выбранных каталогах облака.
- Каталог — чтобы собирать логи в этом каталоге.
Права доступа наследуются от родительского ресурса к дочерним. Например, если сервисному аккаунту назначить роль на облако, то трейл, использующий этот аккаунт, сможет собирать логи ресурсов во всех каталогах этого облака. Однако трейл не сможет собирать логи в других облаках, принадлежащих организации, — для этого потребуется назначить роль на организацию.
-
Убедитесь, что у вашего аккаунта есть необходимые роли для создания трейла:
- audit-trails.editor на каталог, в котором будет находиться трейл.
- iam.serviceAccounts.user на сервисный аккаунт для трейла.
-
Создайте поток данных, в который будут загружаться аудитные логи.
-
Создайте сервисный аккаунт для трейла.
-
Назначьте роли сервисному аккаунту, чтобы трейл мог собирать и загружать логи:
yds.editor
на поток данных.
-
audit-trails.viewer
на один из ресурсов, который определяет нужную область сбора логов:- Организация — чтобы собирать логи в выбранных облаках организации.
- Облако — чтобы собирать логи в выбранных каталогах облака.
- Каталог — чтобы собирать логи в этом каталоге.
Права доступа наследуются от родительского ресурса к дочерним. Например, если сервисному аккаунту назначить роль на облако, то трейл, использующий этот аккаунт, сможет собирать логи ресурсов во всех каталогах этого облака. Однако трейл не сможет собирать логи в других облаках, принадлежащих организации, — для этого потребуется назначить роль на организацию.
-
Убедитесь, что у вашего аккаунта есть необходимые роли для создания трейла:
- audit-trails.editor на каталог, в котором будет находиться трейл.
- iam.serviceAccounts.user на сервисный аккаунт для трейла.
Создать трейл
-
В консоли управления
выберите каталог, в котором вы хотите разместить трейл. -
Выберите сервис Audit Trails.
-
Нажмите кнопку Создать трейл.
-
Введите имя трейла. Оно должно быть уникальным в рамках каталога.
-
(Опционально) Введите описание трейла.
-
В блоке Назначение выберите один из объектов назначения и укажите его настройки:
-
Object Storage — загружать аудитные логи в бакет Object Storage:
-
Бакет — имя бакета, который был создан ранее.
-
Префикс объекта — префикс, который будет присвоен объектам с аудитными логами в бакете. Необязательный параметр, участвует в полном имени файла аудитного лога.
Примечание
Используйте префикс, если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
-
Ключ шифрования — ключ шифрования для бакета. Выбирать его необходимо, только если для бакета было включено шифрование.
-
-
Cloud Logging — укажите имя лог-группы, которая была создана ранее. В нее будут загружаться аудитные логи.
-
Data Streams — укажите имя потока данных, который был создан ранее. В этот поток будут загружаться аудитные логи.
-
-
В блоке Сервисный аккаунт выберите созданный ранее сервисный аккаунт, от имени которого будет работать трейл.
-
Включите и настройте сбор событий с одного или двух уровней. Такие события попадут в аудитные логи.
Чтобы настроить Сбор событий c уровня конфигурации:
-
Выберите область сбора логов —
Организация
,Облако
илиКаталог
. События, которые попадут в логи, будут собираться в указанной области.Права сервисного аккаунта, созданного ранее, должны позволять сбор логов из указанной области.
-
В зависимости от выбранной области сбора логов, выберите конкретные облака или каталоги, с которых будут собираться события:
-
Для области сбора
Организация
выберите из выпадающего списка Облако одно или несколько облаков, с которых будут собираться события.Оставьте значение по умолчанию (
Все
), чтобы собирать события со всех облаков в организации. -
Для области сбора
Облако
выберите из выпадающего списка Каталог один или несколько каталогов, с которых будут собираться события.Оставьте значение по умолчанию (
Все
), чтобы собирать события со всех каталогов в облаке.
-
Чтобы настроить Сбор событий с уровня сервисов:
-
Выберите один или несколько сервисов, с которых будут собираться события.
-
Для каждого такого сервиса выберите область сбора логов —
Организация
,Облако
илиКаталог
. События, которые попадут в логи, будут собираться в указанной области.Права сервисного аккаунта, созданного ранее, должны позволять сбор логов из указанной области.
-
В зависимости от выбранной области сбора логов, выберите конкретные облака или каталоги, с которых будут собираться события:
-
Для области сбора
Организация
выберите из выпадающего списка Облако одно или несколько облаков, с которых будут собираться события.Оставьте значение по умолчанию (
Все
), чтобы собирать события со всех облаков в организации. -
Для области сбора
Облако
выберите из выпадающего списка Каталог один или несколько каталогов, с которых будут собираться события.Оставьте значение по умолчанию (
Все
), чтобы собирать события со всех каталогов в облаке.
-
-
Для каждого такого сервиса выберите один из следующих фильтров по событиям:
Получать все
— чтобы собирать все события сервиса.Выбранные
— чтобы собирать только выбранные события. Затем выберите события.Исключить
— чтобы собирать все события, кроме выбранных. Затем выберите события.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Посмотрите описание команды CLI для создания трейла, чтобы получить подробную информацию о доступных аргументах:
yc audit-trails trail create --help
Трейл можно создать, указав его параметры одним из двух способов:
В YAML-спецификации:
Создайте YAML-спецификацию, содержащую параметры трейла, и укажите этот файл в команде для создания трейла.
Этот способ упрощает работу с параметрами трейла и снижает вероятность ошибки. Кроме того, настроить регистрацию событий уровня сервисов можно только с помощью YAML-спецификации.
-
Создайте YAML-файл с конфигурацией трейла:
name: <имя_трейла> folder_id: <идентификатор_каталога> destination: # Должно быть указано только одно место назначения: # object_storage, cloud_logging, data_stream # Настройки для всех мест назначения приведены для иллюстрации object_storage: bucket_id: <имя_бакета> object_prefix: <префикс_для_объектов> cloud_logging: log_group_id: <идентификатор_лог_группы> data_stream: stream_name: <имя_потока_данных_YDS> database_id: <идентификатор_базы_данных_YDS> service_account_id: <идентификатор_сервисного_аккаунта> filtering_policy: management_events_filter: resource_scopes: - id: <идентификатор_организации_облака_или_каталога> type: <тип> data_events_filters: - service: <имя_сервиса> resource_scopes: - id: <идентификатор_организации_облака_или_каталога> type: <тип> # Допустимо указать либо included_events, либо excluded_events, # либо не указывать оба этих параметра, чтобы собирались все события сервиса # Оба параметра приведены для иллюстрации included_events: event_types: - <эти_события_будут_собираться> excluded_events: event_types: - <эти_события_не_будут_собираться>
Где:
-
name
— имя трейла. Оно должно быть уникальным в рамках каталога. -
folder_id
— идентификатор каталога, в котором будет размещен трейл. -
destination
— настройки выбранного места назначения, куда будут загружаться аудитные логи.Важно
Настройки мест назначения — взаимоисключающие. Использование одних настроек делает невозможным использование других.
-
object_storage
— загружать логи в бакет Yandex Object Storage:-
bucket_id
— имя созданного ранее бакета.Имя бакета можно запросить со списком бакетов в каталоге (используется каталог по умолчанию):
yc storage bucket list
-
object_prefix
— префикс, который будет присвоен объектам с аудитными логами в бакете. Необязательный параметр, участвует в полном имени файла аудитного лога.Примечание
Используйте префикс, если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
-
-
cloud_logging
— загружать логи в лог-группу Yandex Cloud Logging.В параметре
log_group_id
укажите идентификатор созданной ранее лог-группы. Идентификатор можно запросить со списком лог-групп в каталоге. -
data_stream
— загружать логи в поток данных Yandex Data Streams:stream_name
— имя созданного ранее потока данных. Имя можно запросить со списком потоков данных в каталоге.database_id
— идентификатор базы данных YDB, которая используется потоком данных Data Streams. Идентификатор можно запросить со списком баз данных YDB в каталоге.
-
-
service_account_id
— идентификатор созданного ранее сервисного аккаунта.
-
filtering_policy
— настройки политики фильтрации, которая определяет, какие события будут собираться и попадут в аудитные логи. Политика состоит из набора фильтров, которые относятся к разным уровням событий.Важно
Для политики обязательно должен быть настроен хотя бы один фильтр, иначе не получится создать трейл.
Доступные фильтры:
-
management_events_filter
— фильтр событий уровня конфигурации.Укажите область сбора логов в параметре
resource_scopes
:-
id
— идентификатор организации, облака или каталога. -
type
— тип области согласно указанному идентификатору:organization-manager.organization
— организация;resource-manager.cloud
— облако;resource-manager.folder
— каталог.
Можно комбинировать в одном параметре
resource_scopes
несколько областей, которые принадлежат одной организации. Например, собирать логи из одного облака целиком, а из другого — только из определенных каталогов:resource_scopes: # Сбор логов из облака 1 целиком - id: <идентификатор_облака_1> type: resource-manager.cloud # Сбор логов из каталога 1 облака 2 - id: <идентификатор_каталога_1> type: resource-manager.folder # Сбор логов из каталога 2 облака 2 - id: <идентификатор_каталога_2> type: resource-manager.folder
Права сервисного аккаунта должны позволять сбор логов из указанных областей.
-
-
data_events_filters
— фильтры событий уровня сервисов. Можно настроить несколько фильтров такого типа — по одному для каждого сервиса.Фильтр для одного сервиса имеет следующую структуру:
-
service
— имя сервиса. Его можно получить в справочнике событий уровня сервисов. -
resource_scopes
— места, откуда собирать события уровня сервисов. Этот параметр настраивается аналогично фильтру событий уровня конфигурации. -
*_events
— фильтры событий уровня сервиса:included_events.event_types
— собирать только указанные события.excluded_events.event_types
— собирать все события, кроме указанных.
Перечень событий можно получить в справочнике событий уровня сервисов.
Важно
Фильтры
included_events
иexcluded_events
взаимоисключающие, настройте только один из них. Если оба фильтра не настроены, будут собираться все события.
-
-
-
-
Выполните команду:
yc audit-trails trail create --file <путь_к_файлу>
В аргументах команды:
Используйте этот способ, если конфигурация трейла простая и содержит небольшое количество параметров.
Примечание
Настроить регистрацию событий уровня сервисов можно только с помощью YAML-спецификации.
Выполните команду:
yc audit-trails trail create \
--name <имя_трейла> \
--description <описание_трейла> \
--labels <список_меток> \
--service-account-id <идентификатор_сервисного_аккаунта> \
--destination-bucket <имя_бакета> \
--destination-bucket-object-prefix <префикс_для_объектов> \
--destination-log-group-id <идентификатор_лог_группы> \
--destination-yds-stream <имя_потока_данных_YDS> \
--destination-yds-database-id <идентификатор_базы_данных_YDS> \
--filter-all-folder-id <идентификатор_каталога> \
--filter-all-cloud-id <идентификатор_облака> \
--filter-all-organisation-id <идентификатор_организации> \
--filter-some-folder-ids <список_каталогов_в_облаке> \
--filter-from-cloud-id <идентификатор_облака_с_выбранными_каталогами> \
--filter-some-cloud-ids <список_облаков_в_организации> \
--filter-from-organisation-id <идентификатор_организации_с_выбранными_облаками>
Где:
--name
— имя создаваемого трейла.
-
--description
— описание трейла. Необязательный параметр. -
--labels
— список меток. Необязательный параметр. Можно указать одну или несколько меток через запятую в формате<ключ1>=<значение1>,<ключ2>=<значение2>
. -
--service-account-id
— идентификатор сервисного аккаунта. -
--destination-bucket
— имя бакета Yandex Object Storage, в который будут загружаться аудитные логи.С этим параметром нельзя использовать параметры
--destination-log-group-id
и--destination-yds-stream
. -
--destination-bucket-object-prefix
— префикс, который будет присвоен объектам с аудитными логами в бакете. Необязательный параметр, участвует в полном имени файла аудитного лога.Примечание
Используйте префикс, если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
-
--destination-log-group-id
— идентификатор лог-группы Yandex Cloud Logging, в которую будут загружаться аудитные логи.С этим параметром нельзя использовать параметры
--destination-bucket
и--destination-yds-stream
. -
--destination-yds-stream
— имя потока данных Yandex Data Streams, в который будут загружаться аудитные логи.С этим параметром нельзя использовать параметры
--destination-bucket
и--destination-log-group-id
. -
--destination-yds-database-id
— идентификатор базы данных YDB, которая используется потоком данных Data Streams. -
--filter-all-folder-id
— идентификатор каталога, для всех ресурсов которого будут регистрироваться события уровня конфигурации. -
--filter-all-cloud-id
— идентификатор облака, для всех ресурсов которого будут регистрироваться события уровня конфигурации. -
--filter-all-organisation-id
— идентификатор организации, для всех ресурсов которой будут регистрироваться события уровня конфигурации. -
--filter-some-folder-ids
— список идентификаторов каталогов, для всех ресурсов которых будут регистрироваться события уровня конфигурации в облаке, заданном в поле--filter-from-cloud-id
.Параметр используется только в паре с параметром
--filter-from-cloud-id
. -
--filter-from-cloud-id
— идентификатор облака, в котором находятся каталоги, заданные в параметре--filter-some-folder-ids
.Параметр используется только в паре с параметром
--filter-some-folder-ids
. -
--filter-some-cloud-ids
— список идентификаторов облаков, для всех ресурсов которых будут регистрироваться события уровня конфигурации в организации, заданной в поле--filter-from-organisation-id
.Параметр используется только в паре с параметром
--filter-from-organisation-id
. -
--filter-from-organisation-id
— идентификатор организации, в которой находятся облака, заданные в параметре--filter-some-folder-ids
.Параметр используется только в паре с параметром
--filter-some-cloud-ids
.
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 , logging_destination, data_stream_destination # Настройки для всех мест назначения приведены для иллюстрации logging_destination { log_group_id = "<идентификатор_лог-группы>" } storage_destination { bucket_name = "<идентификатор_бакета>" object_prefix = "<префикс>" } data_stream_destination { database_id = "<идентификатор_базы_данных_YDS>" stream_name = "<имя_потока_данных_YDS>" } # Настройки политики фильтрации filtering_policy { management_events_filter { resource_scope { resource_id = "<идентификатор_организации>" resource_type = "resource-manager.organization" } } data_events_filter { service = "<сервис>" included_events = ["<тип_событий_сервиса>","<тип_событий_сервиса_2>"] resource_scope { resource_id = "<идентификатор_облака>" resource_type = "resource-manager.cloud" } resource_scope { resource_id = "<идентификатор_каталога>" resource_type = "resource-manager.folder" } } data_events_filter { service = "<сервис_2>" resource_scope { resource_id = "<идентификатор_облака_2>" resource_type = "resource-manager.cloud" } resource_scope { resource_id = "<идентификатор_облака_3>" resource_type = "resource-manager.cloud" } } data_events_filter { service = "<сервис_3>" resource_scope { resource_id = "<идентификатор_каталога_2>" resource_type = "resource-manager.folder" } resource_scope { resource_id = "<идентификатор_каталога_3>" resource_type = "resource-manager.folder" } } } }
Где:
-
name
— имя создаваемого трейла. Требования к формату имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
folder_id
— идентификатор каталога, в котором создается трейл. -
description
— описание трейла, которое позволит отличать его от других трейлов. НапримерMy very first trail
. Необязательный параметр. -
labels
— список меток в форматеключ=значение
. Необязательный параметр. -
service_account_id
— идентификатор сервисного аккаунта, от имени которого трейл будет загружать файлы аудитного лога в бакет.В зависимости от области сбора аудитных логов, сервисному аккаунту должна быть назначена роль
audit-trails.viewer
на организацию, облако или каталог, в которых трейл будет собирать аудитные логи.
Важно
Должно быть указано только одно место назначения:
storage_destination
,logging_destination
илиdata_stream_destination
.-
logging_destination
— загружать логи в лог-группу Yandex Cloud Logging.log_group_id
— идентификатор лог-группы, в которую трейл будет сохранять аудитные логи.
-
storage_destination
— загружать логи в бакет Yandex Object Storage:-
bucket_name
— имя бакета, куда трейл будет сохранять аудитные логи. -
object_prefix
— префикс, который будет присвоен объектам с аудитными логами в бакете. Необязательный параметр, участвует в полном имени файла аудитного лога.Примечание
Используйте префикс, если вы храните аудитные логи и сторонние данные в одном и том же бакете. Не используйте одинаковый префикс для логов и других объектов в бакете, так как в этом случае логи и сторонние объекты могут перезаписать друг друга.
-
-
data_stream_destination
— загружать логи в поток данных Yandex Data Streams:stream_name
— имя потока данных, в который трейл будет сохранять аудитные логи.database_id
— идентификатор базы данных Yandex Managed Service for YDB, которая используется потоком данных Data Streams.
-
filtering_policy
— настройки политики фильтрации, которая определяет, какие события будут собираться и попадут в аудитные логи. Политика состоит из набора фильтров, которые относятся к разным уровням событий. Содержит объектыmanagement_events_filter
иdata_events_filters
.-
management_events_filter
— фильтр событий уровня конфигурации. -
resource_scopes
— область сбора логов. Можно комбинировать в одном параметреresource_scopes
несколько областей, которые принадлежат одной организации. Например, собирать логи из одного облака целиком, а из другого — только из определенных каталогов. Права сервисного аккаунта должны позволять сбор логов из указанных областей.-
resource_id
— идентификатор ресурса, для ресурсов которого будут собираться аудитные логи. В зависимости от области сбора аудитных логов укажите в этом параметре идентификатор организации или идентификатор облака. -
resource_type
— тип области согласно указанному идентификатору:organization-manager.organization
— организация;resource-manager.cloud
— облако;resource-manager.folder
— каталог.
-
-
data_events_filters
— фильтры событий уровня сервисов. Можно настроить несколько фильтров такого типа — по одному для каждого сервиса. Фильтр для одного сервиса имеет следующую структуру:service
— имя сервиса, в котором трейл будет обрабатывать события. Его можно получить в справочнике событий уровня сервисов).resource_scopes
— места, откуда собирать события уровня сервисов. Этот параметр настраивается аналогично фильтру событий уровня конфигурации.included_events
— собирать только указанные события. Необязательный параметр. Если не указать, то будут собираться все события. Вместоincluded_events
можно указатьexcluded_events
— собирать все события, кроме указанных. Эти параметры — взаимоисключающие.
Полный перечень событий можно получить в справочнике событий уровня сервисов.
-
Более подробную информацию о параметрах ресурса
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.
Трейл создастся и начнет загружать аудитные логи в выбранный объект назначения.
При загрузке в Cloud Logging события в лог-группе могут дублироваться. Чтобы найти дубли, ориентируйтесь на уникальный идентификатор записи json_payload.event_id
.
Примеры
Создание трейла с фильтрами событий уровня конфигурации и уровня сервисов
Создайте трейл со следующими параметрами:
-
Имя трейла —
sample-trail-all-planes
. -
Каталог, в котором будет размещен трейл — каталог с идентификатором
folder0***
. -
Объект назначения — бакет Object Storage с именем
sample-logs-bucket
. -
Сервисный аккаунт для трейла — аккаунт с идентификатором
service0***
. -
Настройки фильтра событий уровня конфигурации:
В качестве области сбора логов выбрана организация с идентификатором
org1***
. Логи будут собираться из всех облаков, которые принадлежат этой организации. -
Настройки фильтров событий уровня сервиса:
-
Для сервиса Managed Service for PostgreSQL логи будут собираться из облака с идентификатором
cloud1***
и каталога с идентификаторомfolder1***
.Будут собираться все события сервиса, кроме следующих:
yandex.cloud.audit.mdb.postgresql.CreateDatabase
,yandex.cloud.audit.mdb.postgresql.UpdateDatabase
.
-
Для сервиса Object Storage логи будут собираться из облаков с идентификаторами
cloud2***
иcloud3***
.Будут собираться только следующие события сервиса:
yandex.cloud.audit.storage.ObjectCreate
,yandex.cloud.audit.storage.ObjectUpdate
,yandex.cloud.audit.storage.ObjectDelete
.
-
Для сервиса Compute Cloud логи будут собираться из каталогов с идентификаторами
folder2***
иfolder3***
.Будут собираться все события сервиса.
-
-
Создайте YAML-файл
sample-trail-all-planes.yaml
с конфигурацией трейла.sample-trail-all-planes.yaml
name: sample-trail-all-planes folder_id: folder0*** destination: object_storage: bucket_id: sample-logs-bucket service_account_id: service0*** filtering_policy: management_events_filter: resource_scopes: - id: org1*** type: organization-manager.organization data_events_filters: - service: mdb.postgresql resource_scopes: - id: cloud1*** type: resource-manager.cloud - id: folder1*** type: resource-manager.folder excluded_events: event_types: - yandex.cloud.audit.mdb.postgresql.CreateDatabase - yandex.cloud.audit.mdb.postgresql.UpdateDatabase - service: storage resource_scopes: - id: cloud2*** type: resource-manager.cloud - id: cloud3*** type: resource-manager.cloud included_events: event_types: - yandex.cloud.audit.storage.ObjectCreate - yandex.cloud.audit.storage.ObjectUpdate - yandex.cloud.audit.storage.ObjectDelete - service: compute resource_scopes: - id: folder2*** type: resource-manager.folder - id: folder3*** type: resource-manager.folder
-
Выполните команду:
yc audit-trails trail create --file sample-trail-all-planes.yaml
Будет создан трейл с указанными параметрами.
-
Опишите в конфигурационном файле Terraform параметры создаваемого трейла:
resource "yandex_audit_trails_trail" "basic_trail" { name = "sample-trail-all-planes" folder_id = "folder0***" service_account_id = "service0***" storage_destination { bucket_name = "sample-logs-bucket" } filtering_policy { management_events_filter { resource_scope { resource_id = "org1***" resource_type = "resource-manager.organization" } } data_events_filter { service = "mdb.postgresql" excluded_events = ["yandex.cloud.audit.mdb.postgresql.CreateDatabase","yandex.cloud.audit.mdb.postgresql.UpdateDatabase"] resource_scope { resource_id = "cloud1***" resource_type = "resource-manager.cloud" } resource_scope { resource_id = "folder1***" resource_type = "resource-manager.folder" } } data_events_filter { service = "storage" resource_scope { resource_id = "cloud2***" resource_type = "resource-manager.cloud" } resource_scope { resource_id = "cloud3***" resource_type = "resource-manager.cloud" } } data_events_filter { service = "compute" resource_scope { resource_id = "folder2***" resource_type = "resource-manager.folder" } resource_scope { resource_id = "folder3***" resource_type = "resource-manager.folder" } } } }
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Будет создан трейл с указанными параметрами. Проверить появление трейла можно в консоли управления
или с помощью команды CLI:yc audit-trails trail get sample-trail-all-planes
-
Воспользуйтесь методом REST API create для ресурса Trail.
Чтобы воспользоваться примерами, установите cURL
Пример ниже разработан для выполнения в операционных системах MacOS и Linux. Чтобы выполнить его в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.
-
Получите IAM-токен, чтобы аутентифицироваться в API.
-
Сохраните полученный IAM-токен в переменную, выполните в терминале:
export IAM_TOKEN=<IAM-токен>
-
Подготовьте файл
body.json
с телом запроса и описанием создаваемого трейла:{ "folderId": "folder0**", "name": "sample-trail-all-planes", "description": "sample-trail", "destination": { "objectStorage": { "bucketId": "sample-logs-bucket" } }, "serviceAccountId": "service0***", "filteringPolicy": { "managementEventsFilter": { "resourceScopes": [ { "id": "org1***", "type": "resource-manager.organization" } ] }, "dataEventsFilters": [ { "service": "mdb.postgresql", "excludedEvents": { "eventTypes": [ "yandex.cloud.audit.mdb.postgresql.CreateDatabase" ,"yandex.cloud.audit.mdb.postgresql.UpdateDatabase" ] }, "resourceScopes": [ { "id": "cloud1***", "type": "resource-manager.cloud" }, { "id": "folder1***", "type": "resource-manager.folder" } ] }, { "service": "storage", "resourceScopes": [ { "id": "cloud2**", "type": "resource-manager.cloud" }, { "id": "cloud3**", "type": "resource-manager.cloud" } ] }, { "service": "compute", "resourceScopes": [ { "id": "folder2**", "type": "resource-manager.folder" }, { "id": "folder3**", "type": "resource-manager.folder" } ] } ] } }
-
Выполните в терминале запрос:
curl \ --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data "@<файл_с_телом_запроса>" \ https://audittrails.api.cloud.yandex.net/audit-trails/v1/trails
Где:
<файл_с_телом_запроса>
— путь к созданному ранее файлу с телом запросаbody.json
.
Результат:
{ "done": true, "metadata": { "@type": "type.googleapis.com/yandex.cloud.audittrails.v1.CreateTrailMetadata", "trailId": "cnpvprd5pa66********" }, "id": "cnp9qb9g8ldb********", "description": "operation_create", "createdAt": "2025-02-20T07:06:18.547321903Z", "createdBy": "ajevfb0tjfts********", "modifiedAt": "2025-02-20T07:06:18.547321903Z" }
Что дальше
- Узнайте о формате аудитных логов.
- Узнайте о порядке загрузки аудитных логов в SIEM.
- Узнайте о поиске событий в аудитных логах.