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

Модуль VI — идентичность, разрешения и управление

Модуль VI — это плоскость управления над существующей у движка моделью авторизации — он не реализует заново энфорсер или коннекторы идентичностей, он их потребляет. Он связывает пять подсистем за одним ограниченным контекстом (идентичность и её управление): сверщик реестра каталога, мост «агент↔идентичность», который делает атрибуцию твёрдой, движок ABAC только-на-запрет, гейт одобрения с человеком в контуре (human-in-the-loop) и бэкенды авторинга политик/идентичностей. Это корень каждого управляемого действия в продукте.

Модуль находится в слое управления (Management layer) и является авторитетом решений для control plane: кто и что может делать что и какие действия требуют сначала человека. Его контракт — это сделанная обеспечиваемой позиция только-на-запрет, deny-by-default —

  • Сверка реестра сводит подключённый каталог (источники идентичностей) в канонические сущности Identity движка плюс собственный для модуля граф коллекций/членства, по принципу find-or-create с ключом по одному только внешнему id, так что она обновляет ту же строку, которую карта доступа создаёт из аудиторской ссылки. Именно эта сходимость к одной строке делает возможной твёрдую атрибуцию.
  • Мост «агент↔идентичность» привязывает агента к внутреннему id канонической нечеловеческой идентичности, которую предъявляют его учётные данные, разрешая жёсткую зависимость, что позволяет модулю III (карте доступа) отменять ложный дрейф permitted-vs-observed.
  • Движок ABAC — это нативный оценщик, который работает после RBAC и может только дополнительно ограничивать — он никогда не расширяет грант.

Модуль VI владеет четырьмя сущностями в разделяемой модели данных — коллекцией и ребром член-коллекции (производный от источника граф групп/ролей, разрешаемый транзитивно в пределах границ), одобрением (изменяемый HITL-запрос) и трассой решений-одобрений только-для-добавления. Идентичности не дублируются в таблицу модуля; они сверяются в каноническую сущность Identity движка.

Оценщик ABAC реализует шов оценщика политик движка с проверенными свойствами: каждое правило — это правило deny; оно работает после RBAC внутри AND, поэтому политика никогда не может расширить доступ; некорректно сформированная включённая (enabled) политика отказывает закрыто (запрещает); горячий путь авторизации обслуживается из потенантного кеша, инвалидируемого после фиксации записи, строго изолированного по тенанту. Спецификации политик типизированы и пере-маршалируются при записи (операторский JSON никогда не проходит дословно туда-обратно), так что учётные данные не могут попасть в спецификацию. OPA/Rego — это шов внешнего оценщика, никогда не зависимость, затаскиваемая в движок.

Гейт одобрения — это прослеживаемость «действие→человек», которую закрепляет аудиторский журнал: разделение обязанностей и страж дублирующего решающего ключуются по стабильной идентичности пользователя (системный токен не может принимать решение), порог множественного одобрения безопасен к гонкам на хранилище (конкурентное пересечение разрешается ровно в одного победителя), а истечение выводится лениво при чтении, затем материализуется явной, скоупленной по тенанту вычисткой (sweep). Бэкенды авторинга (managed-settings/hooks, политика-как-код Cedar/OPA, граф объектов WIF) добавляют путь записи publish→неизменяемая-ревизия→дрейф; для Cedar опубликованная политика активируется на живом потенантном оверлее только-на-запрет и перезагружается при старте, так что утверждение active переживает перезапуск.

Модуль потребляет базу авторизации и аудита движка и типизированный реестр идентичностей из настроенных источников каталога; он заполняет поле Agent.IdentityID, от которого зависит карта доступа. Он производит события FindingReport на шине событийразделяемая идентичность, привязанная более чем к одному агенту, плюс эскалация и истечение одобрения — каждое испускается один раз, ограниченное сохранённым маркером, так что повторная вычистка не может испустить дважды. Каждая привилегированная мутация и релевантные для сверки чтения идентичности и привязки самоаудируются на реального принципала внутри зафиксированной транзакции; аудиторский актор — это всегда типизированная ссылка на принципала, никогда не email.