v1.1.0 — Управление идентификационными данными
Управление идентификационными данными
Введён уровень идентификационных данных (Identity layer): каждый аутентифицированный пользователь получает единую сущность — независимо от метода входа (Token, LDAP, JWT, AppRole, Kubernetes).
Ключевые понятия:
- Сущность (Entity) — канонический идентификатор пользователя или сервиса. Хранит псевдонимы, полученные от каждого метода аутентификации, и набор политик
- Псевдоним (Alias) — пара «accessor метода аутентификации + имя на стороне этого метода» (например,
auth_ldap+cn=alice,ou=users,...) - Автоматическое связывание — при входе через LDAP, JWT, AppRole или Kubernetes сервер ищет существующую сущность по accessor и имени пользователя. При нахождении — прикрепляет токен к ней; при отсутствии — создаёт новую сущность автоматически
Влияние на политику: к токену применяются как политики метода аутентификации (AppRole, LDAP и т. д.), так и политики сущности — без необходимости их повторного перечисления.
API
| Метод | Путь | Описание |
|---|---|---|
POST |
/v1/identity/entity |
Создать или обновить сущность |
GET |
/v1/identity/entity/name/:name |
Получить сущность по имени |
GET |
/v1/identity/entity/id/:id |
Получить сущность по идентификатору |
DELETE |
/v1/identity/entity/id/:id |
Удалить сущность |
LIST |
/v1/identity/entity/ |
Перечислить сущности |
CLI
identity entity create --name=<name> --policy=<policy>...
identity entity get <name>
identity entity delete <name>
identity entity list
Состав изменений
pkg/identity: новый пакет —Store,Entity,Alias,EntityMetadata; BoltDB-хранилище с корзинойidentitycore.Auth(Token, LDAP, JWT, AppRole, Kubernetes): вызовidentity.Store.FindOrCreateпри успешной аутентификации; прикрепление идентификатора и псевдонима к токенуapi.handleIdentity*: 10 HTTP-обработчиков (CRUD + list)- 6 новых тестов идентификации успешно проходят