Настройка Snowflake и Azure Private Link
Эта функция доступна на следующих уровнях dbt Enterprise:
- Enterprise+
- Virtual Private
Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.
Следующие шаги помогут настроить размещенную в Azure конечную точку Snowflake Private Link в мультитенантной среде dbt.
Конечные точки частного подключения не поддерживают соединения между разными облачными провайдерами (AWS, Azure и GCP). Чтобы частное подключение работало, и dbt, и сервер (например, Snowflake) должны быть размещены у одного облачного провайдера. Например, dbt, размещённый в AWS, не может подключаться к сервисам, размещённым в Azure, а dbt, размещённый в Azure, не может подключаться к сервисам, размещённым в GCP.
Пользователям, подключающимся к Snowflake с помощью Snowflake OAuth через соединение Azure Private Link из dbt, также необходим доступ к конечной точке Private Link с локальной рабочей станции. По возможности используйте Snowflake External OAuth, чтобы обойти это ограничение.
Документация Snowflake:
В настоящее время для любой учетной записи Snowflake SSO может работать только с одним URL учетной записи одновременно: либо с публичным URL учетной записи, либо с URL, связанным с сервисом приватного подключения
Настройка Azure Private Link
Чтобы настроить экземпляры Snowflake, размещённые в Azure, для использования Private Link:
- В вашей учетной записи Snowflake выполните следующие SQL-запросы и скопируйте вывод:
USE ROLE ACCOUNTADMIN;
SELECT SYSTEM$GET_PRIVATELINK_CONFIG();
- Добавьте необходимую информацию в следующий шаблон и отправьте запрос в службу поддержки dbt:
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
-
Служба поддержки dbt предоставит вам
private endpoint resource_idнашегоprivate_endpoint, чтобы вы могли завершить настройку PrivateLink, обратившись в службу поддержки Snowflake. -
(Опционально) При включении Azure private endpoint для Internal Stage также будет предоставлен
resource_idдля endpoint’а Internal Stage.
Как администратор Snowflake, вызовите функцию SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS, передав в качестве аргумента значение resource ID. Это авторизует доступ к внутреннему stage Snowflake через private endpoint.
USE ROLE ACCOUNTADMIN;
-- Azure Private Link
SELECT SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS ( 'AZURE_PRIVATE_ENDPOINT_RESOURCE_ID' );
Создание подключения в dbt
После того как служба поддержки dbt завершит настройку, вы сможете создавать новые подключения с использованием Private Link.
- Перейдите в Account Settings → Projects → Create new project.
- В разделе Configure your development environment step выберите Add new connection.
- Вы перейдёте на страницу Add new connection. Выберите Snowflake.
- В разделе Settings выберите PrivateLink Endpoint.
- Выберите частную конечную точку из раскрывающегося списка (поле имени хоста/учётной записи заполнится автоматически).
- Настройте остальные параметры платформы данных.
- Проверьте подключение и сохраните его.
Настройка сетевых политик
Если ваша организация использует сетевые политики Snowflake для ограничения доступа к вашей учетной записи Snowflake, необходимо добавить сетевое правило для dbt.
Используйте Azure Link ID, чтобы указать частную конечную точку dbt в сетевом правиле.
Поиск Azure Link ID endpoint’а
Snowflake позволяет найти Azure Link ID настроенных конечных точек, выполнив команду SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS. Используйте следующий код, чтобы извлечь значение Link ID и имя связанного ресурса конечной точки:
select
value:linkIdentifier, REGEXP_SUBSTR(value: endpointId, '([^\/]+$)')
from
table(
flatten(
input => parse_json(system$get_privatelink_authorized_endpoints())
)
);
Использование UI
Откройте UI Snowflake и выполните следующие шаги:
- Перейдите на вкладку Security.
- Нажмите Network Rules.
- Нажмите + Network Rule.
- Задайте имя правила.
- Выберите базу данных и схему, в которых будет храниться правило. Эти настройки используются для управления правами и организации и не влияют на само правило.
- Установите тип
Azure Link ID, а режим —Ingress. - В поле identifier введите Azure Link ID, полученный в предыдущем разделе, и нажмите Enter.
- Нажмите Create Network Rule.
-
На вкладке Network Policy отредактируйте политику, в которую хотите добавить правило. Это может быть политика уровня аккаунта или политика для пользователей, подключающихся из dbt.
-
Добавьте новое правило в список разрешённых и нажмите Update Network Policy.
Для быстрой и автоматизированной настройки сетевых правил через SQL в Snowflake следующие команды позволяют создать и настроить правила доступа для . Эти SQL-примеры демонстрируют, как добавить сетевое правило и обновить Network Policy.
Для быстрой и автоматизированной настройки сетевых правил с помощью SQL в Snowflake следующие команды позволяют создать и настроить правила доступа для dbt. Эти примеры SQL показывают, как добавить сетевое правило и соответствующим образом обновить сетевую политику.
- Создайте новое сетевое правило с помощью следующего SQL:
CREATE NETWORK RULE allow_dbt_cloud_access
MODE = INGRESS
TYPE = AZURELINKID
VALUE_LIST = ('<Azure Link ID>'); -- Замените '<Azure Link ID>' на фактический ID, полученный выше
- Добавьте правило в Network Policy с помощью следующего SQL:
ALTER NETWORK POLICY <network_policy_name>
ADD ALLOWED_NETWORK_RULE_LIST =('allow_dbt_cloud_access');


