Настройка Snowflake OAuth EnterpriseEnterprise +
Мы выполняем миграцию dbt platform мультитенантных аккаунтов по всему миру на статические поддомены. После миграции вы будете автоматически перенаправлены с вашего исходного URL (например, cloud.getdbt.com) на новый URL со статическим поддоменом (например, abc123.us1.dbt.com), который можно найти в настройках вашего аккаунта. Если в вашей организации используется allow list на уровне сети, добавьте домен us1.dbt.com в список разрешённых.
Миграция может потребовать дополнительных действий в вашем аккаунте Snowflake. Подробнее см. в разделе миграция поддоменов.
Тарифы dbt Enterprise и Enterprise+ поддерживают аутентификацию OAuth с Snowflake. Когда Snowflake OAuth включён, пользователи могут авторизовывать свои учетные данные для разработки (Development credentials) с помощью Single Sign On (SSO) через Snowflake, вместо того чтобы передавать имя пользователя и пароль в dbt. Если Snowflake настроен с SSO через стороннего провайдера удостоверений, разработчики могут использовать этот метод для входа в Snowflake и авторизации учетных данных dbt для разработки без какой-либо дополнительной настройки.
Пользователям, которые подключаются к Snowflake с помощью Snowflake OAuth через соединение AWS PrivateLink из dbt, также потребуется доступ к PrivateLink endpoint с их локальной рабочей станции. По возможности используйте Snowflake External OAuth, чтобы обойти это ограничение.
Из документации Snowflake:
В настоящее время для каждой учетной записи Snowflake SSO может работать только с одним URL учетной записи одновременно: либо с публичным URL учетной записи, либо с URL, связанным с сервисом приватной сетевой связности.
Для настройки Snowflake OAuth в dbt администраторы обеих систем должны выполнить следующие шаги:
- Найти значение redirect URI в dbt.
- Создать security integration в Snowflake.
- Настроить подключение в dbt.
Чтобы использовать Snowflake в Studio IDE, все разработчики должны пройти аутентификацию в Snowflake в своих профильных учетных данных.
Найдите значение перенаправления URI
Чтобы начать, скопируйте redirect URI подключения из dbt:
- Перейдите в Account settings.
- Выберите Projects и выберите проект из списка.
- Нажмите на поле Development connection, чтобы просмотреть его детали, и установите OAuth method в значение "Snowflake SSO".
- Скопируйте Redirect URI, который понадобится на следующих шагах.
/>
Создайте интеграцию безопасности
В Snowflake выполните запрос для создания интеграции безопасности. Полную документацию по созданию интеграции безопасности для пользовательских клиентов можно найти здесь.
В следующем примере запроса CREATE OR REPLACE SECURITY INTEGRATION замените значение <REDIRECT_URI> на Redirect URI (также называемый access URL), скопированный в dbt. Чтобы найти Redirect URI, см. предыдущий раздел locate the redirect URI value.
Важно: если вы используете secondary roles, необходимо включить OAUTH_USE_SECONDARY_ROLES = 'IMPLICIT'; в этом выражении.
CREATE OR REPLACE SECURITY INTEGRATION DBT_CLOUD
TYPE = OAUTH
ENABLED = TRUE
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = '<REDIRECT_URI>'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = 7776000
OAUTH_USE_SECONDARY_ROLES = 'IMPLICIT'; -- Required for secondary roles
Примечание: Только администраторы аккаунта Snowflake (пользователи с ролью ACCOUNTADMIN) или роль с глобальной привилегией CREATE INTEGRATION могут выполнять эту SQL-команду.
| Loading table... |
Дополнительные параметры конфигурации могут быть указаны для интеграции безопасности по мере необходимости.
Настройка подключения в dbt
Администратор базы данных отвечает за создание подключения к Snowflake в dbt. Это подключение настраивается с использованием Snowflake Client ID и Client Secret. Эти значения можно определить, выполнив следующий запрос в Snowflake:
with
integration_secrets as (
select parse_json(system$show_oauth_client_secrets('DBT_CLOUD')) as secrets
)
select
secrets:"OAUTH_CLIENT_ID"::string as client_id,
secrets:"OAUTH_CLIENT_SECRET"::string as client_secret
from
integration_secrets;
Чтобы завершить создание подключения в dbt:
- Перейдите в Account Settings, нажмите Connections и выберите нужное подключение.
- Отредактируйте подключение и введите Client ID и Client Secret.
- Нажмите Save.
Авторизация учетных данных разработчика
После включения Snowflake SSO пользователи проекта смогут настроить свои учетные данные в своих профилях. Нажав кнопку "Connect to Snowflake Account", пользователи будут перенаправлены в Snowflake для авторизации через настроенного SSO‑провайдера, а затем обратно в dbt для завершения процесса настройки. После этого пользователи смогут использовать Studio IDE со своими учетными данными для разработки.
Диаграмма потока SSO OAuth
После того как пользователь авторизовал dbt в Snowflake через своего провайдера идентификации, Snowflake возвращает Refresh Token приложению dbt. После этого dbt может обменять этот refresh token на Access Token, который затем используется для открытия соединения с Snowflake и выполнения запросов в Studio IDE от имени пользователя.
ПРИМЕЧАНИЕ: Срок действия refresh token определяется параметром OAUTH_REFRESH_TOKEN_VALIDITY, указанным в операторе create security integration. Когда refresh token пользователя истекает, пользователю необходимо повторно авторизоваться в Snowflake, чтобы продолжить работу в dbt.
Настройка нескольких проектов dbt с Snowflake OAuth
Если вы планируете использовать один и тот же аккаунт Snowflake для нескольких проектов dbt, вы можете применять одну и ту же security integration для всех проектов.
Миграция поддомена
Если вы используете мультиарендный аккаунт и вас переводят на статический поддомен, возможно, потребуется выполнить дополнительные действия в вашем аккаунте Snowflake, чтобы избежать сбоев в работе сервиса.
Snowflake ограничивает каждую security integration (CREATE SECURITY INTEGRATION … TYPE = OAUTH) одним redirect URI. Если вы настроили OAuth‑интеграцию с использованием cloud.getdbt.com, вам необходимо выбрать один из двух вариантов:
- Настроить дополнительную security integration: В вашем аккаунте Snowflake будет одна integration с исходным URL (например,
cloud.getdbt.com/complete/snowflake) в качестве redirect URI, и вторая — с новым статическим поддоменом. Полный список исходных доменов для вашего региона (помечены как “multi-tenant” в таблице) см. на странице Regions & IP addresses. - Использовать одну security integration: Создайте одну integration с новым статическим поддоменом в качестве redirect URI. В этом случае вам потребуется заново создать все ваши существующие подключения.
Устранение неполадок
Узнать больше


