Перейти к основному содержимому

ADR-0025: Identity Role + Permission Scope Model

Статус

Accepted

Контекст

Pin требует RBAC + ABAC: роли удобны для администрирования, но каждый backend метод должен проверять конкретный permission и scope. Permissions приходят из разных сервисов, но должны быть видимы в одном каталоге для Admin Panel, Gateway и IdentityContext.

Решение

Identity Service хранит:

  • PermissionScopeDefinition — каталог всех permissions всех сервисов;
  • Role — человекочитаемая роль;
  • RolePermission — связь роли с permission и scope restrictions;
  • UserRoleAssignment — связь пользователя с ролью и сроком действия.

Runtime authorization проверяет PermissionCode + scope, а не RoleCode.

Последствия

  • Роли можно менять без изменения service code.
  • Permission catalog становится source of truth для UI и actor context.
  • Owning service остается ответственным за final business policy.
  • Изменение permissions роли инвалидирует permission snapshots и sessions по policy.

Ссылки

Обратные ссылки

Автоссылки: где используется этот документ.