what:资源也有属性——「自己的」和「密级」
what 也不只是一个资源 id。resource 同样带着属性:owner(归谁)、classification(密级)、status……授权里两条最重要的规则都由此而来:owner === subject.id 就是「能改自己的」,判据是关系而非静态权限;clearance ≥ classification
就是「密级足够才可见」。
1 · owner 与 classification 两条闸门
把 who 固定为 Bob(editor,clearance L1),只让资源属性与动作变化,两条规则随 what 亮灭:归属决定 r-owner 是否命中,密级决定 r-clearance 是否命中。
建议 · owner 是关系,不是属性的「值」。r-owner 比较的是 resource.owner === subject.id——它把这一份资源和这一个人关联起来,而不是给整类资源发放一个静态权限。这种「按对象实例、依人物关系」的判定,正是
ReBAC(Relationship-Based,Google Zanzibar / GitHub 仓库协作所采用的范式)的核心,ReBAC:权限是一条边 一页把它单独展开。
警示 · 密级是一道独立闸门。资源归属本人、动作为 update 时 r-owner 放行;但只要 classification 提升至 L2 / L3(超过 Bob 的 L1),r-clearance 便会命中,在
deny-overrides 下一票否决。换言之,「资源属于本人」并不能凌驾于「密级不足」之上。这种「多条规则同时命中、孰胜孰负」的问题,正是 action + 全部合起来 → 决策 一页组合算法所要解决的。