# Подключение приложений с помощью OAuth [Бета-версия](https://docs.getdbt.tech/docs/dbt-versions/product-lifecycles "Подробнее о статусе или тарифе")

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

Раздел **App integrations** в dbt platform позволяет администраторам управлять регистрациями клиентов OAuth 2.0 — стандарта, который позволяет внешним приложениям безопасно подключаться к dbt без передачи токенов API. Используйте его для:

* ИИ-инструментов, которые подключаются к удалённому серверу dbt MCP.
* Собственных интеграций с API dbt platform, если вы хотите, чтобы конечные пользователи входили со своей учётной записью dbt, вместо того чтобы распространять токены.
* Сторонних приложений и расширений IDE, которые поддерживают OAuth для подключения к dbt.

Эта функция доступна администраторам аккаунта на тарифных планах Starter, Enterprise или Enterprise+.

Чтобы открыть этот раздел, перейдите в **Account settings** → **Integrations** → **App integrations**.

[![Страница интеграций приложений с клиентами OAuth, зарегистрированными вручную и динамически](/img/docs/dbt-cloud/app-integrations-oauth.png?v=2 "Страница интеграций приложений с клиентами OAuth, зарегистрированными вручную и динамически")](#)Страница интеграций приложений с клиентами OAuth, зарегистрированными вручную и динамически

## Способы регистрации

Зарегистрировать приложение в качестве клиента OAuth можно двумя способами:

* [Динамическая регистрация](#dynamic-registration): приложения, поддерживающие [Dynamic Client Registration (RFC 7591)](https://datatracker.ietf.org/doc/html/rfc7591), регистрируются автоматически, когда пользователь подключает их к dbt. Действия администратора не требуются.
* [Ручная регистрация](#manual-registration): для приложений, которые не поддерживают динамическую регистрацию (например, собственных интеграций), администратор может зарегистрировать клиент OAuth вручную.

### Динамическая регистрация

Приложения, поддерживающие [Dynamic Client Registration (RFC 7591)](https://datatracker.ietf.org/doc/html/rfc7591), регистрируются автоматически, когда пользователь подключает их к dbt. Действия администратора не требуются.

Динамически зарегистрированные приложения отображаются в таблице **Dynamically registered**, которая содержит следующие сведения:

| Столбец      | Описание                                                   |
| ------------ | ---------------------------------------------------------- |
| Name         | Название приложения                                        |
| Redirect URL | URL обратного вызова OAuth, зарегистрированный приложением |
| Created on   | Дата первоначальной регистрации клиента                    |
| Last used on | Дата последнего аутентифицированного запроса клиента       |

### Ручная регистрация

Для приложений, которые не поддерживают динамическую регистрацию (например, агента Salesforce или собственных интеграций), администратор может зарегистрировать клиент OAuth вручную.

Чтобы добавить интеграцию с ручной регистрацией:

1. Перейдите в **Account settings** → **Integrations** → **App integrations**.
2. Нажмите **+ Add integration**.
3. Заполните форму регистрации. Каждый клиент, зарегистрированный вручную, получает уникальный идентификатор клиента. Обратите внимание: секрет клиента не выдаётся, поэтому клиент должен поддерживать [расширение PKCE (RFC 7636)](https://datatracker.ietf.org/doc/html/rfc7636).

Клиенты, зарегистрированные вручную, отображаются в разделе **Manually registered**.

При настройке клиента используйте следующие конечные точки OAuth (замените `YOUR_PREFIX` на поддомен вашей платформы dbt):

| Конечная точка   | URL                                           |
| ---------------- | --------------------------------------------- |
| Авторизация      | `https://YOUR_PREFIX.dbt.com/oauth/authorize` |
| Получение токена | `https://YOUR_PREFIX.dbt.com/oauth/token`     |

## Использование с удалённым MCP

Когда вы подключаете клиент MCP к [удалённому серверу dbt MCP](https://docs.getdbt.tech/docs/dbt-ai/setup-remote-mcp.md#oauth-remote-mcp), он проходит аутентификацию с помощью OAuth. Клиенту нужен только URL MCP вашей платформы dbt, который можно найти в разделе **Account settings** → **Access URLs** → **MCP Endpoint URL**.

Клиенты, поддерживающие динамическую регистрацию, выполняют этап регистрации автоматически — после первого использования они появятся в таблице **Dynamically registered**.

Ниже описано, как подключить dbt в качестве пользовательского коннектора в Claude Desktop. Интерфейс зависит от инструмента, но порядок действий одинаков: добавьте пользовательский коннектор с вашим MCP URL, пройдите процедуру предоставления согласия OAuth, затем подключитесь.

1. В вашем ИИ-инструменте перейдите в настройки коннекторов и выберите добавление пользовательского коннектора (в Claude Desktop перейдите в **Chat → Customize → Connectors**, затем нажмите **Add custom connector**).
2. Введите имя (например, `dbt`) и вставьте MCP URL вашей dbt platform (например, `https://abc123.us1.dbt.com/api/ai/v1/mcp`), затем нажмите **Add**.

   [![Диалог добавления пользовательского коннектора с MCP URL dbt](/img/docs/dbt-cloud/oauth-add-custom-connector.png?v=2 "Диалог добавления пользовательского коннектора с MCP URL dbt")](#)Диалог добавления пользовательского коннектора с MCP URL dbt
3. Нажмите **Connect**. Инструмент перенаправит вас в dbt для прохождения процедуры предоставления согласия OAuth, где вы сможете разрешить или отклонить отдельные [области доступа](https://docs.getdbt.tech/docs/platform/manage-access/connect-apps-oauth.md#scopes-and-consent).

   [![Экран согласия OAuth с запрашиваемыми областями доступа и доступом к проектам](/img/docs/dbt-cloud/oauth-consent-screen.png?v=2 "Экран согласия OAuth с запрашиваемыми областями доступа и доступом к проектам")](#)Экран согласия OAuth с запрашиваемыми областями доступа и доступом к проектам
4. После вашего согласия коннектор будет добавлен в таблицу **Custom connectors** и будет отображаться как подключённый.

   [![Добавление пользовательского коннектора dbt в настройках коннекторов ИИ-инструмента](/img/docs/dbt-cloud/oauth-connectors-page.png?v=2 "Добавление пользовательского коннектора dbt в настройках коннекторов ИИ-инструмента")](#)Добавление пользовательского коннектора dbt в настройках коннекторов ИИ-инструмента
5. Готово 🎉! Задайте инструменту вопрос о данных, например *«Какова общая выручка за последние 30 дней?»*, чтобы проверить подключение.

Дополнительные сведения о настройке OAuth для удалённого MCP см. в разделе [Использование удалённого сервера dbt MCP](https://docs.getdbt.tech/docs/dbt-ai/mcp-quickstart-remote.md).

## Области доступа и согласие пользователя

Когда пользователь впервые подключает инструмент к dbt через OAuth, dbt показывает экран согласия со списком областей доступа, которые запрашивает клиент. Области доступа служат **фильтром для существующих разрешений пользователя** — они не предоставляют никаких новых прав доступа. Пользователь может дать согласие только на те области доступа, для которых у него уже есть разрешения в dbt.

На экране согласия пользователь может:

* Разрешить или отклонить отдельные области доступа.
* Выбрать, предоставлять ли доступ ко **всем проектам** или только к **выбранным проектам**.
* Включить или отключить **Keep session alive**, чтобы указать, должен ли dbt автоматически продлевать сеанс (см. [Сеансы и токены обновления](#sessions-and-refresh-tokens)).

[![Экран согласия OAuth с запрашиваемыми областями доступа и доступом к проектам](/img/docs/dbt-cloud/oauth-consent-screen.png?v=2 "Экран согласия OAuth с запрашиваемыми областями доступа и доступом к проектам")](#)Экран согласия OAuth с запрашиваемыми областями доступа и доступом к проектам

Конкретные области доступа на экране зависят от того, что запрашивает подключаемый инструмент. Полный список доступных областей доступа:

| Область доступа    | Описание                                                                                                        |
| ------------------ | --------------------------------------------------------------------------------------------------------------- |
| `offline_access`   | Позволяет клиенту запрашивать токен обновления для поддержания длительных сеансов                               |
| `account:read`     | Доступ только для чтения к сведениям об аккаунте, например настройкам проектов и окружений                      |
| `projects:query`   | Выполнение запросов к данным проекта с использованием метрик Semantic Layer                                     |
| `catalog:read`     | Доступ к описаниям моделей, происхождению данных на уровне столбцов и другим метаданным проектов из dbt Catalog |
| `projects:develop` | Использование инструментов разработки, включая CLI, для внесения изменений в модели dbt                         |
| `jobs:run`         | Просмотр, редактирование и повторный запуск заданий dbt                                                         |

### Для разработчиков: обработка частичного предоставления областей доступа

Когда пользователь снимает флажки для одной или нескольких областей доступа на экране согласия, токен доступа выдаётся только для одобренного подмножества. Ваш клиент должен:

* Запрашивать только те области доступа, которые действительно нужны инструменту, — не запрашивайте их про запас.
* Корректно обрабатывать ответы `403` и выводить понятное сообщение, если необходимая область доступа не была предоставлена.
* Не предполагать, что одобрены все запрошенные области доступа; всегда проверять поле `scope` в ответе с токеном.

Чтобы определить, какие области доступа должен запрашивать ваш клиент, выберите их из списка выше. Запрашивайте области доступа в запросе авторизации (`/oauth/authorize`). При регистрации клиента области доступа не задаются.

## Сеансы и токены обновления

В сеансах OAuth используются токены обновления с допустимым периодом неактивности 7 дней. Пока клиент запрашивает новый токен доступа хотя бы раз в 7 дней, сеанс остаётся активным. После 7 дней неактивности срок действия токена обновления истекает, и пользователю необходимо войти снова.

Пользователи могут отказаться от автоматического продления на этапе предоставления согласия, отключив **Keep session alive**.

## Отзыв доступа

Чтобы отозвать разрешение OAuth, пользователь отключает dbt в своём клиенте MCP — например, удаляет коннектор dbt в настройках клиента. Вскоре мы добавим возможность отзывать доступ в dbt platform.

[![Страница коннекторов клиента MCP с возможностью удалить коннектор dbt](/img/docs/dbt-cloud/oauth-disconnect-client.png?v=2 "Страница коннекторов клиента MCP с возможностью удалить коннектор dbt")](#)Страница коннекторов клиента MCP с возможностью удалить коннектор dbt

## Журнал аудита

События, связанные с OAuth, отображаются в [журнале аудита](https://docs.getdbt.tech/docs/platform/manage-access/audit-log.md) dbt (**Account settings** → **Audit log**), поэтому администраторы могут видеть, какие клиенты были зарегистрированы, какие пользователи их авторизовали и какие действия эти пользователи выполняли через OAuth.

В журнал аудита записываются следующие события OAuth:

* **Регистрация клиента** (ручная или динамическая).
* **Авторизация клиента** (завершение пользователем процесса предоставления согласия).

Действия, которые пользователь выполняет через клиент, подключённый по OAuth, — например, создание задания или запуск модели, — отображаются в журнале аудита с указанием **пользователя в качестве исполнителя**, как и действия, выполненные через интерфейс dbt или с помощью персонального токена доступа.

[![Запись в журнале аудита о действии, выполненном через клиент, подключённый по OAuth](/img/docs/dbt-cloud/oauth-audit-log.png?v=2 "Запись в журнале аудита о действии, выполненном через клиент, подключённый по OAuth")](#)Запись в журнале аудита о действии, выполненном через клиент, подключённый по OAuth
