一、什么是RABCRBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念。取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限(如下图),从而达到用户和权限解耦的目的。 RABC的好处
在不断的发展过程中,RBAC也因不同的需求而演化出了不同的版本,目前主要有以下几个版本:
二、基于RBAC的几种权限体系设计1、用户-角色-权限这种权限体系其实就是RBAC0的模式了。这里面又包含了2种:
如上图:对于左边的用户-角色对应,每个人只能同时拥有一种角色,但是同一个角色里边,可能会含有多个用户(如:李四和王麻子都是业务员);而右边的用户-角色对应,是在左边的基础上,增加了一个用户可拥有多种角色的情况(如:小马哥既是经理,也要负责财务的工作); 那么,什么时候该使用多对一的权限体系,什么时候又该使用多对多的权限体系呢? 我的建议是:尽量可能地使用多对多的权限体系。如果这个系统的功能比较单一、使用人员较少、岗位权限相对清晰且不会出现兼岗的情况,这种情况也可以考虑用多对一的权限体系。 2、用户-组织-角色-权限一般公司的业务管理系统,都有数据私密性的要求:哪些人可以看到哪些数据,哪些人不可以看到哪些数据。这个时候,我们就需要把这些东西也考虑到你的权限体系内了。 假设上图是一家公司业务部门的组织架构图,公司要求你基于这个组织架构设计一个业务管理系统,并要求系统需要满足不同用户的数据私密性,比如:“张三”登录时,只能看到“张三”负责的数据;“张三”的领导登录时,能看到“团队A”的所有业务员负责的数据,但看不到其他团队业务员负责的数据等等。 在这种情况下,上一种权限体系就不适用了,但我们可以对其进行一些小改造后,即可达到数据管控的目的,如下图: 在“用户-角色-权限”的基础上,我们增加了用户与组织的关联关系,组织决定了用户的数据可视权限。但要想真正达到这个效果,我们还需要做2件事:
通过以上两点,系统就可以在用户登录时,自动判断要给用户展示哪些数据了! 3、用户-组织-岗位-角色-权限第三种权限体系又是在第二种权限体系上进行优化的,增加了用户与岗位的关联关系,示意图如下: 增加岗位有以下几点好处:
三、总结以上是基于RBAC模型的三种权限体系,不难看出,三种权限体系的本质都是用户和权限进行解耦,以达到权限的灵活运用。 在最后,也给大家留下两个小问题,大家有兴趣的话可以思考下并在评论区写出你的答案哦:
本文由 @没有昵称 原创发布于人人都是产品经理。 题图来自unsplash,基于CC0协议 |
|
来自: 张小龙net馆藏 > 《用户角色权限RBAC》