Перейти к основному содержимому
Версия: 1.12

Ролевая модель MtRBAC

В Spirit IAM используется модель Multi-tenant RBAC (Role-Based Access Control) — мультитенантная модель ролевого доступа.

Концепции MtRBAC

Spirit IAM выступает мастер-системой для хранения:

  • тенантов;
  • ролей;
  • полномочий;
  • сервисных аккаунтов.

Spirit IAM также может быть мастер-системой для хранения пользователей и привязок пользователей к тенантам и ролям. Однако, как правило, система конфигурируется таким образом, что эти данные попадают в нее из внешней системы управления пользователями (например, Keycloak).

Ролевую модель MtRBAC, которую использует Spirit IAM, можно описать следующим образом:

Ролевая модель Spirit IAM

  • Роль (role) — это сущность, которая задает набор полномочий.

  • Полномочие (permission) — это объект, который определяет разрешение для субъекта выполнить конкретное действие над объектом.

Возможны два типа ролей в Spirit IAM:

  1. Проектные — действуют в рамках одного тенанта.
  2. Глобальные — дают доступ ко всем тенантам или системным функциям.

Привязка полномочий к ролям подчиняется следующим правилам:

  • Одно полномочие может быть в нескольких ролях.
  • Одна роль может включать несколько полномочий, относящихся к разным сервисам. Пример такой роли — Sage Manager, которая объединяет полномочия на доступ к данным Sage и на управление группами и справочниками.
Примечание

Состав ролей пользователя определяется его членством в группах Active Directory: каждой AD-группе соответствует пара «тенант + роль», поэтому членство пользователя в AD-группах формирует его проектные и глобальные роли в Spirit IAM.

Тенант

Корневой сущностью Spirit IAM является тенант (tenant). Тенант является агрегатом над следующими ресурсами проекта:

  • Совокупность пользователей с индивидуальным набором ролей для каждого.
  • Ресурсы тенанта:
    • репозиторий кода — один или несколько для каждого тенанта;
    • группы Sage.
Примечание

Тенант не является отражением бизнес-линии или любой другой бизнес-сущности. На практике это означает, что внутри бизнес-линии может существовать несколько тенантов.

Глобальные роли

Глобальная роль не привязана к конкретному тенанту и предоставляет доступ к данным и ресурсам во всех тенантах. Такие роли используются для административных сценариев — например, «Администратор сервиса Х может управлять ресурсами сервиса Х в любом тенанте».

Глобальная роль может быть назначена только на пользователя.

К привилегированным глобальным ролям относятся:

  • Sage Admin — полный доступ, управление тенантами;
  • Sage Super Viewer — просмотр данных из групп Sage во всех тенантах.

Полный перечень ролей см. в справочнике Роли.

Привилегированные глобальные роли контролируются особо тщательно и назначаются на основе членства в соответствующих группах Active Directory (например, IAM-Sage_Admin), как и остальные роли.

Проектные роли

Проектная роль наделяет субъект полномочиями в контексте конкретного тенанта. Проектная роль может быть назначена на:

  • пользователя;
  • сервисный аккаунт Spirit.

К проектным ролям относятся:

  • Sage User — работа с группами Sage;
  • Sage Manager — управление группами в Sage.

Полный перечень ролей см. в справочнике Роли.

В Sage-интеграции назначение проектной роли выполняется на основе маппинга групп из Active Directory на роли Spirit IAM.

Жизненный цикл полномочий и сессии

Тенанты и роли создаются вручную администратором в интерфейсе Spirit IAM. Роль без полномочий не дает доступа — полномочия назначаются в интерфейсе Spirit IAM отдельно.

Привязка пользователей к парам «тенант + роль» формируется при аутентификации на основе групп Active Directory, переданных в токене Keycloak. Если в имени AD-группы закодирован несуществующий тенант или несуществующая роль, аутентификация отклоняется с сообщением об ошибке.

Актуализация ролей и привязок происходит только в момент явной аутентификации (перелогин). Изменения членства пользователя в группах Active Directory (например, вывод из группы или деактивация учетной записи) передаются в Spirit IAM через Keycloak. Эти изменения будут применены только после повторной аутентификации.

Важно

Права, отозванные в Active Directory, продолжают действовать в Spirit IAM до истечения срока жизни сессии или рефреш-токена. Срок жизни токенов определяется конфигурацией Keycloak.

Примечание

Spirit IAM не проверяет, можно ли выполнить действие. Он только сообщает, какие полномочия есть у пользователя. Решение о разрешении или запрете действия принимается с помощью политик авторизации запросов. Политики учитывают:

  • кто делает запрос (субъект),
  • какое действие выполняется,
  • над каким объектом.