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

Настройка Snowflake и Azure Private Link

Доступно для определённых Enterprise-тарифов

Функция приватного подключения доступна для следующих Enterprise-тарифов dbt:

  • Business Critical
  • Virtual Private

Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.

Следующие шаги проводят вас через настройку endpoint’а Snowflake Private Link, размещённого в Azure, в многоарендной среде dbt.

Частные конечные точки подключения не могут соединяться между разными облачными провайдерами (AWS, Azure и GCP). Чтобы частное подключение работало, и dbt, и сервер (например, Snowflake) должны быть размещены у одного и того же облачного провайдера. Например, dbt, размещённый в AWS, не может подключаться к сервисам, размещённым в Azure, а dbt, размещённый в Azure, не может подключаться к сервисам, размещённым в GCP.

Snowflake OAuth с PrivateLink

Пользователям, которые подключаются к Snowflake с использованием Snowflake OAuth через AWS PrivateLink из dbt, также потребуется доступ к PrivateLink endpoint’у с их локальной рабочей станции. Где это возможно, используйте Snowflake External OAuth, чтобы обойти это ограничение.

Документация Snowflake:

В настоящее время для любой учетной записи Snowflake SSO может работать только с одним URL учетной записи одновременно: либо с публичным URL учетной записи, либо с URL, связанным с сервисом приватного подключения

Чтобы настроить экземпляры Snowflake, размещённые в Azure, для использования Private Link:

  1. В вашей учетной записи Snowflake выполните следующие SQL-запросы и скопируйте вывод:

USE ROLE ACCOUNTADMIN;
SELECT SYSTEM$GET_PRIVATELINK_CONFIG();

  1. Добавьте необходимую информацию в следующий шаблон и отправьте запрос в службу поддержки dbt:
Subject: New Multi-Tenant Azure PrivateLink Request
- Type: Snowflake
- The output from SYSTEM$GET_PRIVATELINK_CONFIG:
- Include the privatelink-pls-id
- Enable Internal Stage Private Link? Y/N (If Y, output must include `privatelink-internal-stage`)
- dbt Azure multi-tenant environment (EMEA):
  1. Служба поддержки dbt предоставит вам private endpoint resource_id нашего private_endpoint, а также диапазон CIDR, чтобы вы могли завершить настройку PrivateLink, обратившись в службу поддержки Snowflake.

  2. (Опционально) При включении 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 SYSTEMS$AUTHORIZE_STAGE_PRIVATELINK_ACCESS ( `AZURE PRIVATE ENDPOINT RESOURCE ID` );

Настройка Network Policies

Если в вашей организации используются Snowflake Network Policies для ограничения доступа к учетной записи Snowflake, вам потребуется добавить сетевое правило для dbt.

Snowflake позволяет определить Azure Link ID настроенных endpoint’ов, выполнив соответствующую команду. Следующий запрос можно использовать для более точного выделения значения Link ID и связанного с ним имени ресурса endpoint’а:


select
value:linkIdentifier, REGEXP_SUBSTR(value: endpointId, '([^\/]+$)')
from
table(
flatten(
input => parse_json(system$get_privatelink_authorized_endpoints())
)
);

Использование UI

Откройте UI Snowflake и выполните следующие шаги:

  1. Перейдите на вкладку Security.
  2. Нажмите Network Rules.
  3. Нажмите + Network Rule.
  4. Задайте имя правила.
  5. Выберите базу данных и схему, в которых будет храниться правило. Эти настройки используются для управления правами и организации и не влияют на само правило.
  6. Установите тип Azure Link ID, а режим — Ingress.
  7. В поле identifier введите Azure Link ID, полученный в предыдущем разделе, и нажмите Enter.
  8. Нажмите Create Network Rule.
Создание Network RuleСоздание Network Rule
  1. На вкладке Network Policy отредактируйте политику, в которую вы хотите добавить правило. Это может быть политика на уровне учетной записи или политика, применяемая только к пользователям, подключающимся из dbt.

  2. Добавьте новое правило в список разрешённых и нажмите Update Network Policy.

Обновление Network PolicyОбновление Network Policy

Использование SQL

Для быстрой и автоматизированной настройки сетевых правил через SQL в Snowflake следующие команды позволяют создать и настроить правила доступа для dbt. Эти SQL-примеры демонстрируют, как добавить сетевое правило и обновить Network Policy.

  1. Создайте новое сетевое правило с помощью следующего SQL:

CREATE NETWORK RULE allow_dbt_cloud_access
MODE = INGRESS
TYPE = AZURELINKID
VALUE_LIST = ('<Azure Link ID>'); -- Замените '<Azure Link ID>' на фактический ID, полученный выше

  1. Добавьте правило в Network Policy с помощью следующего SQL:

ALTER NETWORK POLICY <network_policy_name>
ADD ALLOWED_NETWORK_RULE_LIST =('allow_dbt_cloud_access');

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

0
Loading