xjtuer最好不要抄,五次作业都是去年优秀作业,被老师逮住全给0分就得不偿失了,放在这里是给大家一个思路不用再去查找很多资料,了解之后再自己总结写一写
RBAC控制权限模型介绍
RBAC(Role Based Access Control)中文全称是基于角色的访问控制。在RBAC模型中,权限与角色相关联,不同的角色有不同的权限,用户通过被分配为不同的角色从而获得不同角色的权限,从而简化用户的权限管理。用户与角色关联后,同能进行自主授权和权限专营,必须通过角色来控制授权信息,实现访问控制。
在此模型中,角色是用户和权限的中间层,是根据系统中需要的功能和职权来设置的,角色可以因为系统的需要而删除或者添加。与传统的用户----权限直接关联的访问控制模型相比,RBAC 模型的用户与一个或多个角色相关联,而角色与一个或多个权限相关联,用户与权限的关联是动态的,RBAC 基础模型示意图如下图所示。
在RBAC中,访问的主体不再是传统访问控制中的用户,角色是RBAC中访问的主体。为了提高访问处理的效率,避免相同权限的重复设置,RBAC中还有“角色继承”的概念,让角色不仅有自己的属性,还可以继承其他角色的属性和权限,通过角色继承,RBAC模型就像是把一个具体组织的内部人员之间的关系抽象化。
模型介绍
上述RBAC模型是RBAC机制的基本模型,又称为RBAC0(Core RBAC),除此之外,还有一些在此基础上演化出来的模型,如角色分层模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC),接下来对这些RBAC模型簇进行大概介绍
以下图片均引用自网络https://blog.csdn.net/weixin_34405354/article/details/86398693
基本模型 RBAC0
RBAC0,它是RBAC0的核心,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。RBAC0定义了能构成RBAC控制系统的最小的元素集合,RBAC0由四部分构成:
- 用户(User)
- 角色(Role)
- 会话(Session)
- 权限(Permission)
角色分层模型 RBAC1
RBAC1,它是RBAC角色的分层模型,RBAC1建立在RBAC0基础之上,在角色中引入了继承的概念,有了继承那么角色就有了上下级或者等级关系,即子角色可以继承父角色的所有权限,但是子角色必须是在父角色的基础上减少权限点
角色限制模型 RBAC2
RBAC2,它是RBAC的约束模型,RBAC2也是建立的RBAC0的基础之上的,在RBAC0基础上假如了约束的概念,主要引入了静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。
SSD是用户和角色的指派阶段加入的,主要是对用户和角色有如下约束:
- 互斥角色:同一用户不能分配到一组互斥角色集合中的多个角色,互斥角色是指权限互相制约的两个角色。
- 基数约束:一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。
- 先决条件约束:指要想获得较高的权限,要首先拥有低一级的权限。
- 运行时互斥:例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色
统一模型 RBAC3
它包含了RBAC1和RBAC2,利用传递性,也把RBAC0包括在内,综合了RBAC0、RBAC1和RBAC2的所有特点
模型关键点
模型要素
一个权限系统需要具备如下的几个关键要素:
- 项目:对权限服务来说,一个项目,即为一个服务对象,不同项目间的权限数据是相互隔离的。
- 权限点:业务系统定义的一个具体的权限,一般定义为一种动作,如:签约、审批、增、删、查、改等,都可以是一个权限点。权限点不直接分配给用户。
- 角色:一定数量权限点的集合。权限分配的单位与载体,目的是隔离用户与权限点的逻辑关系。
- 权限约束:对一个权限点的附加限制,可配置为权限点的数据范围或附加条件。
- 角色属性:对一个角色的附加属性,如:虚拟角色。角色属性通过"全局权限点"实现。(业务系统可自行定义,自行解释角色属性)
- 全局权限点:是一种特殊的权限点,角色关联全局权限点后,全局权限点约束的键、值将作为角色属性返回。
权限配置分类
我们平时使用的权限其实是有分类的,大体上分为三类:页面权限、操作权限、数据权限。
该图片引自网络 https://blog.csdn.net/sinat_33087001/article/details/119842485
使用的时候,页面权限和操作权限通过配置成相应的权限点实现,数据权限通过配置约束并附着在操作权限上生效。