Настройка PrivateLink для самостоятельно размещённого облачного VCS Enterprise +
Функция приватного подключения доступна для следующих Enterprise-тарифов dbt:
- Business Critical
- Virtual Private
Чтобы узнать больше об этих тарифах, свяжитесь с нами по адресу sales@getdbt.com.
AWS PrivateLink обеспечивает приватное подключение от dbt к вашей самостоятельно размещённой облачной системе управления версиями (VCS), направляя запросы через вашу виртуальную частную сеть (VPC). Такой тип подключения не требует публичного раскрытия конечной точки ваших VCS‑репозиториев и не предполагает прохождения запросов через публичный интернет, что обеспечивает максимально возможный уровень безопасности. AWS рекомендует использовать подключение через PrivateLink в рамках своего Well-Architected Framework и подробно описывает этот паттерн в разделе Shared Services документа AWS PrivateLink whitepaper.
Вы узнаете, на высоком уровне, какие ресурсы необходимы для реализации этого решения. Облачные среды и процессы развертывания сильно различаются, поэтому информация из этого руководства может потребовать адаптации под ваши требования.
Обзор соединения PrivateLink
Необходимые ресурсы для создания соединения
Создание соединения Interface VPC PrivateLink требует создания нескольких ресурсов AWS в вашем аккаунте AWS и частной сети, содержащей самоуправляемый экземпляр VCS. Вы несете ответственность за развертывание и обслуживание этих ресурсов. После развертывания информация о соединении и разрешения передаются в dbt Labs для завершения соединения, что позволяет прямое частное подключение VPC к VPC.
Этот подход отличается от других и не требует настраивать VPC peering между вашими аккаунтами AWS и dbt.
1. Развертывание ресурсов AWS
Создание соединения Interface VPC PrivateLink требует создания нескольких ресурсов AWS в аккаунте, содержащем или подключенном к вашему самоуправляемому облачному VCS. Эти ресурсы могут быть созданы через AWS Console, AWS CLI или Infrastructure-as-Code, такие как Terraform или AWS CloudFormation.
- Security Group (только для размещенных в AWS) — Если вы подключаетесь к существующей установке VCS, это, вероятно, уже существует, однако, возможно, вам потребуется добавить или изменить правила Security Group для принятия трафика от Network Load Balancer (NLB), созданного для этой Endpoint Service.
- Target Group(s) - Target Group прикрепляется к Listener на NLB и отвечает за маршрутизацию входящих запросов к здоровым целям в группе. Если подключение к системе VCS осуществляется как по SSH, так и по HTTPS, необходимо создать две Target Groups.
- Тип цели (выберите наиболее подходящий):
- Instance/ASG: Выберите существующие экземпляры EC2, на которых работает система VCS, или группу автоматического масштабирования (ASG) для автоматического подключения любых экземпляров, запущенных из этой ASG.
- Application Load Balancer (ALB): Выберите ALB, который уже имеет прикрепленные экземпляры VCS EC2 (только HTTP/S трафик).
- IP Addresses: Выберите IP-адрес(а) экземпляров EC2, на которых установлена система VCS. Имейте в виду, что IP-адрес экземпляра EC2 может измениться, если экземпляр будет перезапущен по какой-либо причине.
- Протокол/Порт: Выберите одну пару протокол/порт для каждой Target Group, например:
- TG1 - SSH: TCP/22
- Тип цели (выберите наиболее подходящий):
- TG2 — HTTPS: TCP/443 или TLS, если вы хотите прикрепить сертификат для расшифровки TLS‑соединений (подробнее).
- VPC: Выберите VPC, в котором будут созданы VPC Endpoint Service и NLB.
- Health checks: Цели должны зарегистрироваться как healthy, чтобы NLB начал перенаправлять запросы. Настройте проверку состояния, подходящую для вашего сервиса и протокола Target Group (подробнее).
- Register targets: Зарегистрируйте цели (см. выше) для сервиса VCS (подробнее). Крайне важно убедиться, что цели находятся в состоянии healthy, прежде чем пытаться установить соединение со стороны dbt.
- Network Load Balancer (NLB) — требуется создать Listener, который будет привязан к только что созданным Target Group для порта
443и/или22, в зависимости от конфигурации.- Scheme: Internal
- IP address type: IPv4
- Network mapping: Выберите VPC, в котором разворачиваются VPC Endpoint Service и NLB, и выберите подсети как минимум в двух зонах доступности (Availability Zones).
- Security Groups: Network Load Balancer (NLB), связанный с VPC Endpoint Service, либо не должен иметь привязанных Security Group, либо Security Group должна содержать правило, разрешающее запросы из соответствующих private CIDR(s) dbt. Обратите внимание, что это отличается от статических публичных IP‑адресов, перечисленных на странице dbt Access, Regions, & IP addresses. Корректные private CIDR(s) могут быть предоставлены службой поддержки dbt по запросу. При необходимости временное добавление разрешающего правила
10.0.0.0/8позволит обеспечить подключение до тех пор, пока правило не будет уточнено до меньшего диапазона CIDR, предоставленного dbt. - Listeners: Создайте по одному Listener для каждой Target Group, который сопоставляет соответствующий входящий порт с соответствующей Target Group (подробнее).
- Endpoint Service — VPC Endpoint Service обеспечивает VPC‑to‑VPC подключение, маршрутизируя входящие запросы к настроенному балансировщику нагрузки.
- Load balancer type: Network.
- Load balancer: Подключите NLB, созданный на предыдущем шаге.
- Acceptance required (recommended): При включении требует, чтобы каждый новый запрос на подключение к VPC Endpoint Service был принят клиентом перед тем, как будет разрешена связность (подробнее).
Мы настоятельно рекомендуем включить балансировку нагрузки между зонами для вашего NLB или Target Group; для некоторых подключений она может быть обязательной. Балансировка между зонами также может улучшить распределение маршрутизации и устойчивость соединений. Учтите, что межзональная связность может повлечь дополнительные расходы на передачу данных, хотя для запросов из dbt они должны быть минимальными.
2. Предоставление доступа аккаунту AWS dbt к VPC Endpoint Service
После развертывания этих ресурсов необходимо предоставить доступ аккаунту AWS dbt Labs для создания VPC Endpoint в нашей VPC. На развернутом VPC Endpoint Service нажмите вкладку Allow principals. Нажмите Allow principals, чтобы предоставить доступ. Введите ARN следующей роли IAM в соответствующем производственном аккаунте AWS и сохраните изменения (подробности).
- Principal:
arn:aws:iam::346425330055:role/MTPL_Admin
3. Получение имени VPC Endpoint Service
После того как VPC Endpoint Service будет создан и настроен, найдите имя сервиса в консоли AWS, перейдя в раздел VPC → Endpoint Services и выбрав соответствующий endpoint service. Скопируйте значение поля service name и укажите его в обращении в службу поддержки dbt.
Если для подключения к сервису VCS требуется пользовательский домен и/или URL для TLS, команда dbt Labs Infrastructure может настроить private hosted zone в частной сети dbt. Например:
- Private hosted zone: examplecorp.com
- DNS record: github.examplecorp.com
4. Добавьте необходимую информацию в шаблон ниже и отправьте запрос в dbt Support:
Subject: New Multi-Tenant PrivateLink Request
- Type: VCS Interface-type
- VPC Endpoint Service Name:
- Custom DNS (if HTTPS)
- Private hosted zone:
- DNS record:
- VCS install AWS Region (for example, us-east-1, eu-west-2):
- dbt AWS multi-tenant environment (US, EMEA, AU):
dbt Labs выполнит настройку приватного подключения от вашего имени. Пожалуйста, заложите 3–5 рабочих дней на завершение этого процесса. Служба поддержки свяжется с вами, когда конечная точка (endpoint) будет доступна.
5. Принятие запроса на соединение
Когда вы получите уведомление о том, что ресурсы развернуты в среде dbt, вам необходимо принять подключение к endpoint (если только VPC Endpoint Service не настроен на автоматическое принятие запросов на подключение). Запросы можно принять через консоль AWS, как показано ниже, или с помощью AWS CLI.
После того как вы примете запрос на подключение к endpoint, вы сможете использовать PrivateLink endpoint в dbt.
Настройка в dbt
После того как dbt подтвердит, что интеграция PrivateLink завершена, вы можете использовать ее в новой или существующей конфигурации git.
Чтобы настроить новую git‑интеграцию с PrivateLink:
- Нажмите на имя своей учетной записи в нижнем левом меню и перейдите в Account settings > Projects.
- Нажмите New project.
- Задайте имя проекта и настройте среду разработки.
- В разделе Set up repository нажмите Git clone.
- В качестве типа подключения выберите PrivateLink Endpoint.
Настроенные интеграции появятся в выпадающем списке. - Выберите настроенный endpoint из выпадающего списка.
- Нажмите Save.
Чтобы настроить существующую git‑интеграцию с PrivateLink:
- Щёлкните имя своей учётной записи в нижнем левом меню и перейдите в Account settings > Integrations.
- В разделе Gitlab выберите PrivateLink Endpoint в качестве типа подключения. Настроенные интеграции появятся в выпадающем меню.
- Выберите настроенную конечную точку из выпадающего списка.
- Нажмите Save.
Устранение неполадок
Если эндпоинт PrivateLink был создан и настроен в dbt, но соединение по‑прежнему не работает, проверьте следующие элементы сетевой конфигурации, чтобы убедиться, что запросы и ответы могут успешно маршрутизироваться между dbt и базовым сервисом.
Конфигурация
Начните с конфигурации:
Мониторинг
Чтобы помочь изолировать проблемы с подключением по PrivateLink от dbt, можно использовать несколько источников мониторинга для проверки активности запросов. Для того чтобы в мониторинге появились данные, запросы сначала должны быть отправлены на endpoint. Обратитесь в службу поддержки dbt, чтобы узнать, когда выполнялось тестирование подключения, или запросить новые попытки подключения. Используйте это время, чтобы сопоставить его с активностью в следующих источниках мониторинга.



