# Архитектура dbt

Платформа dbt

Эта страница поможет практикам и всем, кто интересуется архитектурой и потоками данных dbt.

## Об архитектуре dbt

Приложение dbt состоит из двух типов компонентов: статических и динамических. Статические компоненты работают постоянно и обеспечивают высокую доступность функций dbt, таких как веб‑приложение dbt. В свою очередь, динамические компоненты создаются по мере необходимости для выполнения задач, например фоновых заданий или обработки запросов на использование Studio IDE.

dbt доступен в большинстве регионов мира как в [одноарендной](https://docs.getdbt.tech/docs/platform/about-platform/tenancy.md#single-tenant) (AWS, Azure, и GCP), так и в [многоарендной](https://docs.getdbt.tech/docs/platform/about-platform/tenancy.md#multi-tenant) конфигурации.

dbt использует PostgreSQL для своей серверной части, S3-совместимые системы объектного хранения для журналов и артефактов, а также решение для хранения данных Kubernetes для создания динамических, постоянных томов.

Все данные, хранящиеся на серверах dbt, защищены с помощью шифрования AES‑256.

![](/img/docs/dbt-platform/on-premises/data-flows.png)

## Коммуникация

dbt может взаимодействовать с несколькими внешними сервисами, включая платформы данных, репозитории git, сервисы аутентификации и каталоги. Все взаимодействия осуществляются по HTTPS (попытки подключения по HTTP перенаправляются на HTTPS). dbt шифрует данные при передаче с помощью криптографического протокола TLS 1.2.

TLS (Transport Layer Security) 1.2 — это промышленный стандартный протокол для шифрования конфиденциальных данных при их передаче через публичный интернет (который не предоставляет встроенного шифрования).

Типичный сценарий, который может часто встречаться, — это сотрудник, работающий в общественном месте, таком как аэропорт или кафе. Пользователь может быть подключен к небезопасной публичной сети, предоставляемой учреждением, к которой подключены и многие другие. Что, если среди них есть злоумышленник, запускающий программу, способную "захватывать" сетевые пакеты и анализировать их по воздуху?

Когда пользователь получает доступ к dbt и запускает модели, которые взаимодействуют с платформой данных, информация, передаваемая между его компьютером и сервисами, шифруется с использованием TLS 1.2.

Если этот пользователь выполняет команду, которая инициализирует взаимодействие между dbt и хранилищем данных (или git-репозиторием, или сервисом аутентификации) через интернет, такое взаимодействие также шифруется. Это означает, что даже если злоумышленник технически может видеть трафик, проходящий по незащищённой сети, он не сможет прочитать или каким‑либо образом разобрать передаваемую информацию. Он не сможет подслушать или взломать данные каким бы то ни было способом. Вместо этого он увидит бессмысленный набор символов, который невозможно расшифровать.

Для более детальной информации о наших практиках безопасности прочитайте нашу [страницу безопасности](https://getdbt.com/security).

### Взаимодействие с хранилищем данных

Основная роль dbt заключается в обработке данных, а не в их хранении. Приложение dbt позволяет пользователям отправлять SQL в хранилище данных для выполнения преобразований. Однако пользователи могут отправлять SQL, возвращающий данные клиентов в приложение dbt. Эти данные никогда не сохраняются и существуют только в памяти экземпляра на протяжении сеанса. Для надлежащей защиты данных клиентов необходимо настроить соответствующие разрешения data warehouse, чтобы предотвратить несанкционированный доступ к конфиденциальным данным или их хранение.

Некоторые поставщики хранилищ данных предлагают расширенные функции безопасности, которые можно использовать в dbt. [Частные подключения](https://docs.getdbt.tech/docs/platform/secure/private-connectivity/private-connectivity.md) позволяют поддерживаемым платформам данных на AWS взаимодействовать с dbt без передачи трафика через общедоступный интернет. [Snowflake](https://docs.getdbt.tech/docs/platform/manage-access/set-up-snowflake-oauth.md) и [BigQuery](https://docs.getdbt.tech/docs/platform/manage-access/set-up-bigquery-oauth.md) предлагают интеграцию с Oauth, которая обеспечивает дополнительный уровень безопасности для платформ данных (только для тарифного плана Enterprise).

### Синхронизация с git

dbt может синхронизироваться с различными поставщиками git, включая [Github](https://docs.getdbt.tech/docs/platform/git/connect-github.md), [Gitlab](https://docs.getdbt.tech/docs/platform/git/connect-gitlab.md), и [Azure DevOps](https://docs.getdbt.tech/docs/platform/git/connect-azure-devops.md) в своей интегрированной среде разработки ([Studio IDE](https://docs.getdbt.tech/docs/platform/studio-ide/develop-in-studio.md)). Взаимодействие осуществляется по HTTPS, а не по SSH, и защищено протоколом TLS 1.2 для данных при передаче.

Информация о git‑репозитории хранится на серверах dbt, чтобы быть доступной во время сессий Studio IDE. Когда синхронизация с git отключена, необходимо [обратиться в службу поддержки](mailto:support@getdbt.com) с запросом на удаление синхронизированных данных.

### Сервисы аутентификации

Настройки dbt по умолчанию позволяют использовать локальных пользователей с учетными данными, хранящимися в dbt. Однако в качестве альтернативы предлагаются интеграции с различными сервисами аутентификации, включая [сервисы единого входа](https://docs.getdbt.tech/docs/platform/manage-access/sso-overview.md). Доступ к функциям можно предоставлять/ограничивать по ролям с помощью [RBAC](https://docs.getdbt.tech/docs/platform/manage-access/about-user-access.md#role-based-access-control-).

Функции SSO являются важными, поскольку они сокращают количество учетных данных, которые пользователю необходимо поддерживать. Пользователь входит в систему один раз, и токен аутентификации используется совместно всеми интегрированными сервисами (такими как dbt). Этот токен имеет срок действия и должен обновляться через заданные интервалы времени, что требует повторного прохождения процесса аутентификации. Если пользователь отключен в сервисе‑провайдере SSO, его доступ к dbt также отключается, и он не может обойти это ограничение с помощью локальных учетных данных.

[Snowflake](https://docs.getdbt.tech/docs/platform/manage-access/set-up-snowflake-oauth.md) и [BigQuery](https://docs.getdbt.tech/docs/platform/manage-access/set-up-bigquery-oauth.md) предлагают сервисы OAuth (JSON для передачи информации и вызовы API для аутентификации) в качестве альтернативы SAML (XML для передачи информации и файлы cookie сеанса для аутентификации). Пользователи могут проходить аутентификацию на платформе данных для безопасного доступа к dbt и блокировки доступа при отзыве учетных данных.

## Безопасность

dbt Labs стремится поддерживать отраслевые стандарты безопасности в облаке и соответствие GDPR. Наши сертификаты соответствия включают следующее:

* SOC2 Type II — оценивает среду контроля безопасности поставщика услуг в соответствии с принципами и критериями доверительных услуг, установленными Американским институтом дипломированных общественных бухгалтеров (AICPA).
* ISO27001:2013 — глобально признанный стандарт для создания и сертификации системы управления информационной безопасностью (ISMS).
* GDPR - dbt Labs стремится поддерживать стандарты соответствия GDPR. Подробнее о нашем [Дополнении к обработке данных](https://www.getdbt.com/cloud/dpa).

Для более детальной информации о наших практиках безопасности прочитайте нашу [страницу безопасности](https://www.getdbt.com/security/).
