# Настройка Snowflake Private Service Connect

Платформа dbt | Enterprise+

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

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

* Enterprise+
* Virtual Private

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

Следующие шаги помогут вам настроить эндпоинт GCP Snowflake Private Service Connect (PSC) в мультитенантной среде dbt.

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

warning

Соединения GCP Internal Stage PSC в настоящее время не поддерживаются.

## Настройка GCP Private Service Connect

Проект dbt Labs в GCP заранее авторизован для подключения к аккаунтам Snowflake.

Чтобы настроить экземпляры Snowflake, размещённые в GCP, для использования [Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect):

1. Выполните системную функцию Snowflake [SYSTEM$GET\_PRIVATELINK\_CONFIG](https://docs.snowflake.com/en/sql-reference/functions/system_get_privatelink_config.html) и скопируйте результат.

2. Добавьте необходимую информацию в следующий шаблон и отправьте запрос в [службу поддержки dbt](mailto:support@getdbt.com):

 Шаблон письма в поддержку

```text
Subject: New Multi-Tenant GCP PSC Request

- Type: Snowflake
- dbt platform account URL:
- SYSTEM$GET_PRIVATELINK_CONFIG output:
- *Use privatelink-account-url or regionless-privatelink-account-url?:
- dbt GCP multi-tenant environment:
```

*\*По умолчанию dbt будет настроен на использование `privatelink-account-url` из предоставленной конфигурации [SYSTEM$GET\_PRIVATELINK\_CONFIG](https://docs.snowflake.com/en/sql-reference/functions/system_get_privatelink_config.html) в качестве конечной точки PrivateLink. По запросу вместо него можно использовать `regionless-privatelink-account-url`.*

dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.

## Создание подключения в dbt

После того как служба поддержки dbt завершит настройку, вы сможете создавать новые подключения с использованием PrivateLink.

1. Перейдите в **Account Settings** → **Projects** → **Create new project**.
2. В разделе **Configure your development environment step** выберите **Add new connection**.
3. Вы перейдёте на страницу **Add new connection**. Выберите **Snowflake**.
4. В разделе **Settings** выберите **PrivateLink Endpoint**.
5. Выберите частную конечную точку из раскрывающегося списка (поле имени хоста/учётной записи заполнится автоматически).
6. Настройте остальные параметры платформы данных.
7. Проверьте подключение и сохраните его.

## Настройка сетевых политик

Если ваша организация использует [сетевые политики Snowflake](https://docs.snowflake.com/en/user-guide/network-policies) для ограничения доступа к вашей учетной записи Snowflake, необходимо добавить сетевое правило для dbt.

Запросите **идентификатор подключения PSC** в [службе поддержки dbt](mailto:support@getdbt.com), чтобы использовать его в сетевом правиле. Snowflake поддерживает [`GCPPSCID` в качестве типа идентификатора сетевого правила](https://docs.snowflake.com/en/sql-reference/sql/create-network-rule), и именно этот подход рекомендуется использовать. Идентификатор подключения PSC однозначно определяет конечную точку подключения вашей организации, тогда как правила на основе IP-адресов используют диапазоны CIDR, которые могут быть общими для нескольких клиентов dbt.

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

Откройте интерфейс Snowflake и выполните следующие действия:

1. Перейдите на вкладку **Security**.
2. Нажмите **Network Rules**.
3. Нажмите **Add Rule**.
4. Задайте имя правила.
5. Выберите базу данных и схему, в которых будет храниться правило. Этот выбор используется для настройки разрешений и организации объектов; на само правило он не влияет.
6. Установите тип `GCPPSCID` и режим `Ingress`.
7. Введите идентификатор подключения PSC, предоставленный службой поддержки dbt, в поле идентификатора и нажмите **Enter**.
8. Нажмите **Create Network Rule**.
9. На вкладке **Network Policy** отредактируйте политику, в которую хотите добавить правило. Это может быть политика уровня аккаунта или политика для конкретных пользователей, подключающихся из dbt.
10. Добавьте новое правило в список разрешённых и нажмите **Update Network Policy**.

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

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

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

```sql

CREATE NETWORK RULE allow_dbt_cloud_access
  MODE = INGRESS
TYPE = GCPPSCID
  VALUE_LIST = ('<PSC_CONNECTION_ID>'); -- Замените на идентификатор подключения PSC, полученный от службы поддержки dbt
```

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

```sql

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