Настройка внешнего OAuth с Snowflake EnterpriseEnterprise +
Эта функция в настоящее время доступна только для провайдеров удостоверений Okta и Entra ID.
Тарифные планы dbt Enterprise и Enterprise+ поддерживают аутентификацию OAuth с внешними провайдерами. Когда включена опция External OAuth, пользователи могут авторизовывать свои учетные данные для разработки с помощью единого входа (SSO) через провайдер удостоверений (IdP). External OAuth позволяет пользователям получать доступ к нескольким приложениям, включая dbt, не передавая сервису свои статические учетные данные. Это упрощает процесс аутентификации для сред разработки и обеспечивает дополнительный уровень безопасности для вашей учетной записи dbt.
Процесс настройки внешнего OAuth потребует некоторого взаимодействия между вашими учетными записями dbt Cloud, IdP и Snowflake, и открытие их в нескольких вкладках браузера поможет ускорить процесс настройки:
Процесс настройки внешнего OAuth потребует некоторого взаимодействия между учетными записями dbt, провайдера идентификации (IdP) и хранилища данных. Чтобы ускорить процесс конфигурации, рекомендуется открыть их в нескольких вкладках браузера:
- dbt: Основная работа будет вестись на странице Account settings —> Integrations. Для настройки интеграции и создания подключений вам потребуются соответствующие права доступа.
Провайдеры идентификации (Identity providers):
- Okta: Вам предстоит работать в нескольких разделах учетной записи Okta, но начать можно с раздела Applications. Потребуются права на создание приложения и authorization server.
- Entra ID: Требуется администратор с правами на создание приложений Entra ID, который также является пользователем в хранилище данных.
Хранилище данных:
- Snowflake: Откройте worksheet в учетной записи, у которой есть права на создание security integration.
Команды Snowflake
Убедитесь, что имя пользователя / адрес электронной почты, указанные администратором IdP, совпадают с именем пользователя в учетных данных Snowflake. Если адрес электронной почты, используемый при настройке dbt, отличается от адреса электронной почты в Snowflake, соединение не будет установлено или могут возникнуть проблемы.
Конфигурации хранилища данных
Ниже приведён шаблон для создания OAuth‑конфигураций в среде Snowflake:
create security integration your_integration_name
type = external_oauth
enabled = true
external_oauth_type = okta
external_oauth_issuer = ''
external_oauth_jws_keys_url = ''
external_oauth_audience_list = ('')
external_oauth_token_user_mapping_claim = 'sub'
external_oauth_snowflake_user_mapping_attribute = 'email_address'
external_oauth_any_role_mode = 'ENABLE'
external_oauth_token_user_mapping_claim и external_oauth_snowflake_user_mapping_attribute могут быть изменены в зависимости от потребностей вашей организации. Эти значения указывают на утверждение в токене пользователей. В примере Snowflake будет искать пользователя Snowflake, чей email совпадает со значением в утверждении sub.
Примечания:
- Стандартные роли Snowflake
ACCOUNTADMIN,ORGADMINиSECURITYADMINпо умолчанию заблокированы для внешнего OAuth, поэтому аутентификация с ними, скорее всего, завершится неудачей. Подробнее см. в документации Snowflake. - Значение параметра
external_oauth_snowflake_user_mapping_attributeдолжно корректно сопоставляться с именем пользователя Snowflake. Например, если используетсяemail_address, то email в токене от IdP должен в точности совпадать с именем пользователя Snowflake.
Конфигурация провайдера идентификации
Выберите поддерживаемого провайдера идентификации (IdP), чтобы получить инструкции по настройке внешнего OAuth в соответствующей среде и завершению интеграции в dbt:
- Okta
- Entra ID
1. Инициализируйте настройки dbt
- В вашем аккаунте dbt перейдите в Account settings —> Integrations.
- Прокрутите страницу до раздела Custom integrations и нажмите Add integrations.
- Оставьте это окно открытым. Вы можете установить Integration type в значение Okta и обратить внимание на Redirect URI в нижней части страницы. Скопируйте его в буфер обмена — он понадобится на следующих шагах.
2. Создание приложения Okta
- Разверните раздел Applications на панели управления Okta и нажмите Applications. Нажмите кнопку Create app integration.
- Выберите OIDC в качестве метода входа и Web applications в качестве типа приложения. Нажмите Next.
- Задайте приложению подходящее имя, например «External OAuth app for dbt», чтобы его было легко идентифицировать.
- В разделе Grant type включите опцию Refresh token.
- Прокрутите вниз до параметра Sign-in redirect URIs. Вам нужно вставить redirect URI, который вы получили из dbt на шаге 1.3.
- Сохраните конфигурацию приложения. Вы вернетесь к нему позже, но пока переходите к следующим шагам.
3. Создание API Okta
- Разверните раздел Security и в боковом меню Okta выберите API.
- На экране API нажмите Add authorization server. Задайте имя сервера авторизации (в качестве имени подойдёт псевдоним вашего аккаунта в хранилище данных). В поле Audience скопируйте и вставьте URL для входа в ваше хранилище данных (например,
https://abdc-ef1234.snowflakecomputing.com). Добавьте подходящее описание сервера и нажмите Save.
- На экране конфигурации сервера авторизации откройте Metadata URI в новой вкладке. Вам понадобится информация с этого экрана на следующих шагах.
- Нажмите на вкладку Scopes и Add scope. В поле Name добавьте
session:role-any. (Опционально) Настройте Display phrase и Description и нажмите Create.
- Откройте вкладку Access policies и нажмите Add policy. Дайте политике Name и Description и установите Assign to как The following clients. Начните вводить имя приложения, созданного на шаге 2.3, и вы увидите его автозаполнение. Выберите приложение и нажмите Create Policy.
- На экране access policy нажмите Add rule.
- Дайте правилу описательное имя и прокрутите вниз до token lifetimes. Настройте Access token lifetime is, Refresh token lifetime is, и but will expire if not used every в соответствии с политиками вашей организации. Мы рекомендуем значения по умолчанию: 1 час и 90 дней. Более строгие правила увеличивают вероятность того, что вашим пользователям придется повторно проходить аутентификацию.
- Вернитесь на вкладку Settings и оставьте ее открытой в вашем браузере. Вам понадобится некоторая информация на следующих шагах.
4. Создайте настройки OAuth в хранилище данных
- Откройте рабочий лист Snowflake и скопируйте/вставьте следующее:
create security integration your_integration_name
type = external_oauth
enabled = true
external_oauth_type = okta
external_oauth_issuer = ''
external_oauth_jws_keys_url = ''
external_oauth_audience_list = ('')
external_oauth_token_user_mapping_claim = 'sub'
external_oauth_snowflake_user_mapping_attribute = 'email_address'
external_oauth_any_role_mode = 'ENABLE'
- Измените
your_integration_nameна что-то подходящее и описательное. Например,dev_OktaAccountNumber_okta. Скопируйтеexternal_oauth_issuerиexternal_oauth_jws_keys_urlиз URI метаданных на шаге 3.3. Используйте тот же URL Snowflake, который вы ввели на шаге 3.2, в качествеexternal_oauth_audience_list.
Настройте остальные параметры в соответствии с конфигурациями вашей организации в Okta и Snowflake.
- Выполните шаги для создания интеграции в Snowflake.
Убедитесь, что имя пользователя (например, адрес электронной почты), указанное в IdP, совпадает с учетными данными Snowflake для всех пользователей. Несоответствие имен пользователей приведет к ошибкам аутентификации.
5. Настройка интеграции в dbt
-
Вернитесь на страницу dbt Account settings —> Integrations, на которой вы были в начале. Теперь можно приступать к заполнению всех полей.
Integration name: Задайте для интеграции понятное и описательное имя, содержащее идентифицирующую информацию об окружении Okta, чтобы будущим пользователям не приходилось догадываться, к чему она относится.Client IDиClient secrets: Получите эти значения на странице приложения Okta.
- Authorize URL и Token URL: Эти значения можно найти в metadata URI.
-
Сохраните конфигурацию
6. Создание нового соединения в dbt Cloud
6. Создайте новое подключение в dbt
- Перейдите в Account settings и выберите Connections в меню. Нажмите New connection.
- Настройте
Account,DatabaseиWarehouseтак же, как вы делаете это обычно, а в полеOAuth methodвыберите внешний OAuth, который вы только что создали.
- Прокрутите вниз до блока конфигураций External OAuth и выберите нужную конфигурацию из списка.
- Нажмите Save, и на этом настройка External OAuth с Okta завершена!
1. Инициализация настроек dbt
- В вашем аккаунте dbt перейдите в Account settings —> Integrations.
- Прокрутите страницу вниз до раздела Custom integrations и нажмите Add integrations.
- Оставьте это окно открытым. Вы можете установить Integration type в значение Entra ID и обратить внимание на Redirect URI внизу страницы. Скопируйте его в буфер обмена — он понадобится на следующих шагах.
2. Создание приложений Entra ID
- Вам потребуется создать два приложения в портале Azure: resource server и client app.
- В портале Azure откройте Entra ID и в левом меню выберите App registrations.
- Для завершения настройки вам понадобятся права Entra ID admin и data warehouse admin. Эти роли не обязательно должны быть у одного и того же человека — при совместной работе все будет функционировать корректно.
- Как правило, администратор Entra ID отвечает за регистрацию приложений и разрешения, а администратор хранилища данных — за роли, grants и интеграции на стороне хранилища.
- Значение поля
value, получаемое на этих шагах, отображается только один раз. Сразу после создания обязательно сохраните его. - Убедитесь, что имя пользователя (например, адрес электронной почты), указанное в IdP, совпадает с учетными данными пользователей в хранилище данных. Несовпадение имен пользователей приведет к ошибкам аутентификации.
3. Создание resource server
- На экране 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.
- Сохраните значение поля
valueдля использования на следующем шаге. Оно отображается только один раз. Обязательно запишите его сразу. Microsoft скрывает это поле после ухода со страницы и повторного возврата. - На том же экране нажмите Add scope.
- Укажите имя scope:
session:role-any. - В поле “Who can consent?” выберите Admins and users.
- В поле Admin consent display name укажите
session:role-anyи добавьте описание. - Убедитесь, что параметр State установлен в Enabled.
- Нажмите Add scope.
- Укажите имя scope:
4. Создание client app
- На странице App registrations нажмите New registration.
- Задайте имя приложения, которое однозначно указывает, что это client app.
- Убедитесь, что параметр Supported account types установлен в значение “Accounts in this organizational directory only (
Org name- Single Tenant)”. - В поле Redirect URI выберите Web и скопируйте/вставьте Redirect URI из dbt.
- Нажмите Register.
- На странице обзора приложения в левом меню выберите API permissions и нажмите Add permission.
- В открывшейся панели выберите APIs my organization uses, найдите resource server, созданный на предыдущих шагах, и выберите его.
- Убедитесь, что разрешение Permissions
session:role-anyотмечено, и нажмите Add permissions. - Нажмите Grant admin consent, а затем в модальном окне подтвердите действие, нажав Yes.
- В левом меню выберите Certificates and secrets и нажмите New client secret. Укажите имя секрета, задайте срок действия и нажмите Add.
Примечание: Microsoft не допускает срок действия “forever”. Максимальный срок — два года. Крайне важно зафиксировать дату истечения срока действия, чтобы обновить секрет заранее, иначе аутентификация пользователей перестанет работать. - Сохраните значение
valueдля использования на следующем шаге и обязательно сделайте это сразу.
Примечание: Entra ID больше не покажет это значение после того, как вы покинете данный экран.
5. Конфигурация хранилища данных
Вы будете переключаться между сайтом Entra ID и Snowflake. Держите свою учетную запись Entra ID открытой для этого процесса.
Скопируйте и вставьте следующее в качестве шаблона в рабочий лист Snowflake:
create or replace security integration <whatever you want to name it>
type = external_oauth
enabled = true
external_oauth_type = azure
external_oauth_issuer = '<AZURE_AD_ISSUER>'
external_oauth_jws_keys_url = '<AZURE_AD_JWS_KEY_ENDPOINT>'
external_oauth_audience_list = ('<SNOWFLAKE_APPLICATION_ID_URI>')
external_oauth_token_user_mapping_claim = 'upn'
external_oauth_any_role_mode = 'ENABLE'
external_oauth_snowflake_user_mapping_attribute = 'login_name';
На сайте Entra ID:
- В приложении Client ID в Entra ID нажмите Endpoints и откройте Federation metadata document в новой вкладке.
- Значение entity ID на этой странице соответствует полю
external_oauth_issuerв конфигурации Snowflake.
- Значение entity ID на этой странице соответствует полю
- Вернувшись к списку endpoints, откройте OpenID Connect metadata document в новой вкладке.
- Поле jwks_uri соответствует полю
external_oauth_jws_keys_urlв Snowflake.
- Поле jwks_uri соответствует полю
- Перейдите к resource server, который настраивался на предыдущих шагах.
- Значение Application ID URI соответствует полю
external_oauth_audience_listв Snowflake.
- Значение Application ID URI соответствует полю
- Примените конфигурации. Для завершения настройки вам понадобятся права администратора Entra ID и администратора хранилища данных. Если это разные люди, им необходимо работать совместно, чтобы завершить конфигурацию.
6. Настройка интеграции в dbt
- Перейдите обратно на страницу dbt Account settings —> Integrations, на которой вы были в начале. Теперь можно приступать к заполнению всех полей. В процессе потребуется несколько раз переключаться между аккаунтом Entra ID и dbt.
Integration name: Задайте интеграции понятное и описательное имя, которое содержит информацию об окружении Entra ID, чтобы будущим пользователям не приходилось гадать, к чему относится эта интеграция.Client secrets: Значение берётся из Client ID на странице Certificates and secrets. ПолеValue— этоClient secret. Обратите внимание, что оно отображается только в момент создания; Microsoft скрывает secret при повторном открытии страницы, и в этом случае его необходимо создать заново.Client ID: Скопируйте значениеApplication (client) IDсо страницы Overview приложения Client ID.Authorization URLиToken URL: В приложении Client ID откройте вкладкуEndpoints. Эти URL соответствуют полямOAuth 2.0 authorization endpoint (v2)иOAuth 2.0 token endpoint (v2). Необходимо использовать v2 дляOAuth 2.0 authorization endpoint. Не используйте v1. ДляOAuth 2.0 token endpointможно использовать любую версию.Application ID URI: Скопируйте значение поляApplication ID URIсо страницы Overview resource server.














