Настройка AWS PrivateLink для Redshift
Функция PrivateLink доступна на следующих уровнях dbt Cloud Enterprise:
- Business Critical
- Virtual Private
Чтобы узнать больше об этих уровнях, свяжитесь с нами по адресу sales@getdbt.com.
AWS предоставляет два различных способа создания VPC-эндпоинта PrivateLink для кластера Redshift, работающего в другой VPC:
dbt Cloud поддерживает оба типа эндпоинтов, но при выборе типа эндпоинта необходимо учитывать ряд факторов. Управляемые Redshift обеспечивают гораздо более простую настройку без дополнительных затрат, что может сделать их предпочтительным вариантом для многих, но они могут быть недоступны во всех средах. Основываясь на этих критериях, вам нужно определить, какой тип подходит для вашей системы. Следуйте инструкциям из раздела ниже, который соответствует выбранному вами типу эндпоинта.
Конечные точки PrivateLink не могут подключаться между различными облачными провайдерами. Для того чтобы соединение PrivateLink работало, как dbt Cloud, так и сервер (например, Redshift) должны быть размещены у одного и того же облачного провайдера. Например, dbt Cloud, размещенный на AWS, не может подключаться через PrivateLink к сервисам, размещенным на Azure, и dbt Cloud, размещенный на Azure, не может подключаться через PrivateLink к сервисам, размещенным на AWS.
Хотя Redshift Serverless поддерживает управляемые Redshift VPC-эндпоинты, эта функциональность в настоящее время недоступна между учетными записями AWS. Из-за этого ограничения для подключения PrivateLink кластера Redshift Serverless из dbt Cloud необходимо использовать интерфейсный VPC-эндпоинт.
Настройка управляемого Redshift PrivateLink
- На работающем кластере Redshift выберите вкладку Properties.
- В разделе Granted accounts нажмите Grant access.
-
Введите ID учетной записи AWS:
346425330055
- ПРИМЕЧАНИЕ: Этот ID учетной записи применяется только к средам dbt Cloud Multi-Tenant. Для ID учетных записей Virtual Private/Single-Tenant, пожалуйста, свяжитесь с поддержкой. -
Выберите Grant access to all VPCs —или— (опционально) свяжитесь с поддержкой для получения соответствующего регионального ID VPC, чтобы указать его в поле Grant access to specific VPCs.
- Добавьте необходимую информацию в следующий шаблон и отправьте ваш запрос в поддержку dbt:
Тема: Новый запрос на Multi-Tenant PrivateLink
- Тип: Управляемый Redshift
- Имя кластера Redshift:
- ID учетной записи AWS кластера Redshift:
- Регион AWS кластера Redshift (например, us-east-1, eu-west-2):
- Среда dbt Cloud multi-tenant (US, EMEA, AU):
dbt Labs будет работать от вашего имени для завершения настройки PrivateLink. Пожалуйста, выделите 3-5 рабочих дней на завершение этого процесса. Поддержка свяжется с вами, когда конечная точка будет доступна.
Настройка интерфейсного PrivateLink для Redshift
1. Подготовка ресурсов AWS
Создание интерфейсного VPC PrivateLink соединения требует создания нескольких ресурсов AWS в учетной записи, содержащей кластер Redshift:
-
Security Group — Если вы подключаетесь к существующему кластеру Redshift, это, вероятно, уже существует, однако вам может потребоваться добавить или изменить правила Security Group, чтобы принимать трафик от Network Load Balancer (NLB), созданного для этого Endpoint Service.
-
Target Group — Target Group будет прикреплена к NLB, чтобы указать, куда направлять запросы. Существуют различные типы целей для Target Groups NLB, но вы будете использовать тип IP-адреса.
-
Тип цели: IP
-
Стандартный Redshift
- Используйте IP-адреса из Network Interfaces кластера Redshift, когда это возможно. Хотя IP-адреса, указанные в разделе Node IP addresses, будут работать, они также более подвержены изменениям.
- Вероятно, будет только один сетевой интерфейс (NI) в начале, но если кластер перейдет в другую зону доступности (AZ), будет создан новый NI для этой AZ. IP NI из оригинальной AZ все еще будет работать, но новый IP NI также может быть добавлен в Target Group. Если добавляются дополнительные IP, обратите внимание, что NLB также должен добавить соответствующую AZ. После создания NI(ы) должны оставаться неизменными (это наше наблюдение из тестирования, но AWS официально это не документирует).
-
Redshift Serverless
- Чтобы найти IP-адреса для экземпляра Redshift Serverless, найдите и скопируйте конечную точку (только URL, указанный перед портом) в разделе конфигурации Workgroup в консоли AWS для экземпляра.
- Из командной строки выполните команду
nslookup <endpoint>
, используя конечную точку, найденную на предыдущем шаге, и используйте связанные IP для Target Group.
-
-
Протокол Target Group: TCP
-
-
Network Load Balancer (NLB) — Требуется создание Listener, который прикрепляется к вновь созданной Target Group для порта
5439
- Схема: Внутренняя
- Тип IP-адреса: IPv4
- Сетевое отображение: Выберите VPC, в которой развертываются VPC Endpoint Service и NLB, и выберите подсети как минимум из двух зон доступности.
- Security Groups: Network Load Balancer (NLB), связанный с VPC Endpoint Service, должен либо не иметь связанной группы безопасности, либо группа безопасности должна иметь правило, позволяющее запросы от соответствующих частных CIDR dbt Cloud. Обратите внимание, что это отличается от статических публичных IP, указанных на странице dbt Cloud Доступ, регионы и IP-адреса. Поддержка dbt может предоставить правильные частные CIDR по запросу. Если необходимо, до того как вы сможете уточнить правило до меньшего CIDR, предоставленного dbt, разрешите подключение, временно добавив правило разрешения
10.0.0.0/8
. - Listeners: Создайте один listener на каждую целевую группу, который сопоставляет соответствующий входящий порт с соответствующей целевой группой (подробности).
-
VPC Endpoint Service — Прикрепите к вновь созданному NLB.
- Требуется принятие (опционально) — Требует принять наш запрос на подключение после того, как dbt создаст эндпоинт.
Мы настоятельно рекомендуем использовать балансировку нагрузки между зонами для вашего NLB или группы целевых ресурсов; некоторые соединения могут требовать этого. Балансировка нагрузки между зонами также может улучшить распределение маршрутизации и устойчивость соединений. Обратите внимание, что подключение между зонами может повлечь дополнительные расходы на передачу данных, хотя для запросов из dbt Cloud они должны быть минимальными.
2. Предоставление доступа учетной записи AWS dbt к VPC Endpoint Service
На подготовленном VPC Endpoint Service нажмите вкладку Allow principals. Нажмите Allow principals, чтобы предоставить доступ. Введите ARN корневого пользователя в соответствующей производственной учетной записи AWS и сохраните изменения.
- Principal:
arn:aws:iam::346425330055:role/MTPL_Admin
3. Получение имени VPC Endpoint Service
После того как VPC Endpoint Service будет подготовлен, вы можете найти имя сервиса в консоли AWS, перейдя в VPC → Endpoint Services и выбрав соответствующий сервис эндпоинта. Вы можете скопировать значение поля имени сервиса и включить его в ваше сообщение в поддержку dbt Cloud.