who:身份只是开头,真正进规则的是属性
who 不只是一个用户名。它是一个 subject (principal),携带一组属性:
role、dept、clearance (密级)、employed (是否在职)……
RBAC 只读取其中一个 —— role;ABAC 让任意属性都能写进规则。
下面将动作和资源固定,只改动 who,观察决策如何随属性逆转。
action (固定)
update
what (固定)
营销文案 #42
owner=u-bob · L1 内部
挑一个 subject (会载入它的默认属性,可再改)
逐个拨动 who 的属性
role
dept
clearance
employed
policy 规则 (亮 = 命中当前请求;高亮 = 决定性规则)
决策 (deny-overrides)
role 固定不动,只改 clearance 或
employed —— 决策照样逆转。这正是 ABAC 超出 RBAC 之处:两个 role 完全相同的人,
因为其它属性不同,得到不同结论。RBAC 里这是做不到的 (它只读取 role)。
r-owner 这条:它比较的是 resource.owner === subject.id ——
把「人」和「物」用一条关系连起来 (「这是不是你的东西」)。选中 Bob 时它会亮 (文案归 Bob)。
这条线索会在 04-what 页继续展开,也是 ReBAC 的种子。