如何选择合适的RBAC模型搭建权限系统

Posted Randyjun说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何选择合适的RBAC模型搭建权限系统相关的知识,希望对你有一定的参考价值。

关于权限管理的搭建已经有很多相关的文章,也有很多不同的规划思路。既然已经有成熟的理论我们就可以借鉴,并选择合适的模型应用到自己的实际业务中。而关于权限管理的模型运用最多的非RBAC模型莫属。

 

而普通的用户权限模型是直接将权限分配给用户,这样做好处是适合用户少以及权限简单易于区分的场景。而面对用户量大、且角色间有强关系、权限复杂繁多来说普通的用户权限模型已经无法满足。所以有了RBAC模型。

 

什么是RBAC模型呢?

RBACRole-Based Access Control )是基于角色的访问控制。简单粗暴的理解就是将系统的权限分配给角色,再将角色分配给用户。但是根据系统功能的特性、权限的复杂程度、角色层级关系还会有RBAC0RBAC1RBAC2RBAC3

其中RBAC0是基础的RBAC模型、RBAC12是对RBAC0的升级版,而RBAC3是基于RBAC0的基础上对RBAC12的整合。

我们可以通过以下四象限简单区分:

通过权限_角色适用模型四象限我们可以清晰的找到对应模型适用在什么场景,根据复杂程度和强弱关系我们可以分为:

象限一:权限之间相关性很强且角色具有强关系特征的产品,适用RBAC3模型

象限二:权限之间相关性很强且角色具有弱关系特征的产品,适用RBAC2模型

象限三:权限之间相关性弱且角色具有弱关系特征的产品,适用RBAC0模型或普通模型

象限四:权限之间相关性弱且角色具有强关系特征的产品,适用RBAC1模型

 

一、普通用户_权限模型

在这4个模型之前我们必须了解,最常见的权限管理后台包括3个必要元素:用户、权限、操作。如下图所示,即我们普通用户_权限模型:

如何选择合适的RBAC模型搭建权限系统

而这种普通的权限模型适用的后台场景往往是权限弱相关且角色具有弱关系,对于产品后台使用者较少、且没有特别严谨的职责划分时候,我们不妨用这种模型,更加有利于提升效率。

例如,一个简单的数据统计平台,功能上仅有的是对数据的敏感度以及导出相关的数据报表。这个平台相对来说功能单一,且不存在多角色的关系。因此用普通的模型即可。

 

二、RBAC0模型

如何选择合适的RBAC模型搭建权限系统

RBAC0是基础的RBAC模型,就是将系统的权限分配给角色,再将角色分配给用户。在上述关系象限中适合权限弱相关且角色具有弱关系的第三象限,但是为什么我们不用普通的而是用这种多了个角色的呢?

因为很多后台场景是这样的:

1.后台使用者角色有职责区分,给财务、运营、市场等部门账号,让他们能够操作后台;

2.每个角色的权限不一样,对应财务部门开放数据报表权限,给运营部门设置广告投放权限等等;

我们注意到上述场景的角色依然是弱关系因为相互之间没有直接的关联,可能N个角色拥有同样的权限,只是因为角色名字不一样。而权限之间也不存在相关性,可以给角色随意设置权限、设置多个权限等。

后台角色列表原型大概是这样的:

如何选择合适的RBAC模型搭建权限系统

 

三、RBAC1模型

RBAC1模型和RBAC0差不多,在权限的设计上并没有区别,反而在角色的设计增加了角色之间的上下级关系。

如何选择合适的RBAC模型搭建权限系统

既然角色具有上下级关系,那么对应的权限就应当具有包含关系,打个比方,你的拥有编辑站内信的基本权限,而你的上级拥有编辑并且具有发送的权限。这就说明上一级的角色的权限包含了下级角色的所有权限(当然这是同一部门/同一范围的)

举例说明:而在上述关系象限中具有权限之间相关性弱且角色具有强关系特征的后台产

中,我们以简单的客服权限系统来看,通常会设置一级客服主管,二级客服小姐姐001、客服小姐姐002等等。

那么他们之间的关系如下图:

如何选择合适的RBAC模型搭建权限系统

 

四、RBAC2模型

如何选择合适的RBAC模型搭建权限系统

RBAC2,基于RBAC0模型的基础上,进行了角色的访问控制。RBAC2模型在上述关系象限中具有权限之间强相关性而角色具有弱关系特征的!

RBAC2模型中添加了责任分离关系。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。

动态责任分离指的是,用户在操作运行时存在互斥性,只能使用一个角色的权限而不能同时使用2个角色的权限。比如一个用户有AB两个角色,但是角色A有权限进入统计系统,而B角色没有。这个时候就要设计用户是有权限还是没有权限,所以在程序上需要进行判断用户的权限,而在产品上只需要判断用户有没有权限即可。

静态责任分离指的是,互斥角色、基数约束和先决条件角色这3种情况。

1.互斥角色 :同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。互斥角色是指各自权限互相制约的两个角色。对于这类角色一个用户在某一次活动中只能被分配其中的一个角色,不能同时获得两个角色的使用权。常举的例子:在审计活动中,一个角色不能同时被指派给会计角色和审计员角色。

2.基数约束 :一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;同样一个角色对应的访问权限数目也应受限,以控制高级权限在系统中的分配。例如公司的领导人有限的;

3.先决条件角色 :可以分配角色给用户仅当该用户已经是另一角色的成员;对应的可以分配访问权限给角色,仅当该角色已经拥有另一种访问权限。指要想获得较高的权限,要首先拥有低一级的权限。就像我们生活中,学会会部长是从学生会干事中选出来一样。

 

五、RBAC3模型

如何选择合适的RBAC模型搭建权限系统

RBAC3,就是最全面的权限管理模型,它是建立在RBAC0的基础上将RBAC12整合起来。相对复杂,因此RBAC3模型在上述关系象限中具有强权限和强角色关系的特征,一般会运用在一些大型的安全系统、银行风控等高级系统。


另外补充下用户构成用户组:

在用户组构建的时候,如果有需要我们可以运用到每一个模型中(普通用户、RBAC0-3)。

比如我们通常的CEO为顶端,各个部门的总监,经理等等组织架构的分组。

 

喜欢的话,点个赞呗! 


以上是关于如何选择合适的RBAC模型搭建权限系统的主要内容,如果未能解决你的问题,请参考以下文章

RBAC权限系统分析设计与实现

权限系统与RBAC模型概述[绝对经典]

权限系统与RBAC模型概述[绝对经典]

转:RBAC如何设计一个权限系统

权限系统与RBAC模型概述[绝对经典]

你知道权限管理的RBAC模型吗?