# Токены сервисных аккаунтов

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

Токены сервисных аккаунтов позволяют безопасно проходить аутентификацию в API dbt: каждому токену назначается ограниченный набор разрешений для более точного управления доступом к API. Хотя они похожи на [персональные токены доступа](https://docs.getdbt.tech/docs/dbt-apis/user-tokens.md), токены сервисных аккаунтов принадлежат аккаунту, а не пользователю.

Токены сервисных аккаунтов можно использовать для интеграций на уровне системы, которые не выполняются от имени конкретного пользователя. Назначьте токену сервисного аккаунта любые наборы разрешений, доступные в dbt. Доступные наборы могут немного различаться в зависимости от вашего тарифного плана:

* Планы Enterprise и Enterprise+ могут применять к сервисным токенам любые доступные наборы разрешений.
* Планы Developer и Starter могут применять к сервисным токенам набор разрешений Semantic Layer.
* Устаревшие планы Team (Legacy Team) могут применять к сервисным токенам наборы разрешений Account Admin, Member, Job Admin, Read-Only, Metadata и Semantic Layer.

Одному токену можно назначить столько наборов разрешений, сколько необходимо. Подробнее о наборах разрешений см. в разделе «[Разрешения Enterprise](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md)».

## Генерация токенов сервисных аккаунтов

Вы можете создавать сервисные токены, если у вас есть [лицензия](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md) Developer и [права](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md#permission-sets) администратора аккаунта. Чтобы создать сервисный токен в dbt, выполните следующие действия:

1. В dbt нажмите на название своего аккаунта в меню слева и выберите **Account settings**.

2. На левой боковой панели нажмите **Service Tokens**.

3. Нажмите кнопку **+ Create service token**, чтобы создать новый токен.

   1. Введите имя токена.
   2. Добавьте необходимые [права](https://docs.getdbt.tech/docs/dbt-apis/service-tokens.md#permissions-for-service-account-tokens).

4. После создания токена вы больше не сможете его просмотреть, поэтому обязательно сохраните его в безопасном месте.

## Разрешения для токенов сервисных аккаунтов

Токенам сервисных аккаунтов можно назначать любые наборы разрешений, доступные в dbt. При назначении набора разрешений токену вы также можете выбрать, будут ли эти разрешения действовать для всех проектов аккаунта или только для определённых проектов.

### Планы для команд, использующие токены сервисных аккаунтов

Следующие разрешения можно назначить токену сервисного аккаунта на тарифном плане Team. Подробнее об этих ролях см. в разделе [Разрешения Enterprise](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md).

* Account Admin — сервисные токены Account Admin имеют полный доступ `read + write` ко всей учётной записи, поэтому используйте их с осторожностью. В плане Team этот набор прав называется ролью **"Owner role"**.
* Billing Admin
* Job Admin
* Metadata Only
* Member
* Read-only
* Semantic Layer Only

### Корпоративные планы, использующие токены сервисных аккаунтов

Подробнее об этих ролях см. в разделе [Разрешения Enterprise](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md).

* Account Admin — сервисные токены **Account Admin** имеют полный доступ `read + write` ко всей учетной записи, поэтому используйте их с осторожностью.
* Account Viewer
* Admin
* Analyst
* Billing Admin
* Database Admin
* Developer
* Git Admin
* Job Admin
* Job Runner
* Job Viewer
* Manage marketplace apps
* Metadata Only
* Только для чтения
* Только Semantic Layer
* Security Admin
* Stakeholder
* Team Admin

## Обновление сервисных токенов

18 июля 2023 года dbt Labs изменила способ генерации и проверки токенов, чтобы повысить производительность. Эти улучшения применяются только к токенам, созданным после 18 июля 2023 года.

Старые токены остаются действительными, однако если они используются для высокочастотных вызовов API, мы рекомендуем выполнить их ротацию, чтобы снизить задержки.

Чтобы выполнить ротацию токена:

1. Перейдите в **Account settings** и нажмите **Service tokens** на левой боковой панели.
2. Убедитесь, что дата создания токена в поле **Created** — *18 июля 2023 года или ранее*.
3. Нажмите **+ New Token** в правом верхнем углу экрана. Убедитесь, что у нового токена те же разрешения, что и у старого.
4. Скопируйте новый токен и замените им старый в своих системах. Сохраните его в безопасном месте, поскольку после закрытия экрана создания токена он больше не будет доступен.
5. Удалите старый токен в dbt, нажав **значок корзины**. *Выполняйте это действие только после замены старого токена новым, чтобы избежать перебоев в работе сервисов*.

## Часто задаваемые вопросы

Я получаю ошибку 403 'Запрещено: Доступ запрещен' при использовании сервисных токенов

Весь трафик [сервисных токенов](https://docs.getdbt.tech/docs/dbt-apis/service-tokens.md) подлежит ограничениям по IP.

На весь трафик с использованием [сервисных токенов](https://docs.getdbt.tech/docs/dbt-apis/service-tokens.md) распространяются ограничения по IP-адресам.

Ниже приведен пример ошибки 403:

```json
        {
            "status": {
                "code": 403,
                "is_success": False,
                "user_message": ("Forbidden: Access denied"),
                "developer_message": None,
            },
            "data": {
                "account_id": <account_id>,
                "user_id": <user_id>,
                "is_service_token": <boolean describing if it's a service token request>,
                "account_access_denied": True,
            },
        }
```
