跳转到内容

模块 VI —— 身份、权限与治理

模块 VI 是 位于引擎现有授权模型之上的治理平面——它 重新实现执行器或身份连接器, 而是消费它们。它在一个有界上下文(身份及其治理)背后绑定五个子系统:一个目录 花名册(roster) 协调器、 使归因变得稳固的 代理↔身份桥接、一个仅拒绝(deny-only)的 ABAC 引擎、 人在回路(human-in-the-loop) 审批门,以及策略/身份 编写后端。这是本产品中每一次 受治理 行动的根。

本模块位于管理层,是控制平面的 决策 权威:谁与什么可以做什么,以及哪些行动需要先经人工。 它的契约是把仅拒绝、默认拒绝(deny-by-default)的态势变得可执行——

  • 花名册协调 将一个已连接的目录(身份源)收敛为引擎的规范化 Identity 实体, 外加本模块拥有的集合/成员关系图,仅以外部 id 为键进行“查找或创建”,因此它会 升级同一行—— 即访问映射(access map)从某条审计引用所创建的那一行。正是这种单行收敛使稳固归因成为可能。
  • 代理↔身份桥接 将一个代理绑定到其凭据所呈现的规范化非人类身份(non-human identity)的内部 id, 解决那项硬依赖,使模块 III(访问映射)得以消解虚假的“许可对观测(permitted-vs-observed)”漂移。
  • ABAC 引擎 是一个原生评估器,在 RBAC 之后 运行,且只能 进一步收紧——它绝不放宽一项授予。

模块 VI 在共享数据模型中拥有四个实体——一个 集合(collection) 与一条 集合成员(collection-member) 边 (源派生的组/角色图,在边界内传递性解析)、一个 审批(approval)(一个可变的 HITL 请求), 以及一条只追加的 审批决策(approval-decision) 轨迹。身份 不会 被复制进某个模块表; 它们被协调进引擎的规范化 Identity 实体。

ABAC 评估器 实现引擎的策略评估器接缝(seam),并具有经过验证的属性:每条规则都是一条 拒绝 规则; 它在 AND 内于 RBAC 之后运行,因此一条策略绝不可能扩大访问;一条格式错误的 已启用 策略会 默认拒绝(fails closed);授权热路径由一个按租户划分的缓存提供服务,该缓存在一次写入提交 之后 失效, 并严格按租户隔离。策略规格在写入时 被类型化并重新编排(re-marshaled)(运维方的 JSON 绝不会原样往返), 因此凭据无法进入一个规格。OPA/Rego 是外部评估器接缝,绝不是被拖进引擎的依赖。

审批门 是审计账本所锚定的“行动→人工”可追溯性:职责分离(separation-of-duty)与 重复决策者守卫以 稳定的用户身份 为键(一个系统令牌无法决策),多审批阈值在存储层上是 竞态安全(race-safe) 的(并发越线会精确解析出唯一一个胜者),而过期在读取时惰性推导、 随后由一次明确的、按租户限定作用域的清扫(sweep)来物化。编写后端(managed-settings/hooks、 Cedar/OPA 策略即代码、WIF 对象图)增加了一条 发布→不可变修订→漂移 的写入路径; 对于 Cedar,一条已发布的策略会在活跃的、按租户划分的仅拒绝叠加层上被激活,并在启动时重新加载, 因此一个 active 声明能在重启后留存。

本模块 消费 引擎的授权与审计基座,以及来自所配置目录源的类型化身份花名册; 它填充访问映射所依赖的 Agent.IdentityID 字段。它在 事件总线产出 FindingReport 事件——一个绑定到不止一个代理的 共享身份,外加审批的 升级(escalation)过期(expiry)——每个事件仅发出一次,并以一个已持久化的标记为门控,因此重复的清扫不会重复发出。 每一次特权变更,以及与协调相关的身份与绑定读取,都会在一个已提交的事务内 自审计到真实主体(principal); 审计参与方始终是一个类型化的主体引用,绝不是电子邮箱。