Настройка BigQuery OAuth
В этом руководстве описана функция, доступная в тарифных планах Enterprise и Enterprise+ dbt platform. Если вы хотите узнать больше о наших тарифных планах уровня Enterprise, свяжитесь с нами по адресу sales@getdbt.com.
dbt platform поддерживает OAuth для BigQuery, обеспечивая дополнительный уровень безопасности для корпоративных пользователей dbt.
Настройка нативного OAuth BigQuery
Когда BigQuery OAuth включен для проекта dbt platform, все разработчики dbt platform должны аутентифицироваться в BigQuery для доступа к инструментам разработки, таким как Studio IDE.
Чтобы настроить BigQuery OAuth в dbt platform, администратор BigQuery должен:
- Найти значение URI перенаправления в dbt platform.
- Создать OAuth 2.0 client ID и secret для BigQuery в BigQuery.
- Настроить подключение в dbt platform.
Чтобы использовать 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
dbt platform автоматически запросит необходимые области доступа BigQuery в процессе OAuth. Настройка областей доступа на экране согласия OAuth для BigQuery необязательна и не требуется для подключения dbt platform к BigQuery. Необходимые области доступа запрашиваются и одобряются при аутентификации пользователей через OAuth.
Для начала необходимо создать идентификатор и секрет клиента для аутентификации в BigQuery. Эти идентификатор и секрет клиента будут храниться в dbt platform для управления OAuth-подключением между пользователями dbt platform и BigQuery.
- В консоли BigQuery перейдите в API и сервисы и выберите Учетные данные:
На странице Credentials вы увидите существующие ключи, client ID и service accounts.
-
Настройте экран согласия OAuth, если вы еще этого не сделали.
-
Нажмите + Создать учетные данные в верхней части страницы и выберите Идентификатор клиента OAuth.
-
Заполните настройки идентификатора клиента. Разрешенные источники JavaScript не применяются.
-
Добавьте элемент в Разрешенные URI перенаправления и замените
REDIRECT_URIзначением, которое вы ранее скопировали в буфер обмена из раздела Настройки OAuth 2.0 подключения в dbt platform:
| Параметр | Значение |
|---|---|
| Тип приложения | Веб-приложение |
| Name | dbt platform |
| Разрешенные URI перенаправления | REDIRECT_URI |
- Нажмите Создать, чтобы создать приложение BigQuery OAuth и просмотреть значения идентификатора и секрета клиента приложения. Эти значения доступны и после закрытия экрана приложения, поэтому вы сможете сохранить их и позже.
Настройте подключение в dbt
Теперь, когда приложение OAuth настроено в BigQuery, необходимо добавить идентификатор и секрет клиента в dbt platform. Для этого:
- Вернитесь на страницу деталей подключения, как описано в разделе Найдите значение redirect URI.
- Добавьте client ID и secret из OAuth-приложения BigQuery в разделе OAuth 2.0 Settings.
- Укажите token URI BigQuery. Значение по умолчанию —
https://oauth2.googleapis.com/token.
Аутентификация в BigQuery
После настройки OAuth-приложения BigQuery для проекта dbt platform каждому пользователю dbt platform необходимо аутентифицироваться в BigQuery, чтобы использовать Studio IDE. Для этого:
- Перейдите к имени своей учетной записи над значком профиля на левой боковой панели.
- Выберите Настройки учетной записи в меню.
- На левой боковой панели выберите Учетные данные.
- Выберите проект из списка.
- Убедитесь, что для параметра Метод аутентификации установлено значение Встроенный OAuth.
- Выберите Подключиться к BigQuery.
После этого вы будете перенаправлены в BigQuery, где потребуется одобрить доступы к Google Drive, Cloud Platform и BigQuery, если только подключение не обладает меньшими привилегиями.
Выберите Разрешить. Вы будете перенаправлены обратно в dbt platform. Теперь вы прошли аутентификацию в BigQuery и можете начать пользоваться инструментами разработки dbt.
Настройка Workload Identity Federation для BigQuery Enterprise
Workload Identity Federation (WIF) позволяет рабочим нагрузкам приложений, выполняющимся за пределами dbt platform, действовать от имени сервисного аккаунта без необходимости управлять сервисными аккаунтами или другими ключами для сред развертывания. Следующие инструкции позволят вам настроить аутентификацию подключения BigQuery в dbt platform с помощью 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. Также сведения об ожидаемом URL издателя для Entra можно найти в документации GCP по WIF.
- Замените
YOUR_TENANT_IDидентификатором вашего арендатора. - 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 platform, необходимо создать пользовательскую интеграцию OAuth с данными приложения Entra, используемого в качестве поставщика пула рабочих нагрузок в GCP. dbt platform:
- Перейдите в Настройки учетной записи --> Интеграции.
- Прокрутите вниз до раздела Пользовательские интеграции OAuth и создайте новую интеграцию.
- Заполните все поля соответствующей информацией из вашего окружения IdP.
- Application ID URI должен быть установлен в значение ожидаемого audience claim для токенов, выпускаемых Entra-приложением. Это будет тот же URI, который ожидает ваш workpool provider.
- Добавлять URI перенаправления в приложение Entra не требуется.
5. Создайте подключения в dbt
Для начала создайте новое подключение в dbt platform:
- Перейдите в 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, в разделе
- JSON сервисного аккаунта.
- Необходимо создать отдельное подключение с конфигурацией Service JSON.
- BigQuery OAuth (рекомендуется).
6. Настройте проект
Чтобы подключить новый проект к вашей WIF-конфигурации:
- Перейдите в Account settings --> Projects.
- Нажмите New project.
- Укажите имя проекта и (опционально) путь к поддиректории, затем нажмите Continue.
- Выберите Connection с WIF-конфигурацией.
- Завершите настройку проекта, заполнив остальные необходимые поля.
7. Настройте deployment environment
Создайте новое или обновите существующее окружение для использования WIF-подключения.
После установки WIF-подключения для окружения в разделе Deployment credentials появятся два поля:
- Путь к поставщику пула рабочих нагрузок: Это поле обязательно для всех конфигураций WIF. Например:
//iam.googleapis.com/projects/<numeric_project_id>/locations/global/workloadIdentityPools/<workpool_name>/providers/<workpool_providername>- URL олицетворения сервисного аккаунта: Используется только в том случае, если вы настроили пул рабочих нагрузок на использование олицетворения сервисного аккаунта для доступа к ресурсам BigQuery (вместо предоставления пулу прямого доступа к ресурсам BigQuery). Например:
https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/<serviceaccountemail>:generateAccessToken
Чтобы избежать ошибок из-за неверного регистра символов или опечаток, рекомендуем получать эти значения непосредственно из GCP, а не составлять их вручную:
- В консоли GCP перейдите в IAM и администрирование > Workload Identity Federation.
- Нажмите на свой пул удостоверений рабочих нагрузок, затем на поставщика, созданного для этой конфигурации.
- Нажмите Скачать конфигурацию в верхней части страницы сведений о поставщике.
- Откройте скачанный JSON-файл и скопируйте следующие значения:
- Поле
audience— вставьте в поле Путь к поставщику пула рабочих нагрузок в dbt. - Поле
service_account_impersonation_url— вставьте в поле URL олицетворения сервисного аккаунта в dbt.
- Поле
Если у вас еще нет задания на основе среды развертывания с подключением, настроенным для WIF, создайте его сейчас. Задав нужные настройки, запустите задание.
Часто задаваемые вопросы
Устранение неполадок
В следующем разделе приведены шаги по устранению распространенных проблем с подключениями BigQuery OAuth.
Сбой подключения после предоставления разрешений Google
При подключении учетной записи BigQuery вы можете успешно войти в Google и одобрить запрошенные разрешения, но затем увидеть страницу ошибки (например, 403 Account restricted) вместо возврата в dbt platform. Обычно отображается сообщение об ошибке сервера вместо страницы учетных данных, с которой вы начали.
Это может произойти, если ваша организация Google Workspace ограничивает доступ сторонних приложений к сервисам Google. Хотя Google позволил вам войти и просмотреть экран согласия, политика безопасности организации заблокировала заключительный этап выдачи учетных данных для dbt platform.
В этом разделе по устранению неполадок объясняется, почему это происходит, как решить проблему и что делать, если она возникает снова.




