Журнал аудита dbt
Для просмотра действий, выполняемых пользователями в вашем аккаунте, dbt предоставляет журналы аудируемых пользовательских и системных событий в реальном времени. Журнал аудита пополняется по мере возникновения событий и содержит такие сведения, как кто выполнил действие, что это было за действие и когда оно было выполнено. Вы можете использовать эти сведения для устранения проблем с доступом, проведения аудита безопасности или анализа конкретных событий. Вы также можете запрашивать и экспортировать события журнала аудита через API.
Для доступа к журналу аудита необходимо иметь роль Администратор аккаунта, Наблюдатель аккаунта или Администратор безопасности, а сама функция доступна только на тарифных планах Enterprise.
Журнал аудита dbt хранит все события, произошедшие в вашем аккаунте, в реальном времени, включая:
- Для событий за последние 90 дней журнал аудита dbt предоставляет выбираемый диапазон дат со списком сработавших событий.
- Для событий старше 90 дней Администраторы аккаунта, Наблюдатели аккаунта и Администраторы безопасности могут экспортировать все события с помощью Экспортировать все.
Обратите внимание, что срок хранения событий в журнале аудита составляет не менее 12 месяцев.
Доступ к журналу аудита
Чтобы открыть журнал аудита, нажмите на имя вашей учетной записи в левом меню и выберите Account settings. Затем нажмите Audit log в левой боковой панели.
Понимание журнала аудита
На странице журнала аудита вы увидите список различных событий и связанных с ними данных. Для каждого из этих событий в dbt отображается следующая информация:
- Название события: Действие, которое было инициировано
- Инициатор: Пользователь, инициировавший это действие/событие
- Метка времени: Локальная метка времени возникновения события
Детали события
Нажмите на карточку события, чтобы просмотреть сведения о действии, вызвавшем событие. В этом представлении содержатся важные сведения, в том числе о том, когда это произошло и какой тип события был инициирован. Например, если кто-то изменит настройки задания, вы можете использовать сведения о событии, чтобы узнать, какое задание было изменено (тип события: job_definition.changed), кем (пользователь, инициировавший событие: actor) и когда (время возникновения события: created_at). Типы событий и их описания приведены в разделе События в журнале аудита.
Детали события включают ключевые параметры события:
| Название | Описание |
|---|---|
| account_id | ID учетной записи, в которой произошло событие |
| actor | Исполнитель события — пользователь или сервис |
| actor_id | Уникальный ID исполнителя |
| actor_ip | IP-адрес исполнителя |
| actor_name | Идентифицирующее имя исполнителя |
| actor_type | Было ли действие выполнено пользователем или API-запросом |
| created_at | Временная метка UTC, когда произошло событие |
| event_type | Уникальный ключ, идентифицирующий событие |
| event_context | Значение этого ключа отличается для каждого события и соответствует event_type. Эти данные содержат все детали об объекте (или объектах), которые были изменены |
| id | Уникальный ID события |
| service | Сервис, который выполнил действие |
| source | Источник события — UI dbt или API |
События журнала аудита
Журнал аудита поддерживает различные события для разных объектов в dbt. Здесь вы найдете события, связанные с аутентификацией, окружениями, заданиями, сервисными токенами, группами, пользователями, проектами, правами доступа, лицензиями, подключениями, репозиториями и учетными данными.
Аутентификация
| Название события | Тип события | Описание |
|---|---|---|
| Токен доступа выдан | access_token.issued | dbt выдал токен доступа после входа через OAuth (например, расширение VS Code или сервер Model Context Protocol (MCP)). |
| Auth Provider Changed | auth_provider.changed | Изменены настройки провайдера аутентификации |
| Credential Login Succeeded | login.password.succeeded | Пользователь успешно вошел с логином и паролем |
| Токен обновления выдан | refresh_token.issued | dbt выдал токен обновления после входа через OAuth (например, расширение VS Code или сервер MCP). |
| Ошибка входа через SSO | login.sso.failed | Пользователю не удалось войти через SSO |
| Успешный вход через SSO | login.sso.succeeded | Пользователь успешно вошел через SSO |
Клиенты OAuth
Эти события охватывают жизненный цикл клиентов OAuth, зарегистрированных в разделе Настройки аккаунта → Интеграции → Интеграции приложений (см. Подключение приложений с помощью OAuth). Действия, которые пользователь выполняет через клиент, подключенный по OAuth (например, создание задания), регистрируются как соответствующее событие (например, job_definition.added), а пользователь указывается в качестве инициатора.
| Название события | Тип события | Описание |
|---|---|---|
| Авторизация клиента одобрена | oauth_client.authorization_approved | Пользователь одобрил запрос согласия OAuth для клиента. |
| Авторизация клиента отклонена | oauth_client.authorization_denied | Пользователь отклонил запрос согласия OAuth для клиента. |
| Клиент авторизован | oauth_client.authorized | Пользователь завершил процедуру предоставления согласия OAuth и разрешил клиенту доступ к dbt от своего имени. |
| Клиент зарегистрирован | oauth_client.registered | Клиент OAuth был зарегистрирован вручную администратором или динамически через RFC 7591. |
| Клиент удален | oauth_client.removed | Клиент OAuth был удален из раздела Настройки аккаунта → Интеграции → Интеграции приложений. |
Среда
| Название события | Тип события | Описание |
|---|---|---|
| Environment Added | environment.added | Новое окружение успешно создано |
| Environment Changed | environment.changed | Изменены настройки окружения |
| Environment Removed | environment.removed | Окружение успешно удалено |
Задания
| Название события | Тип события | Описание |
|---|---|---|
| Job Added | job_definition.added | Новое задание успешно создано |
| Job Changed | job_definition.changed | Изменены настройки задания |
| Job Removed | job_definition.removed | Определение задания удалено |
Сервисный токен
| Название события | Тип события | Описание |
|---|---|---|
| Service Token Created | service_token.created | Новый Service Token успешно создан |
| Service Token Revoked | service_token.revoked | Service Token был отозван |
Группа
| Название события | Тип события | Описание |
|---|---|---|
| Group Added | group.added | Новая группа успешно создана |
| Group Changed | group.changed | Изменены настройки группы |
| Group Removed | group.removed | Группа успешно удалена |
Пользователь
| Название события | Тип события | Описание |
|---|---|---|
| Invite Added | user.invite.added | Приглашение пользователя добавлено и отправлено |
| Invite Redeemed | user.invite.redeemed | Пользователь принял приглашение |
| User Added to Account | user.added | Новый пользователь добавлен в учетную запись |
| User Added to Group | group.user.added | Существующий пользователь добавлен в группу |
| User Removed from Account | user.removed | Пользователь удален из учетной записи |
| User Removed from Group | group.user.removed | Существующий пользователь удален из группы |
| User License Created | user_license.added | Использована новая пользовательская лицензия |
| User License Removed | user_license.removed | Пользовательская лицензия удалена из количества мест |
| Verification Email Confirmed | user.jit.email.confirmed | Пользователь подтвердил адрес электронной почты |
| Письмо для подтверждения отправлено | user.jit.email.sent | Письмо для подтверждения адреса электронной почты отправлено пользователю, созданному через JIT |
Проект
| Название события | Тип события | Описание |
|---|---|---|
| Project Added | project.added | Добавлен новый проект |
| Project Changed | project.changed | Изменены настройки проекта |
| Project Removed | project.removed | Проект удален |
Разрешения
| Название события | Тип события | Описание |
|---|---|---|
| User Permission Added | permission.added | Добавлены новые права пользователя |
| User Permission Removed | permission.removed | Права пользователя удалены |
Лицензия
| Название события | Тип события | Описание |
|---|---|---|
| License Mapping Added | license_map.added | Добавлено новое сопоставление пользовательской лицензии |
| License Mapping Changed | license_map.changed | Изменены настройки сопоставления лицензии |
| License Mapping Removed | license_map.removed | Сопоставление лицензии удалено |
Подключение
| Название события | Тип события | Описание |
|---|---|---|
| Connection Added | connection.added | Добавлено новое подключение к хранилищу данных |
| Connection Changed | connection.changed | Изменены настройки подключения к хранилищу данных |
| Connection Removed | connection.removed | Подключение к хранилищу данных удалено |
Репозиторий
| Название события | Тип события | Описание |
|---|---|---|
| Repository Added | repository.added | Добавлен новый репозиторий |
| Repository Changed | repository.changed | Изменены настройки репозитория |
| Repository Removed | repository.removed | Репозиторий удален |
Учётные данные
| Название события | Тип события | Описание |
|---|---|---|
| Credentials Added to Project | credentials.added | Учетные данные добавлены в проект |
| Credentials Changed in Project | credentials.changed | Учетные данные изменены в проекте |
| Credentials Removed from Project | credentials.removed | Учетные данные удалены из проекта |
Интеграция с Git
| Название события | Тип события | Описание |
|---|---|---|
| GitLab Application Changed | gitlab_application.changed | Изменена конфигурация GitLab в dbt |
Вебхуки
| Название события | Тип события | Описание |
|---|---|---|
| Webhook Subscriptions Added | webhook_subscription.added | Новый webhook настроен в параметрах |
| Webhook Subscriptions Changed | webhook_subscription.changed | Изменена существующая конфигурация webhook |
| Webhook Subscriptions Removed | webhook_subscription.removed | Существующий webhook удален |
Семантический слой
| Название события | Тип события | Описание |
|---|---|---|
| Конфигурация Semantic Layer добавлена | semantic_layer_config.added | Конфигурация Semantic Layer добавлена |
| Конфигурация Semantic Layer изменена | semantic_layer_config.changed | Конфигурация Semantic Layer (не связанная с учетными данными) изменена |
| Конфигурация Semantic Layer удалена | semantic_layer_config.removed | Конфигурация Semantic Layer удалена |
| Учетные данные Semantic Layer добавлены | semantic_layer_credentials.added | Учетные данные Semantic Layer добавлены |
| Учетные данные Semantic Layer изменены | semantic_layer_credentials.changed | Учетные данные Semantic Layer изменены. Не вызывает semantic_layer_config.changed |
| Учетные данные Semantic Layer удалены | semantic_layer_credentials.removed | Учетные данные Semantic Layer удалены |
Расширенные атрибуты
| Название события | Тип события | Описание |
|---|---|---|
| Extended Attribute Added | extended_attributes.added | Расширенный атрибут добавлен в проект |
| Extended Attribute Changed | extended_attributes.changed | Расширенный атрибут изменен или удален |
Персональный токен доступа на уровне аккаунта
| Название события | Тип события | Описание |
|---|---|---|
| Account Scoped Personal Access Token Created | account_scoped_pat.created | Создан PAT с областью действия на уровне аккаунта |
| Account Scoped Personal Access Token Deleted | account_scoped_pat.deleted | PAT с областью действия на уровне аккаунта удален |
Ограничения по IP
| Название события | Тип события | Описание |
|---|---|---|
| IP Restrictions Toggled | ip_restrictions.toggled | Функция IP-ограничений включена или отключена |
| IP Restrictions Rule Added | ip_restrictions.rule.added | Создано правило IP-ограничений |
| IP Restrictions Rule Changed | ip_restrictions.rule.changed | Отредактировано правило IP-ограничений |
| IP Restrictions Rule Removed | ip_restrictions.rule.removed | Правило IP-ограничений удалено |
SCIM
| Название события | Тип события | Описание |
|---|---|---|
| User Creation | v1.events.account.UserAdded | Новый пользователь создан сервисом SCIM |
| Обновление пользователя | v1.events.account.UserUpdated | Запись пользователя обновлена службой SCIM |
| Удаление пользователя | v1.events.account.UserRemoved | Пользователь удален службой SCIM |
| Group Creation | v1.events.user_group.Added | Новая группа создана сервисом SCIM |
| Group Update | v1.events.user_group_user.Changed | Состав группы обновлен сервисом SCIM |
| Group Removal | v1.events.user_group.Removed | Группа удалена сервисом SCIM |
Поиск в журнале аудита
Вы можете искать в журнале аудита конкретное событие или инициатора, при этом поиск ограничен событиями и инициаторами, перечисленными в разделе События в журнале аудита. Журнал аудита содержит историю событий за последние 90 дней. Вы можете найти инициатора или событие с помощью строки поиска, а затем сузить результаты, указав временной интервал.
Экспорт журналов
Вы можете использовать журнал аудита для экспорта всех исторических результатов аудита в целях безопасности, соответствия требованиям и анализа. События в журнале аудита хранятся не менее 12 месяцев.
-
Для событий за последние 90 дней: dbt автоматически отобразит доступный для выбора диапазон дат за 90 дней. Выберите Экспортировать выбранное, чтобы скачать CSV-файл со всеми событиями, произошедшими в вашем аккаунте за последние 90 дней.
-
Для событий старше 90 дней: Выберите Экспортировать все. Администратор аккаунта, Наблюдатель аккаунта или Администратор безопасности получит по электронной почте ссылку для скачивания CSV-файла со всеми событиями, произошедшими в вашем аккаунте.
Использование API
Вы также можете запрашивать и экспортировать события журнала аудита с помощью API администрирования v3. Используйте API, если вам нужно получать данные аудита для скрипта, задания по расписанию или инструментов мониторинга безопасности или агрегации журналов. К API применяются те же требования к доступу, которые указаны в начале этой страницы. Типовые подходы к автоматизации описаны в разделе Типовые сценарии автоматизации.
| Если вы хотите… | См. раздел |
|---|---|
| Получать недавние события для скрипта или SIEM | Запрос событий |
| Экспортировать диапазон дат в CSV | Скачивание CSV |
| Экспортировать всю историю | Массовый экспорт |
Для аутентификации используйте сервисный токен или персональный токен доступа, передаваемый как Authorization: Bearer YOUR_TOKEN или Token YOUR_TOKEN.
Для массового экспорта требуется персональный токен доступа, поскольку сервисные токены на этом этапе не поддерживаются.
Если параметры дат не указаны, запросы на получение списка и скачивание CSV по умолчанию охватывают последние 90 дней.
В следующих примерах замените YOUR_ACCESS_URL на ваш URL доступа к dbt, ACCOUNT_ID на идентификатор вашего аккаунта, а YOUR_TOKEN на ваш токен. Идентификатор аккаунта можно найти в разделе Настройки аккаунта, а дополнительную информацию — в разделе Поиск идентификаторов пользователя и аккаунта.
Запрос событий
Чтобы получить события журнала аудита в формате JSON, отправьте запрос GET на /api/v3/accounts/ACCOUNT_ID/audit-logs/:
curl --request GET \
--url 'https://YOUR_ACCESS_URL/api/v3/accounts/ACCOUNT_ID/audit-logs/?logged_at_start=2024-01-01&logged_at_end=2024-01-31&limit=10&offset=0' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_TOKEN'
Ответ содержит массив событий data с такими сведениями, как event_type, event_label, actor, created_at и event_context. Используйте logged_at_start и logged_at_end для фильтрации по диапазону дат, а limit и offset для постраничного просмотра результатов. Дополнительные параметры приведены в разделе Список недавних событий журнала аудита справочника API.
Скачивание CSV
Чтобы скачать события журнала аудита в виде CSV-файла, отправьте запрос GET на /api/v3/accounts/ACCOUNT_ID/audit-logs/download/. Это эквивалент действия Экспортировать выбранное в пользовательском интерфейсе через API:
curl --request GET \
--url 'https://YOUR_ACCESS_URL/api/v3/accounts/ACCOUNT_ID/audit-logs/download/?logged_at_start=2024-01-01&logged_at_end=2024-01-31' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--output audit-log.csv
Вы можете использовать те же параметры запроса logged_at_start и logged_at_end, что и для конечной точки получения списка.
Массовый экспорт
Чтобы экспортировать всю историю журнала аудита через API, используйте ту же последовательность действий, что и для Экспортировать все в пользовательском интерфейсе:
- Отправьте запрос на экспорт методом
POSTна/api/v3/accounts/ACCOUNT_ID/audit-logs/export/. В ответе возвращаетсяjob_idв объектеdata(data.job_id). На этом этапе используйте персональный токен доступа.
curl --request POST \
--url 'https://YOUR_ACCESS_URL/api/v3/accounts/ACCOUNT_ID/audit-logs/export/' \
--header 'Authorization: Bearer YOUR_TOKEN'
- Проверьте статус экспорта с помощью
GETна/api/v3/accounts/ACCOUNT_ID/audit-logs/export/. Повторяйте этот запрос, пока значениеis_runningв объектеdataне станетfalse.
curl --request GET \
--url 'https://YOUR_ACCESS_URL/api/v3/accounts/ACCOUNT_ID/audit-logs/export/' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_TOKEN'
- Получите URL для скачивания с помощью
GETна/api/v3/accounts/ACCOUNT_ID/audit-logs/export/JOB_ID/download/. Ответ содержитdownload_urlв объектеdata(data.download_url). Используйтеjob_idиз шага 1 в качествеJOB_IDв URL.
curl --request GET \
--url 'https://YOUR_ACCESS_URL/api/v3/accounts/ACCOUNT_ID/audit-logs/export/JOB_ID/download/' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_TOKEN'
- Скачайте CSV-файл по адресу
download_url, полученному на шаге 3 (data.download_url):
curl --request GET \
--url 'DOWNLOAD_URL' \
--output audit-log-full.csv
Типовые сценарии автоматизации
Команды часто автоматизируют доступ к журналу аудита несколькими способами:
- Получение новых событий по расписанию: Вызывайте конечную точку получения списка по расписанию с параметрами
logged_at_startиlogged_at_end, чтобы получать новые события с момента последнего запуска, а затем загружайте JSON в инструменты мониторинга безопасности или агрегации журналов. - Периодический экспорт CSV: Используйте конечную точку скачивания для экспорта диапазона дат в CSV для архивирования в целях соблюдения нормативных требований или анализа.
- Экспорт всей истории: Используйте процедуру массового экспорта, когда требуется программно получить всю историю журнала аудита, аналогично действию Экспортировать все в пользовательском интерфейсе.
Подробные сведения о конечных точках приведены в справочнике API администрирования v3.

