1、定义
- RBAC(Role-Based Access Control,基于角色的访问控制)是一种流行的访问控制策略。
- 通过将权限分配给角色,然后将角色分配给用户或用户组,来实现对资源的访问控制。
- 这种方法提供了更灵活、可管理和可扩展的访问控制机制。
2、核心概念
- 用户(User):系统中的个体,可以是人、软件代理或其他系统。
- 角色(Role):一组权限的集合,通常与特定的职位或职责相关联。例如,一个“经理”角色可能具有查看报告、批准请求和分配任务的权限。
- 权限(Permission):对系统资源(如文件、数据库记录、Web 页面等)的访问和操作能力。权限可以是读、写、执行等。
- 会话(Session):用户与系统进行交互的一段时间。在会话期间,用户的角色和权限是有效的。
- 继承(Inheritance):角色之间可以存在继承关系,即一个角色可以继承另一个角色的所有权限。这允许创建具有层次结构的角色,如“高级经理”继承“经理”的权限。
举个例子:登录功能的用户-角色-权限关系
图片来源:RBAC角色权限设计-阿里云开发者社区
3、RBAC模型四级分级
3.1 RBAC0(基础模型)
- 描述:RBAC0是RBAC模型的核心和基础,它定义了用户、角色和权限之间的基本关系。
- 组成:
- 用户(Users):系统中的个体,如员工、客户等。
- 角色(Roles):代表一组权限的集合,通常与组织的职位或职责相对应。
- 权限(Permissions):对系统资源的访问和操作权限。
- 特点:
- 用户和角色之间是多对多的关系,即一个用户可以有多个角色,一个角色也可以被多个用户所拥有。
- 角色和权限之间也是多对多的关系,即一个角色可以有多个权限,一个权限也可以被多个角色所拥有。
3.2 RBAC1(角色分层模型)
- 描述:RBAC1在RBAC0的基础上引入了角色层次的概念,允许角色之间存在继承关系。
- 组成:
- 除了RBAC0的组成外,还引入了角色继承的概念。
- 特点:
- 子角色可以继承父角色的所有权限,同时也可以在父角色的基础上增加或删除权限。
- 角色继承关系通常反映了组织中的职位层级关系。
3.3 RBAC2(角色限制模型)
- 描述:RBAC2在RBAC0的基础上增加了对角色和权限的约束,以支持更复杂的访问控制需求。
- 组成:
- 除了RBAC0的组成外,还引入了以下约束:
- 互斥角色:一个用户不能同时拥有两个或多个互斥关系的角色。
- 基数约束:限制一个用户可拥有的角色数量,或一个角色可被分配的用户数量。
- 先决条件约束:用户获得高级角色之前必须先拥有低级角色。
- 除了RBAC0的组成外,还引入了以下约束:
- 特点:
- 通过引入约束,RBAC2能够更好地支持职责分离和权限管理的要求。
3.4 RBAC3(统一模型)
- 描述:RBAC3是RBAC1和RBAC2的整合,同时包含了角色分层和角色限制的特性。
- 组成:
- 包括RBAC1和RBAC2的所有组成和特性。
- 特点:
- RBAC3是RBAC模型中最全面、最复杂的级别,适用于需要高度灵活性和复杂访问控制策略的场景。
- 通过角色分层和角色限制的结合,RBAC3能够支持更精细的权限管理和访问控制需求。