Настройка Snowflake PrivateLink Enterprise +
Функция приватного подключения доступна для следующих Enterprise-тарифов dbt:
- Business Critical
- Virtual Private
Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.
Следующие шаги проведут вас через настройку конечной точки Snowflake PrivateLink, размещённой в AWS, в многоарендной среде dbt.
Частные конечные точки подключения не могут соединяться между разными облачными провайдерами (AWS, Azure и GCP). Чтобы частное подключение работало, и dbt, и сервер (например, Snowflake) должны быть размещены у одного и того же облачного провайдера. Например, dbt, размещённый в AWS, не может подключаться к сервисам, размещённым в Azure, а dbt, размещённый в Azure, не может подключаться к сервисам, размещённым в GCP.
Пользователям, которые подключаются к Snowflake с помощью Snowflake OAuth через соединение AWS PrivateLink из dbt, также потребуется доступ к PrivateLink endpoint с их локальной рабочей станции. По возможности используйте Snowflake External OAuth, чтобы обойти это ограничение.
Из документации Snowflake:
В настоящее время для каждой учетной записи Snowflake SSO может работать только с одним URL учетной записи одновременно: либо с публичным URL учетной записи, либо с URL, связанным с сервисом приватной сетевой связности.
Настройка AWS PrivateLink
Чтобы настроить экземпляры Snowflake, размещенные на AWS, для PrivateLink:
- Откройте обращение в службу поддержки Snowflake, чтобы разрешить доступ из AWS или Entra ID аккаунта dbt.
- Snowflake предпочитает, чтобы обращение в поддержку открывал непосредственно владелец аккаунта, а не dbt Labs от его имени. Подробнее см. в статье базы знаний Snowflake.
- Предоставьте им ID вашего аккаунта dbt вместе с любой другой информацией, запрашиваемой в статье.
- AWS account ID:
346425330055— ПРИМЕЧАНИЕ: этот ID аккаунта применяется только к AWS multi-tenant окружениям dbt. Для AWS Virtual Private / Single-Tenant ID аккаунтов, пожалуйста, свяжитесь со службой поддержки.
- AWS account ID:
- Для отправки обращения в поддержку вам потребуется уровень доступа
ACCOUNTADMINк экземпляру Snowflake.
-
После того как Snowflake предоставит запрашиваемый доступ, выполните системную функцию Snowflake SYSTEM$GET_PRIVATELINK_CONFIG и скопируйте вывод.
-
Добавьте необходимую информацию в следующий шаблон и отправьте ваш запрос в dbt Support:
Subject: New Multi-Tenant (Azure or AWS) PrivateLink Request
- Type: Snowflake
- SYSTEM$GET_PRIVATELINK_CONFIG output:
- *Use privatelink-account-url or regionless-privatelink-account-url?:
- **Create Internal Stage PrivateLink endpoint? (Y/N):
- dbt AWS multi-tenant environment (US, EMEA, AU):
*По умолчанию dbt будет настроен на использование privatelink-account-url из предоставленного вывода SYSTEM$GET_PRIVATELINK_CONFIG в качестве PrivateLink endpoint. По запросу вместо него может быть использован regionless-privatelink-account-url.
** Для использования этой возможности Internal Stage PrivateLink должен быть включён на аккаунте Snowflake.
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
Создайте подключение в dbt
После того как dbt завершит настройку поддержки, вы сможете приступить к созданию новых подключений с использованием PrivateLink.
- Перейдите в Настройки → Создать новый проект → выберите Snowflake.
- Вы увидите две радиокнопки: Публичное и Частное. Выберите Частное.
- Выберите частную конечную точку из выпадающего списка (это автоматически заполнит поле имени хоста/учетной записи).
- Настройте остальные детали платформы данных.
- Проверьте ваше подключение и сохраните его.
Настройка Internal Stage PrivateLink в dbt
Если для Internal Stage был настроен эндпоинт PrivateLink, ваши окружения dbt должны быть сконфигурированы так, чтобы использовать этот эндпоинт вместо значения по умолчанию, заданного для аккаунта в Snowflake.
- Получите DNS эндпоинта Internal Stage PrivateLink у поддержки dbt. Например,
*.vpce-012345678abcdefgh-4321dcba.s3.us-west-2.vpce.amazonaws.com. - В нужном dbt‑проекте перейдите в Orchestration → Environments.
- В любом окружении, которое должно использовать эндпоинт dbt Internal Stage PrivateLink, задайте Extended Attribute, например так:
s3_stage_vpce_dns_name: '*.vpce-012345678abcdefgh-4321dcba.s3.us-west-2.vpce.amazonaws.com'
- Сохраните изменения
Настройка сетевых политик
Если в вашей организации используются Snowflake Network Policies для ограничения доступа к аккаунту Snowflake, вам потребуется добавить сетевое правило для dbt.
Вы можете запросить VPCE ID в службе поддержки dbt Support, которые затем можно использовать для создания сетевой политики. Обратите внимание: при создании endpoint для Internal Stage VPCE ID будет отличаться от VPCE ID основного endpoint сервиса.
Рекомендации по защите как сервиса Snowflake, так и Internal Stage см. в документации Snowflake по network policies и network rules.
Использование интерфейса
Откройте интерфейс Snowflake и выполните следующие шаги:
- Перейдите на вкладку Security.
- Нажмите Network Rules.
- Нажмите Add Rule.
- Задайте имя правила.
- Выберите базу данных и схему, в которых будет храниться правило. Эти параметры используются для настройки прав доступа и организационных целей; они не влияют на само правило.
- Установите тип
AWS VPCE ID, а режим —Ingress. - Введите VPCE ID, предоставленный службой поддержки dbt, в поле идентификатора и нажмите Enter.
- Нажмите Create Network Rule.
- На вкладке Network Policy отредактируйте политику, в которую вы хотите добавить правило. Это может быть политика на уровне аккаунта или политика, специфичная для пользователей, подключающихся из dbt.
Использование SQL
Для быстрой и автоматизированной настройки сетевых правил через SQL в Snowflake следующие команды позволяют создать и настроить правила доступа для dbt Cloud. Эти примеры SQL демонстрируют, как добавить сетевое правило и обновить вашу сетевую политику соответствующим образом.
Для быстрого и автоматизированного задания сетевых правил с помощью SQL в Snowflake можно использовать следующие команды, которые позволяют создавать и настраивать правила доступа для dbt. Эти примеры SQL демонстрируют, как добавить сетевое правило и соответствующим образом обновить сетевую политику.
- Создайте новое сетевое правило с помощью следующего SQL:
CREATE NETWORK RULE allow_dbt_cloud_access
MODE = INGRESS
TYPE = AWSVPCEID
VALUE_LIST = ('<VPCE_ID>'); -- Замените '<VPCE_ID>' на фактический ID, предоставленный
- Добавьте правило в сетевую политику с помощью следующего SQL:
ALTER NETWORK POLICY <network_policy_name>
ADD ALLOWED_NETWORK_RULE_LIST =('allow_dbt_cloud_access');



