1. RBAC 基础概念
1.1 RBAC 模型定义
基于角色的访问控制(RBAC,Role-Based Access Control) 是一种将权限与角色关联,再将角色授予用户的访问控制模型。其核心思想是:用户不直接拥有权限,而是通过角色间接获得权限。这种解耦设计大幅降低了大规模系统中的权限管理复杂度。
RBAC 核心原则: 权限不直接分配给用户,而是分配给角色;用户通过被授予角色来获得相应权限。
1.2 核心三要素
RBAC 模型围绕三个基本实体构建,它们之间的关系构成了权限管理的基石:
| 要素 | 定义 | 示例 |
|---|---|---|
| 用户(User) | 系统的操作主体,可以是人、设备或服务账号 | 张三、API 网关、运维机器人 |
| 角色(Role) | 权限的集合,代表一类职责或岗位 | 管理员、审计员、普通用户 |
| 权限(Permission) | 对特定资源执行特定操作的许可 | 读取订单、删除日志、审批工单 |
三要素之间的映射关系遵循以下规则:
- 用户-角色关联(UA):一个用户可以拥有多个角色,一个角色也可以被多个用户持有。
- 角色-权限关联(PA):一个角色可以包含多个权限,一个权限也可以被多个角色包含。
- 会话(Session):用户激活其部分角色集合的运行时上下文,控制实际生效的权限范围。
1.3 RBAC 与 DAC / MAC 的区别
访问控制模型主要分为三大类,理解它们的差异有助于在系统设计时做出正确选择:
| 维度 | DAC(自主访问控制) | MAC(强制访问控制) | RBAC(基于角色访问控制) |
|---|---|---|---|
| 控制主体 | 资源所有者(用户) | 系统安全策略(中央) | 角色管理员(组织) |
| 权限传递 | 可自主授予他人 | 不可传递 | 通过角色继承或层级传递 |
| 灵活性 | 高,但易失控 | 低,策略刚性 | 中高,策略可配置 |
| 典型场景 | 个人文件共享、桌面系统 | 军事系统、政府机密系统 | 企业应用、SaaS 平台、数据库 |
| 管理复杂度 | 低(用户自管理) | 高(全局策略定义) | 中(角色设计是关键) |
| 安全等级 | 较低 | 最高 | 较高 |
选型建议: 大多数企业级系统首选 RBAC,因为它兼顾了管理效率与安全可控性。DAC 适合个人或小团队场景,MAC 则适用于对数据保密性有严格法规要求的领域。
常见误区: RBAC 不是万能模型。在资源粒度极细(如行级数据权限)或动态权限需求(如基于时间/地点的访问)场景下,RBAC 需要结合 ABAC(基于属性访问控制)或引入权限计算引擎才能满足需求。