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

Настройка внешнего OAuth для Snowflake

примечание

Эта функция в настоящее время доступна только для провайдеров удостоверений Okta и Entra ID.

Тарифные планы Enterprise и Enterprise+ в dbt поддерживают аутентификацию 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 в нижней части страницы. Скопируйте этот URI в буфер обмена для использования на следующих шагах.
Скопируйте URI обратного вызова в нижней части страницы интеграции в dbt.Скопируйте URI обратного вызова в нижней части страницы интеграции в dbt.

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

  1. Разверните раздел Applications на панели управления Okta и нажмите Applications. Нажмите кнопку Create app integration.
  2. Выберите OIDC в качестве метода входа и Web applications в качестве типа приложения. Нажмите Next.
Создание приложения в Okta с параметрами OIDC и Web Application.Создание приложения в Okta с параметрами OIDC и Web Application.
  1. Дайте приложению подходящее имя, например «Внешнее OAuth-приложение для dbt», чтобы его было легко идентифицировать.
  2. В разделе Grant type включите опцию Refresh token.
  3. Прокрутите страницу вниз до опции Sign-in redirect URIs. Вставьте URI перенаправления, полученный из dbt на шаге 1.3.
Настройка приложения Okta с URI перенаправления для входа в dbt.Настройка приложения Okta с URI перенаправления для входа в dbt.
  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 в новой вкладке. Вам понадобится информация с этого экрана на следующих шагах.
Страница настроек API Okta с выделенным URI метаданных.Страница настроек API Okta с выделенным 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.
Автоматическое заполнение значения поля назначения.Автоматическое заполнение значения поля назначения.
  1. На экране access policy нажмите Add rule.
Выделена кнопка добавления правила API.Выделена кнопка добавления правила 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. Откройте SQL-файл 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. Вернитесь на страницу Account settings —> Integrations в dbt, на которой вы были в начале. Теперь пора заполнить все поля.

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

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

  1. Перейдите в Account settings и выберите Connections в меню. Нажмите New connection.
  2. Настройте Account, Database и Warehouse так же, как вы делаете это обычно, а в поле OAuth method выберите внешний 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