zn21
image.png
image.png
RBAC 1模型:相对于RBAC 0模型,增加了⾓⾊分级的逻辑,类似于树形结构,下⼀节点继承上⼀节点的所有权限,如role1根节点下有role1.1和role1.2两个⼦节点。 image.png
⾓⾊分级的逻辑可以有效的规范⾓⾊创建(主要得益于权限继承逻辑),我之前做过BD⼯具(类CRM),BD之间就有分级(经理、主管、专员),如果采⽤RBAC 0模型做权限系统,我可能需要为经理、主管、专员分别创建⼀个⾓⾊(⾓⾊之间权限⽆继承性),极有可能出现⼀个问题,由于权限配置错误,主管拥有经理都没有权限。 ⽽RBAC 1模型就很好解决了这个问题,创建完经理⾓⾊并配置好权限后,主管⾓⾊的权限继承经理⾓⾊的权限,并且⽀持针对性删减主管权限。RBAC 1模型如下图:多对多关系仍旧没有改变,只增加⾓⾊分级逻辑。
滤纸片法
[图⽚上传中...(image.png-95cc0-1640060170347-0)]
RBAC 2模型:基于RBAC 0模型,对⾓⾊增加了更多约束条件。
image.png
如⾓⾊互斥,⽐较经典的案例是财务系统中出纳不得兼管稽核,那么在赋予财务系统操作⼈员⾓⾊时,同⼀个操作员不能同时拥有出纳和稽核两个⾓⾊。
锌焙砂如⾓⾊数量限制,例如:⼀个⾓⾊专门为公司CEO创建的,最后发现公司有10个⼈拥有CEO⾓⾊,⼀个公司有10个CEO?
这就是对⾓⾊数量的限制,它指的是有多少⽤户能拥有这个⾓⾊。
RBAC 2 模型主要是为了增加⾓⾊赋予的限制条件,这也符合权限系统的⽬标:权责明确,系统使⽤安全、保密。
RBAC 3模型:同样是基于RBAC0模型,但是综合了RBAC 1和RBAC 2的所有特点。这⾥就不在多描述,读者返回去看RBAC 1和RBAC 2模型的描述即可。
四、 RBAC 权限管理的在实际系统中的应⽤
RBAC 权限模型由三⼤部分构成,即⽤户管理、⾓⾊管理、权限管理。⽤户管理按照企业架构或业务线架构来划分,这些结构本⾝⽐较清晰,扩展性和可读性都⾮常好。⾓⾊管理⼀定要在深⼊理解业务逻辑后再来设计,⼀般使⽤各部门真实的⾓⾊作为基础,再根据业务逻辑进⾏扩展。权限管理是前两种管理的再加固,做太细容易太碎⽚,做太粗⼜不够安全,这⾥我们需要根据经验和实际情况来设计。 1.⽤户管理
蒲公英化妆品⽤户管理中的⽤户,是企业⾥每⼀位员⼯,他们本⾝就有⾃⼰的组织架构,我们可以直接使⽤企业部门架构或者业务线架构来作为线索,构建⽤户管理系统。
image.png
需要特殊注意:
实际业务中的组织架构可能与企业部门架构、业务线架构不同,需要考虑数据共享机制,⼀般的做法为授权某个⼈、某个⾓⾊组共享某个组织层级的某个对象组数据。
2.⾓⾊管理
在设计系统⾓⾊时,我们应该深⼊理解公司架构、业务架构后,再根据需求设计⾓⾊及⾓⾊内的等级。⼀般⾓⾊相对于⽤户来说是固定不变的,每个⾓⾊都有⾃⼰明确的权限和限制,这些权限在系统设计之处就确定了,之后也轻易不会再变动。
(1)⾃动获得基础⾓⾊
当员⼯⼊职到某部门时,该名员⼯的账号应该⾃动被加⼊该部门对应的基础⾓⾊中,并拥有对应的基础权限。这种操作是为了保证系统安全的前提下,减少了管理员⼤量⼿动操作。使新⼊职员⼯能快速使⽤系统,提⾼⼯作效率。
(2)临时⾓⾊与失效时间
公司业务有时需要外援来⽀持,他们并不属于公司员⼯,也只是在某个时段在公司做⽀持。此时我们需要设置临时⾓⾊,来应对这种可能跨多部门
协作的临时员⼯。
如果公司安全级别较⾼,此类账号默认有固定失效时间,到达失效时间需再次审核才能重新开启。避免临时账号因为流程不完善,遗忘在系统中,引起安全隐患。
(3)虚拟⾓⾊
部门⾓⾊中的等级,可以授权同等级的员⼯拥有相同的权限,但某些员⼯因⼯作原因,需要调⽤⾓⾊等级之外的权限,相同等级不同员⼯需要使⽤的权限还不相同。这种超出⾓⾊等级⼜合理的权限授予,
我们可以设置虚拟⾓⾊。这⼀虚拟⾓⾊可集成这⼀⼯作所需的所有权限,然后将它赋予具体的员⼯即可。这样即不⽤调整组织架构和对应的⾓⾊,也可以满⾜⼯作中特殊情况的权限需求。
(4)⿊⽩名单
⽩名单:某些⽤户⾃⾝不拥有某部门的顶级⾓⾊,但处于业务需求,需要给他⾓⾊外的⾼级权限,那么我们可以设计限制范围的⽩名单,将需要的⽤户添加进去即可。在安全流程中,我们仅需要对⽩名单设计安全流程,即可审核在⽩名单中的特殊⽤户,做到监控拥有特殊权限的⽤户,减少安全隐患。
⿊名单:⽐较常见的⿊名单场景是某些犯了错误的员⼯,虽然在职,但已经不能给他们任何公司权限了。这种既不能取消⾓⾊关联,也不能完全停⽤账号的情况,可以设置⿊名单,让此类⽤户可以登录账号,查看基本信息,但⼤多数关键权限已经被⿊名单限制。
权限管理
权限管理⼀般从三个⽅⾯来做限制。页⾯/菜单权限,操作权限,数据权限。
拖把头
image.png
钢铁清洗剂
(1)页⾯/菜单权限
对于没有权限操作的⽤户,直接隐藏对应的页⾯⼊⼝或菜单选项。这种⽅法简单快捷直接,对于⼀些安全不太敏感的权限,使⽤这种⽅式⾮常⾼效。
(2)操作权限
操作权限通常是指对同⼀组数据,不同的⽤户是否可以增删改查。对某些⽤户来说是只读浏览数据,对某些⽤户来说是可编辑的数据。