什么是rbac权限?开发基础需要了解-RBAC权限管理模型
什么是rbac权限?开发基础需要了解-RBAC权限管理模型解析:譬如我们做一款企业管理产品,如果按传统权限模型,给每一个用户赋予权限则会非常麻烦,并且做不到批量修改用户权限。这时候,可以抽象出几个角色,譬如销售经理、财务经理、市场经理等,然后把权限分配给这些角色,再把角色赋予用户。这样无论是分配权限还是以后的修改权限,只需要修改用户和角色的关系,或角色和权限的关系即可,更加灵活方便。此外,如果一个用户有多个角色,譬如王先生既负责销售部也负责市场部,那么可以给王先生赋予两个角色,即销售经理 市场经理,这样他就拥有这两个角色的所有权限。解析:RBAC0是基础,很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。举例:
作为软件开发,每一套系统都会涉及到权限模块,因此需要对软件权限管理模型有所了解,然后根据业务需求来考虑哪种权限设计,因为它涉及到设计的复杂度。
但在设计产品的用户和权限的关系的时候,很多产品经理可能按照感觉来,在并不清楚用户和权限是否存在优秀的理论模型的时候,就按照自我推理搭建了产品的用户和权限模型。而这种基于感觉和推理的模型肯定是有诸多问题的,譬如写死了关系导致权限不够灵活、考虑不周导致权限覆盖能力弱等等。
正如牛顿所言,站在巨人的肩膀上才能看得更远。我们不妨去参照已有的比较成熟的权限模型,如:RBAC(Role-Based Access Control)——基于角色的访问控制。我搜集了网上很多关于RBAC的资料,大多与如何用数据表实现RBCA相关,并不容易理解。所以,我会以产品经理的角度去解析RBAC模型,并分别举例如何运用这套已得到验证的成熟模型。
一、RBAC模型是什么?RBAC是一套成熟的权限模型。在传统权限模型中,我们直接把权限赋予用户。而在RBAC中,增加了“角色”的概念,我们首先把权限赋予角色,再把角色赋予用户。这样,由于增加了角色,授权会更加灵活方便。在RBAC中,根据权限的复杂程度,又可分为RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基础,RBAC1、RBAC2、RBAC3都是以RBAC0为基础的升级。我们可以根据自家产品权限的复杂程度,选取适合的权限模型。
二、基本模型RBAC0解析:
RBAC0是基础,很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。
举例:
譬如我们做一款企业管理产品,如果按传统权限模型,给每一个用户赋予权限则会非常麻烦,并且做不到批量修改用户权限。这时候,可以抽象出几个角色,譬如销售经理、财务经理、市场经理等,然后把权限分配给这些角色,再把角色赋予用户。这样无论是分配权限还是以后的修改权限,只需要修改用户和角色的关系,或角色和权限的关系即可,更加灵活方便。此外,如果一个用户有多个角色,譬如王先生既负责销售部也负责市场部,那么可以给王先生赋予两个角色,即销售经理 市场经理,这样他就拥有这两个角色的所有权限。
三、角色分层模型RBAC1解析:
RBAC1建立在RBAC0基础之上,在角色中引入了继承的概念。简单理解就是,给角色可以分成几个等级,每个等级权限不同,从而实现更细粒度的权限管理。
举例:
基于之前RBAC0的例子,我们又发现一个公司的销售经理可能是分几个等级的,譬如除了销售经理,还有销售副经理,而销售副经理只有销售经理的部分权限。这时候,我们就可以采用RBAC1的分级模型,把销售经理这个角色分成多个等级,给销售副经理赋予较低的等级即可。
四、角色限制模型RBAC2解析:
RBAC2同样建立在RBAC0基础之上,仅是对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类,即静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。具体限制如下图:
举例:
还是基于之前RBAC0的例子,我们又发现有些角色之间是需要互斥的,譬如给一个用户分配了销售经理的角色,就不能给他再赋予财务经理的角色了,否则他即可以录入合同又能自己审核合同;再譬如,有些公司对角色的升级十分看重,一个销售员要想升级到销售经理,必须先升级到销售主管,这时候就要采用先决条件限制了。
五、统一模型RBAC3解析:
RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分层,也包括可以增加各种限制。
举例:
这个就不举例了,统一模型RBAC3可以解决上面三个例子的所有问题。当然,只有在系统对权限要求非常复杂时,才考虑使用此权限模型。
六、基于RBAC的延展——用户组解析:
基于RBAC模型,还可以适当延展,使其更适合我们的产品。譬如增加用户组概念,直接给用户组分配角色,再把用户加入用户组。这样用户除了拥有自身的权限外,还拥有了所属用户组的所有权限。
数据模型部分:
数据模型
业务功能设计:
1)用户管理
权限基础数据管理主要针对RBAC模型中的实体进行维护,包括:
用户管理:包括用户的添加、编辑、设置有效期、分配上级、部门展示、删除等。
部门栏管理:实现基本业务部门的分类进行管理,把用户归类到不同的部门进行分组管理。
2)资源管理
主要对用户访问的资源菜单进行管理,主要包括:资源菜单的添加、修改、删除等操作,以及资源子元素按钮的操作权限等操作。资源菜单支持跨级变更、排序、增加备注信息等功能操作。
3)角色管理
系统的授权应实行严格的管理和业务权限的分离,针对操作员的不同层次进行权限隔离,每个层次可以授权的对象都不同,对其他不相关的信息无权访问。
4)参数管理
参数的管理包含数据字典和区域管理功能信息,对系统固定参数、可变参数、控制参数进行系统级维护。
5)日志管理
对系统的登录日志、操作日志等操作行为进行有效的跟踪记录,方便问题追踪和问题回溯。
最后,每一个系统需求不同,您可以根据自己的需求进行定制,不过原理弄懂了,就可以随机应变了。