Настройка BigQuery OAuth EnterpriseEnterprise +
В этом руководстве описывается функциональность, доступная на тарифах dbt Enterprise и Enterprise+. Если вы хотите узнать больше о наших тарифах уровня Enterprise, свяжитесь с нами по адресу sales@getdbt.com.
dbt поддерживает OAuth для BigQuery, предоставляя дополнительный уровень безопасности для корпоративных пользователей dbt.
Настройка нативного OAuth BigQuery
Когда BigQuery OAuth включен для проекта dbt, все разработчики dbt должны аутентифицироваться в BigQuery для доступа к инструментам разработки, таким как Studio IDE.
Чтобы настроить BigQuery OAuth в dbt, администратор BigQuery должен:
- Найти значение redirect URI в dbt.
- Создать OAuth 2.0 client ID и secret для BigQuery в BigQuery.
- Сконфигурировать подключение в dbt.
Чтобы использовать BigQuery в Studio IDE, всем разработчикам необходимо:
- Аутентифицироваться в BigQuery в своих учетных данных профиля.
Найдите значение redirect URI
Для начала найдите redirect URI подключения, необходимый для настройки BigQuery OAuth. Для этого:
- Перейдите к имени вашего аккаунта над иконкой профиля на левой боковой панели.
- Выберите Account settings в меню.
- В левой боковой панели выберите Connections.
- Нажмите на подключение BigQuery.
- Найдите поле Redirect URI в разделе Development OAuth. Скопируйте это значение в буфер обмена — оно понадобится позже.
Создание client ID и secret для BigQuery OAuth 2.0
Для продолжения необходимо создать client ID и secret для аутентификации в BigQuery. Эти client ID и secret будут сохранены в dbt для управления OAuth-подключением между пользователями dbt и BigQuery.
В консоли BigQuery перейдите в APIs & Services и выберите Credentials:
На странице Credentials вы увидите существующие ключи, client ID и service accounts.
Настройте OAuth consent screen, если вы еще этого не сделали. Затем нажмите + Create Credentials в верхней части страницы и выберите OAuth client ID.
Заполните конфигурацию client ID. Параметр Authorized JavaScript Origins не применяется. Добавьте элемент в Authorized redirect URIs и замените REDIRECT_URI значением, которое вы ранее скопировали из раздела OAuth 2.0 Settings подключения в dbt:
| Loading table... |
Затем нажмите Create, чтобы создать OAuth-приложение BigQuery и увидеть значения client ID и secret. Эти значения доступны и после закрытия экрана приложения, поэтому это не единственный момент, когда вы можете их сохранить.
Настройте подключение в dbt
Теперь, когда OAuth-приложение настроено в BigQuery, необходимо добавить client ID и secret в dbt. Для этого:
- Вернитесь на страницу деталей подключения, как описано в разделе Найдите значение redirect URI.
- Добавьте client ID и secret из OAuth-приложения BigQuery в разделе OAuth 2.0 Settings.
- Укажите token URI BigQuery. Значение по умолчанию —
https://oauth2.googleapis.com/token.
Аутентификация в BigQuery
После настройки OAuth-приложения BigQuery для проекта dbt каждому пользователю dbt необходимо аутентифицироваться в BigQuery, чтобы использовать Studio IDE. Для этого:
- Перейдите к имени вашего аккаунта над иконкой профиля на левой боковой панели
- Выберите Account settings в меню
- В левой боковой панели выберите Credentials
- Выберите проект из списка
- Нажмите Authenticate BigQuery Account
После этого вы будете перенаправлены в BigQuery, где потребуется одобрить доступы к Google Drive, Cloud Platform и BigQuery, если только подключение не обладает меньшими привилегиями.
Нажмите Allow. После этого вы будете перенаправлены обратно в dbt. Теперь вы аутентифицированы как пользователь BigQuery и можете начинать использовать инструменты разработки dbt.
Настройка BigQuery Workload Identity Federation EnterprisePreview
Workload Identity Federation (WIF) позволяет прикладным нагрузкам, выполняющимся вне dbt, действовать от имени service account без необходимости управлять service accounts или другими ключами для окружений развертывания. Следующие инструкции позволят вам аутентифицировать подключение BigQuery в dbt с использованием WIF.
В настоящее время единственным поддерживаемым провайдером идентификации (IdP) является Microsoft Entra ID. Если вам требуется поддержка дополнительных IdP, свяжитесь с вашей аккаунт-командой.
1. Настройка Entra ID
Создайте приложение в Entra, через которое dbt будет запрашивать access tokens при аутентификации в BigQuery через workload identity pool:
-
На экране app registrations нажмите New registration.
-
Задайте приложению понятное имя.
-
Убедитесь, что Supported account types установлено в “Accounts in this organizational directory only (Org name - Single Tenant).”
-
Нажмите Register, чтобы открыть экран обзора приложения.
-
На странице обзора приложения выберите Expose an API в левом меню.
-
Нажмите Add рядом с Application ID URI. Поле заполнится автоматически.
-
Нажмите Save.
-
(Опционально) Чтобы включить claim
subв токены, выпускаемые этим приложением, настройте optional claims в Entra ID.
Claimsub(subject) однозначно идентифицирует пользователя или service principal, для которого был выпущен токен.
При настройке service account impersonation в GCP сопоставление Workload Identity Federation использует это значениеsubдля проверки идентичности вызывающего Entra-приложения. -
(Опционально, но рекомендуется) Проверьте конфигурацию Entra ID, запросив токен:
Выполните следующую команду, заменив
<client-id>,<client-secret>,<application-ID-URI>и<tenant-id>на ваши реальные значения:curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d 'client_id=<client-id> \
&scope=<application-ID-URI>/.default \
&client_secret=<client-secret> \
&grant_type=client_credentials' \
'https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token'В ответе будет содержаться
access_token. Вы можете декодировать этот токен с помощью сервиса jwt.io, чтобы посмотреть значение claimsub.
Workload Identity Federation использует машинный OAuth-поток (machine-to-machine), не требующий участия пользователя; поэтому redirect URI для приложения настраивать не нужно. Шаг 3 в этом разделе критически важен, так как он определяет audience для токенов, выпускаемых приложением, и сообщает workpool в GCP, имеет ли вызывающее приложение право доступа к ресурсам, защищенным этим workpool.
- Связанная документация: GCP — Prepare your external identity provider
2. Создайте Workpool и Workpool Provider в GCP
- В главном меню GCP перейдите в IAM & Admin и выберите Workload Identity Federation (не путать с Work_force_ Identity Federation, расположенным рядом).
- Если вы еще не создали workpool, нажмите Get started или создайте новый workpool (кнопка в верхней части страницы).
- Задайте имя и описание workpool. Согласно документации GCP, для каждого окружения вне Google Cloud (development, staging, production и т.д.) следует создавать отдельный pool. Название workpool должно отражать это, чтобы его было легко идентифицировать в будущем.
- При создании provider:
- Установите тип provider в OpenID Connect (OIDC).
- Задайте понятное имя provider, например
Entra ID. - Укажите URL
https://sts.windows.net/YOUR_TENANT_ID/. Его можно найти в самом токене, если декодировать его через jwt.io. Также ожидаемый issuer URL для Entra указан в документации GCP по WIF.- Tenant (provider) ID можно найти в app registration, созданной в разделе 1; он называется Directory (tenant) ID и отображается на странице overview приложения.
- В разделе Audiences выберите Allowed Audiences и укажите Application ID URI, заданный для вашего Entra ID приложения.
- Нажмите Continue.
- В разделе Configure provider attributes установите сопоставление
google.subject→assertion.sub. - Нажмите Save.
3. Имперсонация сервисного аккаунта
Workpool либо использует service account, либо получает прямой доступ к ресурсам для определения того, к каким ресурсам может обращаться вызывающая сторона. Более подробную информацию см. в документации GCP. В нашей реализации мы выбрали подход с service account, так как он обеспечивает большую гибкость.
Если вы еще не сделали этого, создайте новый service account:
- В главном меню выберите IAM & Admin.
- Нажмите Service Accounts.
- Нажмите Create service account. Google рекомендует создавать отдельный service account для каждой нагрузки.
- Назначьте необходимые роли. По нашему опыту, роль
BigQuery Adminявляется ролью по умолчанию с необходимым уровнем доступа.
После создания service account вернитесь к workpool, созданному на предыдущем шаге:
-
Нажмите Grant Access в верхней части страницы.
-
Выберите Grant access using Service Account Impersonation.
-
Выберите созданный service account.
-
В разделе Select Principals укажите
subjectв качестве Attribute Name, а в поле Attribute Value задайте значение claimsubиз access token Entra ID.
4. Настройка dbt
Чтобы настроить подключение BigQuery с использованием WIF-аутентификации в dbt, необходимо создать пользовательскую OAuth-интеграцию, настроенную с использованием данных Entra-приложения, используемого в качестве workpool provider в GCP.
В dbt:
- Перейдите в Account settings --> Integrations
- Прокрутите вниз до раздела Custom OAuth Integrations и создайте новую интеграцию
- Заполните все поля соответствующей информацией из вашего окружения IdP.
- Application ID URI должен быть установлен в значение ожидаемого audience claim для токенов, выпускаемых Entra-приложением. Это будет тот же URI, который ожидает ваш workpool provider.
- Добавлять Redirect URI в Entra-приложение не требуется
5. Создайте подключения в dbt
Для начала создайте новое подключение в dbt:
- Перейдите в Account settings --> Connections.
- Нажмите New connection и выберите BigQuery в качестве типа подключения. Затем выберите BigQuery (не BigQuery (Legacy)).
- В поле Deployment Environment Authentication Method выберите Workload Identity Federation.
- Заполните Google Cloud Project ID и при необходимости другие параметры.
- Выберите OAuth Configuration, созданную на предыдущем шаге, из выпадающего списка.
- Настройте подключение для разработки:
- BigQuery OAuth (рекомендуется)
- Настраивается в том же подключении, что и WIF, в разделе
OAuth2.0 settings
- Настраивается в том же подключении, что и WIF, в разделе
- Service JSON
- Необходимо создать отдельное подключение с конфигурацией Service JSON.
- BigQuery OAuth (рекомендуется)
6. Настройте проект
Чтобы подключить новый проект к вашей WIF-конфигурации:
- Перейдите в Account settings --> Projects.
- Нажмите New project.
- Укажите имя проекта и (опционально) путь к поддиректории, затем нажмите Continue.
- Выберите Connection с WIF-конфигурацией.
- Завершите настройку проекта, заполнив остальные необходимые поля.
7. Настройте deployment environment
Создайте новое или обновите существующее окружение для использования WIF-подключения.
После установки WIF-подключения для окружения в разделе Deployment credentials появятся два поля:
- Workload pool provider path: Обязательное поле для всех WIF-конфигураций.
Пример://iam.googleapis.com/projects/<numeric_project_id>/locations/global/workloadIdentityPools/<workpool_name>/providers/<workpool_providername> - Service account impersonation URL: Используется только если workpool настроен на использование service account impersonation для доступа к ресурсам BigQuery (а не на прямой доступ workpool к ресурсам BigQuery).
Пример:https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts<serviceaccountemail>:generateAccessToken
Если у вас еще нет job, использующего deployment environment с WIF-подключением, создайте его сейчас. После настройки с нужными параметрами запустите job.




