RBAC模型
前⾔
权限管理⼏乎是所有后台管理系统必要的组成部分,主要针对不同权限的⼈对资源的访问控制,可以避免因权限缺失⽽导致不必要的风险问题,如资源数据泄露、或误⼊系统操作不当导致的风险。 ⽬前我所了解的权限框架有:
Apache Shrio
Spring Security
权限模型
⽬前普及度最⾼的就是 RBAC 模型(Role-Based Access Control)
RBAC模型主要分为RBAC0、RBAC1、RBAC2、RBAC3,RBAC0是所有模型的基础,其他三种是基于RBAC0模型的扩展与变形。
RBAC0模型
电热地膜
RBAC0是基础,定义了能构成RBAC模型的最⼩集合。
悬浮机器人⽤户
无底鞋发起操作的主体。不限于单个⽤户,也可以是⽤户组。只要是对资源有访问需求的都可以称之为⽤户。 ⾓⾊
起到了桥梁的作⽤,连接了⽤户和权限的关系,每个⾓⾊可以关联多个权限。如果⼀个⽤户关联多个⾓⾊,那么⽤户就拥有了多个⾓⾊的权限许可。简⽽⾔之就是权限的集合。 权限许可
⽤户对资源的访问权限许可。包括:页⾯权限,操作权限,数据权限等。
会话
⽤户通过会话对⾓⾊进⾏操作,即⽤户对⾓⾊的分配控制操作。
RBAC1模型
RBAC1模型引⼊了⾓⾊继承的概念,即⾓⾊拥有上下级关系或等级关系。⽗类⾓⾊拥有⼦类⾓⾊的所有的权限。 ⾓⾊间的继承关系可分为⼀般继承关系和受限继承关系。⼀般继承关系仅要求⾓⾊继承关系是⼀个绝对偏序关系,允许⾓⾊间的多继承。
⽽受限继承关系则进⼀步要求⾓⾊继承关系是⼀个树结构,实现⾓⾊间的单继承。这种设计可以给⾓⾊分组和分层,⼀定程度简化了权限管理⼯作。
⽐如:部门主管只能更改该部门的员⼯信息,经理能更改所有部门主管的信息和所有部门的员⼯信息。
RBAC2模型
RBAC2 在 RBAC0 的基础上引⼊了静态职责分离(Static Separation of Duty,简称SSD)和动态职责分离(Dynamic Separation of Duty,简称DSD)两个约束概念。他们两个作⽤的⽣命周期是不同的。
SSD 作⽤于约束⽤户和⾓⾊绑定时。
互斥⾓⾊:就像上⾯的例⼦你不能既是A⼜是B,互斥的⾓⾊只能⼆选⼀ ;
基数约束:⽤户的⾓⾊数量是有限的不能多于某个基数;
条件约束:只能达到某个条件才能拥有某个⾓⾊。经常⽤于⽤户等级体系。
DSD 作⽤于会话和⾓⾊交互时。当⽤户持有多个⾓⾊,在⽤户通过会话激活⾓⾊时加以条件约束,根据不同的条件执⾏不同的策略。
RBAC3模型
1 +
2 =
3 —> RBAC1 + RBAC2 = RBAC3
整合了RBAC1、2的模型,⽬前迭代后的最全⾯版本。
⽤户组静电纺丝装置
液晶大屏拼接墙我们前⾯提到过⽤户组,当平台⽤户基数增⼤,⾓⾊类型增多时,并且有⼀些⽤户具有相同的属性,⽐如研发部的所有员⼯,如果直接给⽤户分配⾓⾊,管理员的⼯作量就会很⼤,如果把相同属性的⽤
户归类到某⽤户组,那么管理员直接给⽤户组分配⾓⾊,此时⽤户组的每个⽤户都拥有该⾓⾊。之后其他⽤户加⼊到该⽤户组后,会⾃动获取⽤户组的所有⾓⾊,退出⽤户组同时也会撤销该⾓⾊,⽆需⼿动管理⾓⾊。
调节臂