2. RBAC 基础概念:用户、角色、权限、会话、约束的语义与关系
RBAC 模型的核心由五个基础概念构成——用户(User)、角色(Role)、权限(Permission)、会话(Session)和约束(Constraint)。这五个概念共同定义了“谁在什么条件下能对什么资源执行什么操作”的完整语义。本章从架构视角拆解每个概念的边界、分层职责、交互链路及落地要点,为后续模型设计奠定语义基础。
2.1 概念边界:每个元素的外延与内涵
| 概念 | 语义定义 | 外延边界(包含什么) | 内涵约束(不含什么) |
|---|---|---|---|
| 用户 | 系统可识别的主体,可独立发起操作请求 | 自然人账号、服务账号、API 客户端、设备身份 | 用户不直接拥有权限;用户不属于角色 |
| 角色 | 权限的逻辑集合,授权的最小策略单元 | 岗位角色(如“财务审核员”)、项目角色、临时角色 | 角色不直接映射到具体人员;角色不包含会话状态 |
| 权限 | 对受保护资源的操作许可 | 读/写/执行操作、API 端点访问、数据域范围 | 权限不携带用户上下文;权限不包含授权决策逻辑 |
| 会话 | 用户登录后建立的临时上下文,管理角色激活状态 | 登录令牌、Web 会话、API 密钥上下文、SSO Ticket | 会话不存储权限;会话不持久化角色分配 |
| 约束 | 控制角色分配与角色激活的策略规则 | 职责分离(SoD)、基数限制、前提条件、时间窗口 | 约束不定义具体权限;约束不直接绑定用户 |
边界要点: 用户是主体,角色是策略中介,权限是操作许可,会话是运行时上下文,约束是规则阀门。五个概念各司其职,不可互相替代。
2.2 分层结构:概念间的依赖与层级
RBAC 概念遵循三层依赖结构,底层为上层提供能力,上层调用底层服务:
- 持久层(静态定义):用户、角色、权限及其分配关系(用户-角色分配 URA、角色-权限分配 RPA)。数据存储在持久化介质中,变更频率低。
- 运行时层(动态激活):会话承载用户登录后的角色激活状态,每次请求在会话上下文中判断已激活的角色集。生命周期短,与用户登录态绑定。
- 策略层(规则约束):约束横跨持久层与运行时层,对 URA 和角色激活施加前提条件、互斥规则和基数限制。策略层不存储数据,仅提供判决逻辑。
下图展示了五个概念之间的核心关系与数据流向: