Архитектура dbt Cloud
Эта страница предназначена для специалистов и тех, кто интересуется архитектурой и потоками данных dbt Cloud.
Об архитектуре dbt Cloud
Приложение dbt Cloud состоит из двух типов компонентов: статических и динамических. Статические компоненты всегда работают для обеспечения высокой доступности функций dbt Cloud, таких как веб-приложение dbt Cloud. Динамические компоненты создаются по мере необходимости для выполнения задач, таких как фоновые задания или запросы на использование IDE.
dbt Cloud доступен в большинстве регионов мира как в одноарендной (AWS и Azure), так и в многоарендной конфигурациях.
dbt Cloud использует PostgreSQL для своего бэкенда, системы объектного хранения, совместимые с S3, для логов и артефактов, а также решение для хранения на базе Kubernetes для создания динамических, постоянных томов.
Все данные, находящиеся на серверах dbt Cloud, защищены с использованием шифрования AES-256.
Для более детального разбора приложений dbt Cloud скачайте PDF с руководством по продвинутой архитектуре.
Коммуникация
dbt Cloud может взаимодействовать с несколькими внешними сервисами, включая платформы данных, git-репозитории, сервисы аутентификации и директории. Все коммуникации происходят через HTTPS (попытки подключения через HTTP перенаправляются на HTTPS). dbt Cloud шифрует данные в пути с использованием криптографического протокола TLS 1.2.
TLS (Transport Layer Security) 1.2 — это промышленный стандартный протокол для шифрования конфиденциальных данных при их передаче через публичный интернет (который не предоставляет встроенного шифрования).
Типичный сценарий, который может часто встречаться, — это сотрудник, работающий в общественном месте, таком как аэропорт или кафе. Пользователь может быть подключен к небезопасной публичной сети, предоставляемой учреждением, к которой подключены и многие другие. Что, если среди них есть злоумышленник, запускающий программу, способную "захватывать" сетевые пакеты и анализировать их по воздуху?
Когда этот пользователь получает доступ к dbt Cloud и запускает модели, взаимодействующие с платформой данных, информация, отправляемая с его компьютера и обратно, шифруется с использованием TLS 1.2.
Если этот пользователь выполняет команду, которая инициализирует связь между dbt Cloud и хранилищем данных (или git-репозиторием, или сервисом аутентификации) через интернет, эта связь также шифруется. Это означает, что, хотя злоумышленник технически может видеть трафик, движущийся по этой небезопасной сети, он не может прочитать или каким-либо образом проанализировать информацию. Он не сможет подслушать или взломать информацию ни в коем случае. Он увидит бессмысленный набор символов, который никто не сможет расшифровать.
Для более детальной информации о наших практиках безопасности прочитайте нашу страницу безопасности.
Взаимодействие с хранилищем данных
Основная роль dbt Cloud — это обработка данных, а не их хранение. Приложение dbt Cloud позволяет пользователям отправлять SQL в хранилище для трансформации. Однако пользователи могут отправлять SQL, который возвращает данные клиентов в приложение dbt Cloud. Эти данные никогда не сохраняются и будут существовать только в памяти на экземпляре в течение сеанса. Чтобы правильно защитить данные клиентов, необходимо применить соответствующие разрешения, чтобы предотвратить неправильный доступ или хранение конфиденциальных данных.
Некоторые поставщики хранилищ данных предлагают расширенные функции безопасности, которые можно использовать в dbt Cloud. PrivateLink позволяет поддерживаемым платформам данных на AWS взаимодействовать с dbt Cloud без прохождения трафика через публичный интернет. Snowflake и BigQuery предлагают интеграцию Oauth, которая добавляет уровень безопасности для платформ данных (только для корпоративного плана).
Синхронизация с git
dbt Cloud может синхронизироваться с различными git-провайдерами, включая Github, Gitlab и Azure DevOps в своей интегрированной среде разработки (IDE). Коммуникация происходит через HTTPS, а не SSH, и защищена с использованием протокола TLS 1.2 для данных в пути.
Информация о git-репозитории хранится на серверах dbt Cloud, чтобы сделать ее доступной во время сеансов IDE. Когда синхронизация с git отключена, вы должны связаться с поддержкой, чтобы запросить удаление синхронизированных данных.
Сервисы аутентификации
Настройки по умолчанию dbt Cloud позволяют локальным пользователям с учетными данными, хранящимися в dbt Cloud. Тем не менее, предлагаются интеграции с различными сервисами аутентификации в качестве альтернативы, включая сервисы единого входа. Доступ к функциям может быть предоставлен/ограничен по ролям с использованием RBAC.
Функции SSO важны, потому что они уменьшают количество учетных данных, которые пользователь должен поддерживать. Пользователи входят в систему один раз, и токен аутентификации делится между интегрированными сервисами (такими как dbt Cloud). Токен истекает и должен быть обновлен через определенные интервалы, требуя от пользователя повторного прохождения процесса аутентификации. Если пользователь отключен в сервисе провайдера SSO, его доступ к dbt Cloud отключается, и он не может переопределить это с помощью локальных учетных данных.
Snowflake и BigQuery предлагают услуги OAuth (JSON для передачи информации и API вызовов для аутентификации) в качестве альтернативы SAML (XML для передачи информации и сессионных куки для аутентификации). Пользователи могут аутентифицироваться на платформе данных для безопасного доступа к dbt Cloud и предотвращения доступа, когда учетные данные отозваны.