RBAC / 权限 总览待审核
RBAC · why indirection

为什么:在 User 和 Permission 之间插一层 Role

最朴素的做法是 ACL(Access Control List):直接给每个用户挂一串权限。 用户少时没问题,但用户和权限是一张全连接的网——M 个用户 × N 个权限根线。 新人入职要逐条勾选;「所有编辑都加导出权限」这种策略变更,要逐个用户修改。 RBAC 的核心改动只有一个:在中间插一层 Role,把 User→Permission 拆成 User→Role + Role→Permission,连线从 M×N 掉到 M+N

6
8
3 (只影响 RBAC 图;ACL 没有角色)

直接 ACL:User → Permission

连线 48= M×N

RBAC:User → Role → Permission

连线 14= M+N

这层 indirection 的价值

RBAC 的两条边:User → Role(谁是什么角色,见 最终生效集的角色分配)和 Role → Permission(角色能做什么,见 Permission 的身份能力清单)。 本系列就是沿这两条边展开的。 RBAC 不是银弹。它解决「能不能做」,但「对谁做」(只能改自己的 vs 所有人的)它管不了—— 那是 Scope / data-scope 的职责。混淆这两件事, 会为了「只看自己的」之类的需求造出大量畸形角色。 「能不能做」这一半由 Permission 的身份展开。