Skip to content

v1.1.1 — Иерархические группы идентификации

Choose a tag to compare

@NAGenaev NAGenaev released this 12 Jun 20:28
· 78 commits to main since this release

Иерархические группы идентификации

Единицы хранения идентификационных данных объединены в иерархию групп: политики распространяются от родительских групп к дочерним, поддерживаются группы любой глубины вложенности.

Архитектура:

  • IdentityGroup — именованная группа с произвольным набором политик
  • GroupMembership — ссылка «сущность → группа» с поддержкой множественного членства
  • GroupHierarchy — ссылка «дочерняя → родительская группа»; при построении токена выполняется BFS-обход для сбора всех унаследованных политик

Разрешение политик: при создании токена определяется полное множество политик — собственные политики сущности плюс политики всех групп, в которые она входит (включая все предки по иерархии). Удаление дубликатов происходит автоматически.

API

Метод Путь Описание
POST /v1/identity/group Создать группу
GET /v1/identity/group/name/:name Получить группу по имени
GET /v1/identity/group/id/:id Получить группу по идентификатору
POST /v1/identity/group/id/:id/members Изменить состав группы
POST /v1/identity/group/id/:id/subgroups Изменить дочерние группы
DELETE /v1/identity/group/id/:id Удалить группу
LIST /v1/identity/group/ Перечислить группы

CLI

identity group create --name=<name> --policy=<policy>...
identity group add-member <group-name> <entity-name>
identity group add-child <parent-name> <child-name>
identity group list
identity group get <name>
identity group delete <name>

Состав изменений

  • identity.Store: новые методы для CRUD-операций с группами, управления членством и иерархией подгрупп; PolicyResolver поддерживает BFS-обход для разрешения унаследованных политик
  • core.buildTokenPolicies: интегрировано разрешение групповых политик
  • Все 8 тестов идентификации проходят; добавлены TestGroupCRUD, TestGroupInheritance