访问控制 RBAC / ABAC 总览待审核
decide · rule + 组合算法

action + 全部合起来 → 决策:规则冲突时,谁说了算

四个输入 (01-request 装配的四元组) 齐了,交给 PDP (Policy Decision Point)。policy = 一组 rule,每条要么 permit 要么 deny, 各自带一个条件 when(req)。多条同时命中十分常见 —— 如何收敛成一个结论?依靠组合算法 (combining algorithm)。任意调整四个轴、切换算法,观察规则逐条点亮、最终盖下印章。

who

action

what

when/where

10:00

组合算法 (多条命中时谁赢)

policy 规则 (亮 = 命中当前请求;高亮 = 当前算法选中的决定性规则)

决策

同一个请求,三种算法可能给出三种答案

组合算法不是细节,它本身就是一项策略决定。下面用当前请求同时运行三种算法 —— 当 permit 和 deny 同时命中时,结果便会出现分歧。点击上方的「载入冲突场景」按钮,即可看到最典型的冲突。

怎么选?deny-overrides 最保守、最常用 —— 安全场景默认它 (有一条拒就拒)。 first-applicable 使顺序 = 优先级,如同防火墙规则链,可控但需谨慎处理规则排序。 无论选哪种,都要配一个默认决策:本系列默认 deny (closed world,没人放行就拒) —— 这几乎总是对的:忘了写规则,应该拒,而不是放。 obligation (附带义务):permit 不总是「干净地放行」。命中放行后,引擎还能附带要求 —— 「写审计日志」「脱敏 / 水印展示」。这就是为什么决策的返回值往往不是一个 bool, 而是 { decision, obligations }。将资源调至 L2+ 或将设备切换为个人,即可看到 obligation 出现。