Настройка Snowflake PrivateLink
Эта функция доступна на следующих уровнях dbt Enterprise:
- Enterprise+
- Virtual Private
Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.
Следующие шаги помогут настроить размещенную в AWS конечную точку Snowflake PrivateLink в мультитенантной среде dbt.
Конечные точки частного подключения не поддерживают соединения между разными облачными провайдерами (AWS, Azure и GCP). Чтобы частное подключение работало, и dbt, и сервер (например, Snowflake) должны быть размещены у одного облачного провайдера. Например, dbt, размещённый в AWS, не может подключаться к сервисам, размещённым в Azure, а dbt, размещённый в Azure, не может подключаться к сервисам, размещённым в GCP.
Пользователям, подключающимся к Snowflake с помощью Snowflake OAuth через соединение AWS PrivateLink из dbt, также потребуется доступ к конечной точке PrivateLink с локальной рабочей станции. По возможности используйте Snowflake External OAuth, чтобы обойти это ограничение.
Из документации Snowflake:
В настоящее время для каждой учетной записи Snowflake SSO может работать только с одним URL учетной записи одновременно: либо с публичным URL учетной записи, либо с URL, связанным с сервисом приватной сетевой связности.
Настройка AWS PrivateLink
В этом разделе описана настройка размещенной в AWS конечной точки Snowflake PrivateLink в dbt platform. Настройку можно выполнить двумя способами:
- Самостоятельная настройка частных конечных точек: самостоятельная настройка конечных точек Snowflake PrivateLink непосредственно в пользовательском интерфейсе dbt platform. В настоящее время доступна в бета-версии.
- Настройка с помощью службы поддержки: для настройки конечных точек Snowflake PrivateLink необходимо обратиться в службу поддержки dbt. Этот способ не предусматривает самостоятельную настройку конечных точек Snowflake PrivateLink.
Самостоятельная настройка частных конечных точек Бета-версия
Самостоятельная настройка частных конечных точек для Snowflake в AWS в настоящее время находится в стадии бета-тестирования и доступна всем клиентам, соответствующим требованиям. Эта функция недоступна для Azure и GCP. Если в настройках вашей учетной записи нет раздела Private endpoints, воспользуйтесь настройкой с помощью службы поддержки.
В этом разделе описан процесс запроса новой конечной точки Snowflake PrivateLink в dbt platform.
Предварительные требования
- Набор разрешений Account admin или Project creator в dbt platform. Пользователи с лицензией IT также могут создавать частные конечные точки.
- Разрешения
ACCOUNTADMINв Snowflake.
Перед началом работы
Прежде чем запрашивать частную конечную точку, добавьте учетную запись AWS компании dbt Labs в список разрешенных в Snowflake. Это однократная настройка для каждой учетной записи Snowflake, которая выполняется через обращение в службу поддержки Snowflake и может занять некоторое время — завершите ее до начала процедуры запроса.
-
Создайте обращение в службу поддержки Snowflake, чтобы разрешить доступ из учетной записи AWS dbt.
- Snowflake предпочитает, чтобы владелец учетной записи создавал обращение самостоятельно, а не через dbt Labs. Дополнительные сведения см. в статье базы знаний Snowflake.
- Укажите идентификатор вашей учетной записи dbt, а также другую информацию, запрашиваемую в статье.
- Идентификатор учетной записи AWS:
346425330055— Примечание: этот идентификатор учетной записи применим только к мультитенантным средам dbt в AWS. Чтобы получить идентификаторы учетных записей AWS Virtual Private/Single-Tenant, обратитесь в службу поддержки dbt.
- Идентификатор учетной записи AWS:
-
Прежде чем продолжить, дождитесь подтверждения от Snowflake о предоставлении доступа.
Запрос новой частной конечной точки
После того как Snowflake подтвердит добавление учетной записи AWS компании dbt Labs в список разрешенных в Snowflake, вы сможете запросить новую частную конечную точку. Для этого выполните следующие действия:
-
В dbt platform перейдите в Account settings → Private endpoints.
-
В таблице Private endpoints просмотрите существующие конечные точки. В таблице представлены все частные конечные точки вашей учетной записи (в том числе не относящиеся к Snowflake) со следующими сведениями:
- Name — имя
- Connection type — тип подключения (например, Snowflake)
- URL
- Connectivity status — состояние подключения (например, Success или Unknown)
- Connections — количество подключений dbt platform, использующих конечную точку
Можно выполнять поиск по Name или URL. В таблице перечислены все частные конечные точки вашей учетной записи, но самостоятельное создание, редактирование и удаление в настоящее время доступны только для Snowflake в AWS.
-
Чтобы запросить новую конечную точку, нажмите Request new.
-
В разделе Provider type убедитесь, что выбран Snowflake. В настоящее время другие поставщики конечных точек не поддерживаются. Если вам нужно подключиться к другому сервису, обратитесь в службу поддержки dbt.
-
Скопируйте SQL-команду из раздела SQL command snippet.
-
Перейдите в Snowflake и выполните SQL-команду, скопированную из dbt platform:
SELECT SYSTEM$GET_PRIVATELINK_CONFIG(); -
Скопируйте результат из Snowflake и вернитесь в dbt platform, чтобы вставить его в поле Snowflake output. Если результат корректен, под текстовым полем появится сообщение наподобие Output looks good. Если возникнет ошибка, ознакомьтесь с сообщением и внесите необходимые исправления.
-
Нажмите Submit request.
-
После отправки появится всплывающее окно с подтверждением (например, Endpoint request submitted). В этом окне можно запросить еще одну конечную точку или вернуться в Private endpoints, чтобы отслеживать статус запроса.
-
Перейдите на страницу Connections и выполните действия из раздела Создание подключения в dbt, чтобы настроить PrivateLink. После настройки PrivateLink на странице Connections новая конечная точка появится в разделе Private endpoints → Associated connections.
Если проверка подключения завершается ошибкой сразу после настройки, это ожидаемо и не означает, что что-то настроено неправильно. Распространение изменений DNS может занять несколько минут. Подождите несколько минут и повторите проверку, прежде чем обращаться в службу поддержки.
Повторные запросы конечных точек
Если вы отправите запрос с идентификатором VPCE, совпадающим с идентификатором существующей конечной точки, dbt platform отобразит всплывающее окно Endpoint already exists с двумя вариантами:
- Reuse existing interface endpoint (по умолчанию, рекомендуется) — связывает новую частную конечную точку с уже одобренной интерфейсной конечной точкой. Используйте этот вариант, если ваша VPCE уже одобрена, чтобы избежать дублирования инфраструктуры.
- Create new interface endpoint — создает новую интерфейсную конечную точку с собственной сетевой политикой. Используйте этот вариант, только если вам нужна отдельная конфигурация сетевой политики.
Выберите нужный вариант и нажмите Confirm & Submit.
Всплывающее окно Endpoint already exists с вариантами создания новой интерфейсной конечной точки или повторного использования существующейУстранение неполадок и ошибки
Если запрос конечной точки завершается ошибкой, dbt platform отображает сведения об ошибке, которыми можно безопасно делиться за пределами организации.
Если вы видите статус ошибки без четких указаний о дальнейших действиях, соберите сведения о запросе (имя конечной точки, время создания, статус и предоставленный вами результат Snowflake) и обратитесь в службу поддержки dbt.
Настройка с помощью службы поддержки
Если раздел Private endpoints недоступен в настройках вашей учетной записи, настройте Snowflake PrivateLink, выполнив следующие действия и отправив запрос в службу поддержки dbt.
Чтобы настроить PrivateLink для экземпляров Snowflake, размещенных в AWS:
- Создайте обращение в службу поддержки Snowflake, чтобы разрешить доступ из учетной записи AWS dbt.
- Snowflake предпочитает, чтобы владелец учетной записи создавал обращение самостоятельно, а не через dbt Labs. Дополнительные сведения см. в статье базы знаний Snowflake.
- Укажите идентификатор вашей учетной записи dbt, а также другую информацию, запрашиваемую в статье.
- Идентификатор учетной записи AWS:
346425330055— Примечание: этот идентификатор учетной записи применим только к мультитенантным средам dbt в AWS. Чтобы получить идентификаторы учетных записей AWS Virtual Private/Single-Tenant, обратитесь в службу поддержки dbt.
- Идентификатор учетной записи AWS:
- Вам необходимы разрешения
ACCOUNTADMINв Snowflake.
-
После того как Snowflake предоставит запрошенный доступ, выполните системную функцию Snowflake SYSTEM$GET_PRIVATELINK_CONFIG и скопируйте результат.
-
Добавьте необходимую информацию в следующий шаблон и отправьте запрос в службу поддержки dbt:
*По умолчанию dbt будет настроен на использование privatelink-account-url из предоставленного результата SYSTEM$GET_PRIVATELINK_CONFIG в качестве конечной точки PrivateLink. По запросу вместо него можно использовать regionless-privatelink-account-url.
** Для использования этой функции необходимо включить Internal Stage PrivateLink в учетной записи Snowflake
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
Создание подключения в dbt
После того как служба поддержки dbt завершит настройку, вы сможете создавать новые подключения с использованием PrivateLink.
- Перейдите в Account Settings → Projects → Create new project.
- В разделе Configure your development environment step выберите Add new connection.
- Вы перейдёте на страницу Add new connection. Выберите Snowflake.
- В разделе Settings выберите PrivateLink Endpoint.
- Выберите частную конечную точку из раскрывающегося списка (поле имени хоста/учётной записи заполнится автоматически).
- Настройте остальные параметры платформы данных.
- Проверьте подключение и сохраните его.
Настройка 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 attributes. Шаги настройки различаются для сред развертывания и разработки; см. раздел Расширенные атрибуты. Используйте значение, аналогичное следующему:
s3_stage_vpce_dns_name: '*.vpce-012345678abcdefgh-4321dcba.s3.us-west-2.vpce.amazonaws.com'
- Сохраните изменения.
Настройка сетевых политик
Если ваша организация использует сетевые политики Snowflake для ограничения доступа к учетной записи Snowflake, необходимо добавить сетевое правило для dbt. Snowflake поддерживает два типа сетевых правил: на основе идентификатора VPCE (рекомендуется) и на основе IP/CIDR. В следующих шагах используется идентификатор VPCE. Если вашей организации требуется сетевая политика на основе IP-адресов, диапазон CIDR недоступен в интерфейсе dbt platform. Чтобы получить его, обратитесь в службу поддержки dbt.
Для создания сетевой политики в Snowflake вам потребуется идентификатор VPCE:
- В dbt platform перейдите в Account settings → Private endpoints
- Нажмите на конечную точку в таблице, затем найдите поле Endpoint identifier на странице сведений о конечной точке.
- Если вы настроили PrivateLink с помощью службы поддержки или раздел Private endpoints недоступен в настройках вашей учетной записи, обратитесь в службу поддержки dbt, чтобы получить идентификатор VPCE.
- Если вы создаете конечную точку для Internal Stage, ее идентификатор VPCE отличается от идентификатора VPCE основной конечной точки сервиса.
Рекомендации по защите как сервиса Snowflake, так и внутренней области хранения см. в документации Snowflake по сетевым политикам и сетевым правилам.
Использование пользовательского интерфейса
Откройте интерфейс Snowflake и выполните следующие действия:
- Перейдите на вкладку Security.
- Нажмите Network Rules.
- Нажмите Add Rule.
- Задайте имя правила.
- Выберите базу данных и схему, в которых будет храниться правило. Этот выбор служит для настройки разрешений и организации объектов; на само правило он не влияет.
- Установите тип
AWS VPCE IDи режимIngress. - Введите в поле идентификатора идентификатор VPCE со страницы сведений о конечной точке в dbt platform (или полученный от службы поддержки dbt, если вы использовали настройку с помощью службы поддержки).
- Нажмите Create Network Rule.
-
На вкладке Network Policy отредактируйте политику, в которую хотите добавить правило. Это может быть политика уровня учетной записи или политика для конкретных пользователей, подключающихся из dbt.
-
Добавьте новое правило в список разрешенных и нажмите Update Network Policy.
Использование SQL
Для быстрой и автоматизированной настройки сетевых правил с помощью SQL в Snowflake используйте следующие команды, которые позволяют создавать и настраивать правила доступа для dbt. Эти примеры SQL показывают, как добавить сетевое правило и соответствующим образом обновить сетевую политику.
- Создайте новое сетевое правило с помощью следующего SQL:
CREATE NETWORK RULE allow_dbt_cloud_access
MODE = INGRESS
TYPE = AWSVPCEID
VALUE_LIST = ('<VPCE_ID>'); -- Замените '<VPCE_ID>' фактическим значением идентификатора VPCE
- Добавьте правило в сетевую политику с помощью следующего SQL:
ALTER NETWORK POLICY <network_policy_name>
ADD ALLOWED_NETWORK_RULE_LIST =('allow_dbt_cloud_access');







