网站导航
您现在的位置:永乐国际主页 > 织带产品 > > 正文
基于RBAC模型的权限设计:如何设计系统权限体系
发表时间:2020-02-28 17:25

  RBAC目前使用最为广泛的权限模型,笔者通过平常工作及工作外的积累,整理了几种比较经典的权限体系,希望对大家有所帮助!

  RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念。取消了用户和权限的直接关联,改为通过用户关联角色、角色关联权限的方法来间接地赋予用户权限(如下图),从而达到用户和权限解耦的目的。

  如上图:对于左边的用户-角色对应,每个人只能同时拥有一种角色,但是同一个角色里边,可能会含有多个用户(如:李四和王麻子都是业务员);而右边的用户-角色对应,是在左边的基础上,增加了一个用户可拥有多种角色的情况(如:小马哥既是经理,也要负责财务的工作);

  我的是:尽量可能地使用多对多的权限体系。如果这个系统的功能比较单一、使用人员较少、岗位权限相对清晰且不会出现兼岗的情况,这种情况也可以考虑用多对一的权限体系。

  一般公司的业务管理系统,都有数据私密性的要求:哪些人可以看到哪些数据,哪些人不可以看到哪些数据。这个时候,我们就需要把这些东西也考虑到你的权限体系内了。

  假设上图是一家公司业务部门的组织架构图,公司要求你基于这个组织架构设计一个业务管理系统,并要求系统需要满足不同用户的数据私密性,比如:“张三”登录时,只能看到“张三”负责的数据;“张三”的领导登录时,能看到“团队A”的所有业务员负责的数据,但看不到其他团队业务员负责的数据等等。

  在这种情况下,上一种权限体系就不适用了,但我们可以对其进行一些小后,即可达到数据管控的目的,如下图:

  在“用户-角色-权限”的基础上,我们增加了用户与组织的关联关系,组织决定了用户的数据可视权限。但要想真正达到这个效果,我们还需要做2件事:

  。一个人可能身兼多职(多个角色),但是他的主要职能是固定的,那怎么告诉系统用户的主要职能是什么呢?答案就是:通过岗位!拿的小马哥举例:小马哥虽然身兼经理和财务两种身份,但他的本职工作是“经理”,因此,他的系统岗位应该“经理”。当他登录时,系统会识别他的身份为“经理”,只不过这个“经理”刚好兼具了其他岗位的职能而已;

  公司在不断地发展的过程中,系统的用户角色也会不断增加,当角色达到一定数量以后,管理员每新增一个用户都要花相当的时间去寻找角色。引入岗位后,可将组织和岗位、岗位和角色提前进行关联,配置账号时,管理员只要选定组织,系统就给出与该组织关联的岗位,而这些岗位,又是提前关联好角色的,选择起来,既方便又高效!

  以上是基于RBAC模型的三种权限体系,不难看出,三种权限体系的本质都是用户和权限进行解耦,以达到权限的灵活运用。

  RBAC模型中,个人理解其实还有一层,也就是权限的分类:操作权限,资源权限。权限的概念,指的是对某资源(比如页面,按钮,数据库中的某条(某些)数据)是否允许某操作,所以有两个层面的主体:资源与操作。回到最初的用户-权限模型,就是“某一个用户,对某一个资源,允许某一些操作”的集合。然后在这个基础上做分类和解耦

  楼主留的2个问题,我觉得是同一个问题。在不引入xx的情况下,实现数据的控制。有一个思,在用户级,直接设定其上级用户。

  非常感谢作者的分享!有时间也很想把自己在权限方面的一些拿出来跟大家交流,因为在权限管理很重要很重要很重要,开始没设计好,后面迭代起来非常的麻烦。

  1、第一个问题的本质应该是数据权限到底应该如何控制的问题?要给划分数据的范围,就必须给每一条数据打上一个可以用来划分的标识。那到底用什么来做标识,要根据数据划分的需求来分析。文中提到的数据私密性的要求,就很容易让人想到用组织架构。因为每一条数据都是由用户创建的,用户又一定属于某一个组织节点,那数据肯定就一定会有组织节点。有没有应用场景是不需要根据组织架构来划分数据权限的呢?当然有,例如商业地产。数据的管理需求是根据项目来划分的,那就需要我们在做产品设计的时候就考虑到,每一条数据的产生一定是属于某一个项目的。那这时候,就可以根据项目这个标识来划分数据权限的范围。

  2、第二个问题就简单一些,我们首先确认每个用户可以查看哪些组织节点的数据,再加一层控制,可以查看这个节点下面自建的数据还是全部的数据就好了。

  您好,我是做公寓租赁管理系统的,和您比较像,想请教您一个问题。数据权限的确是根据项目(或者楼栋)来划分的,但系统不同模块的数据是有公私之分的,例如:

  1.客户管理模块,同项目的两个招商人员各自只能看到自己的客户,而招商主管可以看到项目的所有客户,如何在后台配置呢?

  2.房源&合同管理模块,同项目的两个运营人员都可以看到该项目的所有房源和合同,但是只能编辑和修改自己录入的合同,这个要怎么配置呢?

  2:RABC模型的解释是 基于角色的权限控制,所以我们可以在角色这里思考。建立角色组和父子角色概念,对于一个团队而言,每个有一个或多个角色,把每个的角色归属到一个角色组里面,在把角色组给团队leader,leader就拥有整个团队的权限。应为作者说 了这里是团队的 leader和团队是属于同级组织里面。当我们的组织结构树往上走的时候,当为这个管理几个团队的领导奉陪权限的时候,我们就可以引入父子角色概念。

  “比如:上级组织职能看到下级组织员工负责的数据,而不能看到其他平级组织及其下级组织的员工数据等。”这一句的后半句是不是应该为“及其上级组织员工” ?

  我做的也是RBAC的改进,不过我设计的是将权限分为操作权限和资源权限,操作权限的集合即为角色,资源权限的集合为职位,角色表示了该角色的用户所能进行的操作,职位表示该用户所能操作的资源,职位相当于每一个权限所对应的资源列表。

  问题一:权限在定向图中从上向动,上级角色为父角色,下级角色为子角色,权限由父角色为子角色分配。相同角色的用户拥有不同职位,实现数据私密性。

  问题二:我觉得组织机构和权限系统是分开的,因为父子角色已经可以实现子角色的权限是父角色的子集,同时还能实现当有多个上级时,每个上级的权限都只能看到自己能管理的数据,无法看到子角色所有数据。

  关于问题一,我有个问题:你这边的A区域内容和B区域内容是静态的还是动态的?且他们的规则是怎样的?

  关于问题二,可能我没有表达清楚:假设“王小二”是团队A的leader,那么在他与“张三”在同一组织的前提下,你如何为他们设置规则,使“王小二”可以看到团队A的数据,但“张三”只能看到自己的数据;

  人人都是产品经理(是以产品经理、运营为核心的学习、交流、分享平台,集、培训、社群为一体,全方位服务产品人和运营人,成立9年举办在线+期,线+场,产品经理大会、运营大会20+场,覆盖北上广深杭成都等15个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里与你一起成长。