1. RBAC 基础概念

1.1 RBAC 模型定义

基于角色的访问控制(RBAC,Role-Based Access Control) 是一种将权限与角色关联,再将角色授予用户的访问控制模型。其核心思想是:用户不直接拥有权限,而是通过角色间接获得权限。这种解耦设计大幅降低了大规模系统中的权限管理复杂度。

RBAC 核心原则: 权限不直接分配给用户,而是分配给角色;用户通过被授予角色来获得相应权限。

1.2 核心三要素

RBAC 模型围绕三个基本实体构建,它们之间的关系构成了权限管理的基石:

要素 定义 示例
用户(User) 系统的操作主体,可以是人、设备或服务账号 张三、API 网关、运维机器人
角色(Role) 权限的集合,代表一类职责或岗位 管理员、审计员、普通用户
权限(Permission) 对特定资源执行特定操作的许可 读取订单、删除日志、审批工单

三要素之间的映射关系遵循以下规则:

  • 用户-角色关联(UA):一个用户可以拥有多个角色,一个角色也可以被多个用户持有。
  • 角色-权限关联(PA):一个角色可以包含多个权限,一个权限也可以被多个角色包含。
  • 会话(Session):用户激活其部分角色集合的运行时上下文,控制实际生效的权限范围。
RBAC 核心三要素关系图 用户 (User) 角色 (Role) 权限 (Permission) UA 关联 PA 关联 会话 (Session) 激活角色 💡 用户通过会话激活角色,会话中只包含用户被授权的角色子集,实现最小权限原则。

1.3 RBAC 与 DAC / MAC 的区别

访问控制模型主要分为三大类,理解它们的差异有助于在系统设计时做出正确选择:

维度 DAC(自主访问控制) MAC(强制访问控制) RBAC(基于角色访问控制)
控制主体 资源所有者(用户) 系统安全策略(中央) 角色管理员(组织)
权限传递 可自主授予他人 不可传递 通过角色继承或层级传递
灵活性 高,但易失控 低,策略刚性 中高,策略可配置
典型场景 个人文件共享、桌面系统 军事系统、政府机密系统 企业应用、SaaS 平台、数据库
管理复杂度 低(用户自管理) 高(全局策略定义) 中(角色设计是关键)
安全等级 较低 最高 较高
选型建议: 大多数企业级系统首选 RBAC,因为它兼顾了管理效率与安全可控性。DAC 适合个人或小团队场景,MAC 则适用于对数据保密性有严格法规要求的领域。
DAC / MAC / RBAC 对比架构图 DAC 自主访问控制 资源所有者 自主授予权限 权限可传递 MAC 强制访问控制 系统安全策略 标签/等级强制 不可传递 RBAC 角色访问控制 角色管理员 角色-权限映射 角色层级继承
常见误区: RBAC 不是万能模型。在资源粒度极细(如行级数据权限)或动态权限需求(如基于时间/地点的访问)场景下,RBAC 需要结合 ABAC(基于属性访问控制)或引入权限计算引擎才能满足需求。