Ролевая модель MtRBAC
В Spirit IAM используется модель Multi-tenant RBAC (Role-Based Access Control) — мультитенантная модель ролевого доступа.
Концепции MtRBAC
Spirit IAM выступает мастер-системой для хранения:
- тенантов;
- ролей;
- полномочий;
- сервисных аккаунтов.
Spirit IAM также может быть мастер-системой для хранения пользователей и привязок пользователей к тенантам и ролям. Однако, как правило, система конфигурируется таким образом, что эти данные попадают в нее из внешней системы управления пользователями (например, Keycloak).
Ролевую модель MtRBAC, которую использует Spirit IAM, можно описать следующим образом:

-
Роль (role) — это сущность, которая задает набор полномочий.
-
Полномочие (permission) — это объект, который определяет разрешение для субъекта выполнить конкретное действие над объектом.
Возможны два типа ролей в Spirit IAM:
- Проектные — действуют в рамках одного тенанта.
- Глобальные — дают доступ ко всем тенантам или системным функциям.
Привязка полномочий к ролям подчиняется следующим правилам:
- Одно полномочие может быть в нескольких ролях.
- Одна роль может включать несколько полномочий, относящихся к разным сервисам. Пример такой роли — 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 не проверяет, можно ли выполнить действие. Он только сообщает, какие полномочия есть у пользователя. Решение о разрешении или запрете действия принимается с помощью политик авторизации запросов. Политики учитывают:
- кто делает запрос (субъект),
- какое действие выполняется,
- над каким объектом.