Перейти к основному содержимому

Настройка внешнего 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

Требуется совпадение имени пользователя Snowflake и IdP

Убедитесь, что имя пользователя / адрес электронной почты, указанные администратором 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:

1. Инициализируйте настройки dbt

  1. В вашем аккаунте dbt перейдите в Account settings —> Integrations.
  2. Прокрутите страницу до раздела Custom integrations и нажмите Add integrations.
  3. Оставьте это окно открытым. Вы можете установить Integration type в значение Okta и обратить внимание на Redirect URI в нижней части страницы. Скопируйте его в буфер обмена — он понадобится на следующих шагах.
Скопируйте callback URI в нижней части страницы интеграции в dbt.Скопируйте callback URI в нижней части страницы интеграции в dbt.

2. Создание приложения Okta

  1. Разверните раздел Applications на панели управления Okta и нажмите Applications. Нажмите кнопку Create app integration.
  2. Выберите OIDC в качестве метода входа и Web applications в качестве типа приложения. Нажмите Next.
The Okta app creation window with OIDC and Web Application selected.The Okta app creation window with OIDC and Web Application selected.
  1. Задайте приложению подходящее имя, например «External OAuth app for dbt», чтобы его было легко идентифицировать.
  2. В разделе Grant type включите опцию Refresh token.
  3. Прокрутите вниз до параметра Sign-in redirect URIs. Вам нужно вставить redirect URI, который вы получили из dbt на шаге 1.3.
The Okta app configuration window with the sign-in redirect URI configured to the dbt value.The Okta app configuration window with the sign-in redirect URI configured to the dbt value.
  1. Сохраните конфигурацию приложения. Вы вернетесь к нему позже, но пока переходите к следующим шагам.

3. Создание API Okta

  1. Разверните раздел Security и в боковом меню Okta выберите API.
  2. На экране API нажмите Add authorization server. Задайте имя сервера авторизации (в качестве имени подойдёт псевдоним вашего аккаунта в хранилище данных). В поле Audience скопируйте и вставьте URL для входа в ваше хранилище данных (например, https://abdc-ef1234.snowflakecomputing.com). Добавьте подходящее описание сервера и нажмите Save.
Окно Okta API с заданным значением Audience.Окно Okta API с заданным значением Audience.
  1. На экране конфигурации сервера авторизации откройте Metadata URI в новой вкладке. Вам понадобится информация с этого экрана на следующих шагах.
Страница настроек Okta API с выделенным URI метаданных.Страница настроек Okta API с выделенным URI метаданных.
Пример вывода по URI метаданных.Пример вывода по URI метаданных.
  1. Нажмите на вкладку Scopes и Add scope. В поле Name добавьте session:role-any. (Опционально) Настройте Display phrase и Description и нажмите Create.
Область API, настроенная в окне Add Scope.Область API, настроенная в окне Add Scope.
  1. Откройте вкладку Access policies и нажмите Add policy. Дайте политике Name и Description и установите Assign to как The following clients. Начните вводить имя приложения, созданного на шаге 2.3, и вы увидите его автозаполнение. Выберите приложение и нажмите Create Policy.
Поле Assignment с автоматически подставленным значением.Поле Assignment с автоматически подставленным значением.
  1. На экране access policy нажмите Add rule.
Подсвечена кнопка Add rule для API.Подсвечена кнопка Add rule для API.
  1. Дайте правилу описательное имя и прокрутите вниз до token lifetimes. Настройте Access token lifetime is, Refresh token lifetime is, и but will expire if not used every в соответствии с политиками вашей организации. Мы рекомендуем значения по умолчанию: 1 час и 90 дней. Более строгие правила увеличивают вероятность того, что вашим пользователям придется повторно проходить аутентификацию.
Настройки срока действия токена в окне правила API.Настройки срока действия токена в окне правила API.
  1. Вернитесь на вкладку Settings и оставьте ее открытой в вашем браузере. Вам понадобится некоторая информация на следующих шагах.

4. Создайте настройки OAuth в хранилище данных

  1. Откройте рабочий лист 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'

  1. Измените 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.

URI издателя и jws ключей в URL метаданныхURI издателя и jws ключей в URL метаданных
  1. Выполните шаги для создания интеграции в Snowflake.
Согласованность имени пользователя

Убедитесь, что имя пользователя (например, адрес электронной почты), указанное в IdP, совпадает с учетными данными Snowflake для всех пользователей. Несоответствие имен пользователей приведет к ошибкам аутентификации.

5. Настройка интеграции в dbt

  1. Вернитесь на страницу dbt Account settings —> Integrations, на которой вы были в начале. Теперь можно приступать к заполнению всех полей.

    1. Integration name: Задайте для интеграции понятное и описательное имя, содержащее идентифицирующую информацию об окружении Okta, чтобы будущим пользователям не приходилось догадываться, к чему она относится.
    2. Client ID и Client secrets: Получите эти значения на странице приложения Okta.
    Client ID и secret, выделенные в приложении Okta.Client ID и secret, выделенные в приложении Okta.
    1. Authorize URL и Token URL: Эти значения можно найти в metadata URI.
    Authorize URL и Token URL, выделенные в metadata URI.Authorize URL и Token URL, выделенные в metadata URI.
  2. Сохраните конфигурацию

6. Создание нового соединения в dbt Cloud

6. Создайте новое подключение в dbt

Новое окно конфигурации в dbt Cloud с отображением внешнего OAuth в качестве опцииНовое окно конфигурации в dbt Cloud с отображением внешнего OAuth в качестве опции
  1. Перейдите в Account settings и выберите Connections в меню. Нажмите New connection.
  2. Настройте Account, Database и Warehouse так же, как вы делаете это обычно, а в поле OAuth method выберите внешний OAuth, который вы только что создали.
Новое соединение отображается в блоке конфигураций External OAuthНовое соединение отображается в блоке конфигураций External OAuth
Новое окно конфигурации в dbt, где External OAuth доступен как вариант.Новое окно конфигурации в dbt, где External OAuth доступен как вариант.
  1. Прокрутите вниз до блока конфигураций External OAuth и выберите нужную конфигурацию из списка.
Новое подключение, отображаемое в блоке External OAuth Configurations.Новое подключение, отображаемое в блоке External OAuth Configurations.
  1. Нажмите Save, и на этом настройка External OAuth с Okta завершена!

Часто задаваемые вопросы

Ошибка `Failed to connect to DB` при подключении к Snowflake

Нашли ошибку?

0
Loading