知识卡片
RBAC的角色分类与权限继承的两条规则
内容
基于角色的访问控制(RBAC)用”角色”作为用户和权限之间的中间层:权限先 批量赋给角色,再把角色赋给用户,用户借此间接获得一整批权限,避免了 “每加一个用户就要重新配一遍权限”的重复劳动。角色本身还可以细分—— 固定角色是系统预定义、用户不能自行增删改的标准分组(覆盖大多数常见 场景),自定义角色是固定角色无法满足需求时,管理员按实际需要单独创建 的角色,其中应用程序角色更特殊:一旦激活,只能通过特定应用程序访问 数据库,杜绝了”绕开应用程序、直接连数据库乱查”的路径。当一个用户同时 拥有自己的权限、又继承了角色的权限、还可能分属多个角色时,最终权限 由两条规则决定:一是并集规则——用户的最终权限是自身权限与所有所属 角色权限的并集,不是取交集或只认最后分配的那个角色;二是拒绝优先 规则——只要在任意一条权限路径上(用户自身或所属的任一角色)出现过 “拒绝访问”,即使其他路径授予了这个权限,用户依然会被拒绝,拒绝的 优先级高于授予。这套”取并集但拒绝优先”的规则组合,保证了权限管理 既能灵活叠加授权,又能通过一条明确的拒绝规则兜底安全性。
参考来源
- 位置:《数据库原理(微课版)》第5章《数据库安全与保护》5.1.3节"基于
角色的权限管理机制"(源文件:_epub-src/index_split_003.html)
- 结论依据:原文明确"用户被分配为角色A时,用户自动继承INSERT权限
……当用户对student表有拒绝INSERT权限,即使用户继承了角色A,该用户
同样会被拒绝INSERT权限",以及"当分属不同角色时,用户的权限是这些
角色权限的并集……当各个角色的权限中存在拒绝访问时,用户也会被拒绝
访问",因此可以推出并集授权、拒绝优先这两条权限合成规则。
- 原始内容:当分属不同角色时,用户的权限是这些角色权限的并集……当
各个角色的权限中存在拒绝访问时,用户也会被拒绝访问。