# Управление лицензиями пользователей с помощью SCIM

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

Вы можете управлять назначением лицензий пользователям с помощью System for Cross-Domain Identity Management (SCIM) и атрибута пользователя в Okta, чтобы тип лицензии задавался при подготовке учетных записей и подключении пользователей.

Сопоставление лицензий с помощью SCIM

dbt platform поддерживает автоматическое назначение лицензий с помощью SCIM со следующими вариантами для разных поставщиков удостоверений:

 Показать варианты для каждого поставщика удостоверений

* **Okta:** Включите переключатель **Ignore dbt license mapping** в разделе **Account settings > SSO & SCIM** и следуйте [документации по управлению лицензиями через Okta](https://docs.getdbt.tech/docs/platform/manage-access/scim-manage-user-licenses.md).
* **Entra ID:** Используйте [сопоставление групп Active Directory с лицензиями на основе SSO](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md#mapped-configuration). Оно работает совместно с активной конфигурацией SCIM для Entra ID. Оставьте переключатель **Ignore dbt license mapping** *выключенным*, поскольку его включение удаляет сопоставление лицензий для пользователей Entra ID. Сопоставление лицензий через SCIM с использованием [пользовательских атрибутов](https://learn.microsoft.com/en-us/entra/fundamentals/custom-security-attributes-overview) может быть возможно в зависимости от вашей конфигурации Entra ID, но такая настройка не поддерживается — **используйте её на свой страх и риск**.

Дополнительные сведения см. в ответе на вопрос [Поддерживает ли SCIM автоматическое назначение лицензий?](https://docs.getdbt.tech/docs/platform/manage-access/scim-faq.md#does-scim-support-automatic-license-assignment) в разделе часто задаваемых вопросов.

**Требуется группа Account Admin:** Перед включением SCIM для вашей учетной записи dbt необходимо создать группу администраторов учетной записи dbt в вашем IdP и группу с таким же именем в вашей учетной записи dbt. Назначьте группе dbt набор разрешений [Account Admin](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md#account-admin).

Без этой группы после включения выделения ресурсов через SCIM ваши пользователи могут быть удалены из группы dbt 'Owner', созданной по умолчанию, и потерять административный доступ к вашей учетной записи dbt. Имена этих двух групп могут соответствовать принятой в вашем IdP схеме именования групп, но имя группы в dbt должно полностью совпадать с именем группы в IdP.

## Предварительные требования

Прежде чем включить сопоставление лицензий через SCIM:

* **Лицензия по умолчанию**: новым пользователям назначается лицензия Developer, если вы не измените ее вручную с помощью [сопоставлений лицензий SSO](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md#mapped-configuration) или через SCIM.
* **Рекомендация**: используйте единый источник достоверных данных для назначения лицензий (либо dbt platform, либо SCIM). Не совмещайте управление лицензиями через SCIM с ручными изменениями или изменениями сопоставлений единого входа (SSO).
* **Лицензия Analyst**: доступна только на [определенных тарифных планах](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md). Назначение этой лицензии через SCIM приведет к ошибке, если такой тип лицензии недоступен для вашего аккаунта. [Лицензия типа Analyst](https://docs.getdbt.tech/docs/platform/manage-access/about-user-access.md?version=1.12#licenses) больше не доступна для приобретения.

## Включение сопоставления лицензий через SCIM

Чтобы управлять лицензиями пользователей через SCIM, перейдите в **Account settings** > **SSO & SCIM**. В разделе **SCIM** включите переключатель **Ignore dbt license mapping**. Эта настройка задает тип лицензии пользователя на основе его атрибута SCIM и отключает сопоставление лицензий и ручную настройку, заданные в dbt.

[![Включение распределения лицензий пользователей под управлением SCIM.](/img/docs/dbt-platform/access-control/scim-managed-licenses.png?v=2 "Включение распределения лицензий пользователей под управлением SCIM.")](#)Включение распределения лицензий пользователей под управлением SCIM.

Рекомендуем выполнить инструкции по настройке вашего поставщика удостоверений (IdP), прежде чем включать этот переключатель в аккаунте dbt. После его включения все существующие сопоставления лицензий в dbt будут игнорироваться.

Рекомендуемая последовательность перехода на сопоставление лицензий через SCIM:

1. Настройте SCIM, но оставьте переключатель выключенным, чтобы существующие сопоставления лицензий продолжали работать как прежде.
2. Настройте атрибуты лицензий в вашем IdP.
3. Проверьте, что атрибуты SCIM используются для задания типа лицензии в dbt.
4. Включите переключатель, чтобы игнорировать существующие сопоставления лицензий и использовать SCIM как единый источник достоверных данных для назначения лицензий пользователям.

## Группы по умолчанию в Enterprise

На странице лицензирования Enterprise доступны следующие группы по умолчанию. Они часто используются при первоначальной настройке, но после успешной синхронизации групп IdP через SCIM их следует скорректировать или удалить.

| Группа       | Права доступа                                                                                                                                                                                                    |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Owner**    | Полный доступ к функциям аккаунта и оплате.                                                                                                                                                                      |
| **Member**   | Широкие права доступа к аккаунту с ограничениями на настройки оплаты и безопасности. Пользователям группы Member по умолчанию назначается лицензия Developer.                                                    |
| **Everyone** | Общая группа для всех пользователей. Эта группа не предоставляет дополнительных разрешений помимо заданных в профиле пользователя. Для работы в dbt пользователи должны быть включены в группу Member или Owner. |

Рекомендация

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

## Автоматическое сопоставление лицензий

Автоматизация назначения лицензий доступна только для Okta. Это распространенный подход к снижению административной нагрузки. Сведения о сопоставлении лицензий на основе SSO (например, для Entra ID) см. в разделе [Конфигурация с сопоставлением](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md#mapped-configuration).

#### Определение групп IdP

Распространенный подход предполагает создание двух основных групп в вашем IdP, например:

* `dbt_developers`
* `dbt_read_only`

#### Основные правила лицензирования

Понимание этих правил поможет вам спланировать структуру групп в Okta:

* **Назначение по умолчанию:** при добавлении нового пользователя в аккаунт он автоматически получает лицензию Developer, если вы не настроили иное поведение.
* **Основа сопоставления:** лицензия пользователя определяется тем, в какие группы он входит у вашего поставщика удостоверений (Okta), — а не группами, созданными в dbt platform. Другими словами, ваши группы Okta являются источником достоверных данных. При добавлении пользователя в группу Okta или удалении из нее его лицензия в dbt platform автоматически обновляется соответствующим образом.

#### Логика сопоставления и приоритеты

При сопоставлении лицензий через SSO лицензия Developer имеет приоритет над всеми остальными лицензиями. При сопоставлении лицензий через SCIM (Okta) приоритет зависит от вашей конфигурации — от того, назначаете ли вы атрибут лицензии непосредственно пользователю или определяете его на основе членства в группах с помощью выражения в Okta Profile Editor.

При использовании групп наподобие `dbt_developers` и `dbt_read_only` пользователь может состоять в одной группе, в обеих или ни в одной из них. В следующей таблице показан один из распространенных сценариев (сопоставление на основе групп), который может помочь при планировании структуры групп или выяснении причин назначения пользователю определенной лицензии.

Пользователям группы по умолчанию **Member** в Enterprise по умолчанию назначается лицензия **Developer**. Пока вы не удалите пользователей из **Member** (согласно приведенной выше [рекомендации](#enterprise-default-groups)), это значение по умолчанию применяется, если они не входят ни в одну группу IdP для сопоставления лицензий. После включения сопоставления лицензий через SCIM сопоставление групп IdP имеет приоритет над значением по умолчанию для Member.

**Сопоставление лицензий через SSO (на основе групп IdP):**

| В группе `dbt_developers`? | В группе `dbt_read_only`? | Назначаемая лицензия                                            |
| -------------------------- | ------------------------- | --------------------------------------------------------------- |
| Нет                        | Нет                       | Developer (по умолчанию для Member или для новых пользователей) |
| Нет                        | Да                        | Read-Only                                                       |
| Да                         | Нет                       | Developer                                                       |
| Да                         | Да                        | Developer (Developer имеет приоритет)                           |

## Добавление атрибута типа лицензии для Okta

Чтобы добавить атрибут для типов лицензий в вашу среду Okta:

1. В приложении Okta перейдите на вкладку **Provisioning**, прокрутите страницу до **Attribute Mappings** и нажмите **Go to Profile Editor**.

2. Нажмите **Add Attribute**.

3. Настройте поля атрибута следующим образом (регистр символов каждого значения должен совпадать с указанным):

   * **Data type:** `string`

   * **Display name:** `License Type`

   * **Variable name:** `licenseType`

   * **External name:** `licenseType`

   * **External namespace:** `urn:ietf:params:scim:schemas:extension:dbtLabs:2.0:User`

   * **Description:** произвольная строка на ваш выбор.

   * **Enum:** установите флажок **Define enumerated list of values**.

   * **Attribute members:** добавьте первый атрибут, а затем нажимайте **Add another**, пока не будут определены все типы лицензий. Рекомендуем добавить все значения, даже если вы пока их не используете, чтобы они были доступны в будущем. Допустимые значения приведены в следующей таблице.

     | Отображаемое имя | Значение    |
     | ---------------- | ----------- |
     | **IT**           | `it`        |
     | **Analyst**      | `analyst`   |
     | **Developer**    | `developer` |
     | **Read Only**    | `read_only` |

   Лицензия **Analyst** доступна только на [определенных тарифных планах](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md). Она больше не доступна для приобретения.

   * **Attribute type:** Group

   [![Заполните поля так, как показано на изображении. Убедитесь, что регистр символов совпадает.](/img/docs/dbt-platform/access-control/scim-license-attributes.png?v=2 "Заполните поля так, как показано на изображении. Убедитесь, что регистр символов совпадает.")](#)Заполните поля так, как показано на изображении. Убедитесь, что регистр символов совпадает.

4. Нажмите **Save**, чтобы сохранить сопоставление атрибута. Теперь типы лицензий можно задавать в профилях пользователей и при подготовке их учетных записей.

   [![Задайте тип лицензии пользователя в его профиле Okta.](/img/docs/dbt-platform/access-control/scim-license-provisioning.png?v=2 "Задайте тип лицензии пользователя в его профиле Okta.")](#)Задайте тип лицензии пользователя в его профиле Okta.

## Автоматизация назначения лицензий с помощью групп Okta

Чтобы автоматизировать назначение лицензионных мест в Okta, используйте Profile Editor для сопоставления членства в группах Okta с типами лицензий dbt.

1. Создайте группы в Okta, например:

   * `dbt_developers`
   * `dbt_read_only`

2. В Profile Editor приложения dbt в Okta создайте правила сопоставления пользователей Okta с пользователями приложения dbt:

   * **Attribute:** `licenseType`
   * **Logic (Expression):** `(isMemberOfGroupName("dbt_developers") ? 'developer' : 'read_only')`
   * **Поведение по умолчанию:** пользователям, не входящим в группу `dbt_developers`, по умолчанию назначается лицензия Read-Only.

Добавление пользователей в эти группы Okta или удаление из них автоматически обновляет их профиль в приложении dbt и инициирует обновление через SCIM для синхронизации `licenseType` в dbt. Администраторы также могут использовать **Manual Push** в приложении Okta для синхронизации изменений.
