当前位置:   article > 正文

一种基于RBAC的软件系统权限管理设计_rabc

rabc

1 权限管理介绍

简介:在软件系统的中的权限管理,指的是用户能否具有访问系统、系统资源的资格。在软件系统中主要通过管理员将某些资源的访问、管理、操作等权限赋予用户,达到管理和使用的目的。譬如主机的访问使用权限,某项功能菜单的使用权限亦或是某个数据的读写权限。

1.1 权限管理分级

软件系统中,我们通常将权限关联分为三级
(1)一级权限:访问权限
(2)二级权限:菜单、按钮权限
(3)三级权限:数据权限
依据不同等级的授权,来控制授权的最小的颗粒度。
在这里插入图片描述

1.2 常用的权限模型

模型 | 简介
-------- | ----- | :-----
ACL(Access Control Lists)| 访问控制列表,包含用户(User)、资源(Resource)、资源操作(Operation)三个关键要素。
RBAC(Role-Based Access Control ),基于角色的权限控制 |把用户按角色进行归类,通过用户的角色来确定用户能否针对某项资源进行某项操作。RBAC相对于ACL最大的优势就是它简化了用户与权限的管理,通过对用户进行分类,使得角色与权限关联起来,而用户与权限变成了间接关联。
ABAC(Attribute-Based Access Control) | 基于属性的权限控制,是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性,所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求.。

2 RBAC

2.1 RBAC简介

  早期计算机应用中权限由用户和资源组成
在这里插入图片描述
  在此形态下,当有多个用户需要配置同样的资源权限时,同样的操作,会多次进行,十分繁琐,且后期维护成本极大。

  在20世纪90年代期间,大量的专家学者和专门研究单位对RBAC的概念进行了深入研究,先后提出了许多类型的RBAC模型,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有系统性,得到普遍的公认。
  RBAC认为权限的过程可以抽象概括为:判断【Who是否可以对What进行How的访问操作(Operator)】这个逻辑表达式的值是否为True的求解过程。
RBAC96是一个模型族,其中包括RBAC0~RBAC3四个概念性模型。

2.1.1 RBAC0

  定义了完全支持RBAC概念的任何系统的最低需求,由用户、角色、资源(权限三部分组成)。
在这里插入图片描述

2.1.2 RBAC1

  RBAC1在RBAC0的基础上,添加了角色集成的概念,当用户拥有某一角色权限时同时也会拥有该角色下级角色权限。
在这里插入图片描述
如上图,给用户张三配置了角色配置了角色A后,用户张三就拥有所有的资源权限。

2.1.3 RBAC2

  RBAC2建立在RBAC0基础之上,对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类,即静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)

  • 静态职责分离SSD
  1. 互斥角色限制:同一个用户在两个互斥角色中只能选择一个;
  2. 基数限制:一个用户拥有的角色是有限的,一个角色拥有的权限也是有限的;
  3. 先决条件限制:用户想要获得更高级的角色,首先必须拥有低级角色 。
  • 动态职责分离DSD
    动态的限制用户及其拥有的角色,如一个用户可以拥有两个角色,但是运行时只能激活一个角色。

2.1.4 RBAC3

  RBAC3称为统一模型,它包含了RBAC1和RBAC2,利用传递性,也把RBAC0包括在内。这些模型构成了RBAC96模型族。
在这里插入图片描述

3 RBAC在业务系统中的应用

3.1 用户划分

  在我们的业务系统中,用户、用户职务、用户所在部门(组织)是重要的组成的部分,我们系统的数据层面的权限都是基于此去判定的。

3.1.1 基于组织

  基于组织做用户数据权限,此时我们只需基于RBAC模型,将系统角色挂载到组织下即可。
在这里插入图片描述
  这种情况下,可以解决如下问题:当各部门成员均具有同一特殊职能时,只需在部门处配置系统资源权限,该部门全部成员便拥有了配置在该部门上的权限资源,且在后期用户转部门时,无需对用户进行额外配置便可轻松完成用户权限切换。

3.1.2 基于职务

   基于职务做用户数据权限,此时我们只需基于RBAC模型,将系统角色结合组织挂载到职务下即可。
在这里插入图片描述
   上述为一种情景,即一个组织上存在多职务,将资源权限分配在了职务上,通过组织上职务的变化来实现用户角色权限的控制。
在这里插入图片描述
   以上为另一种情景,职务与组织有关联,但关联的关系不仅仅局限于组织与职务的单个关联关系,同一职务可与多个组织关联,以达到对组织(组织内人)的动态管理。

3.1.3 基于用户组

  基于用户组做用户数据权限,此时我们只需基于RBAC模型,将系统角色挂载到用户组下即可(当然也可引入组织进来)。在这里插入图片描述

  • 可能会有这样的疑问,为什么有了角色还需要用户组(职务)?
      用户组对标的是用户而不是角色,用户组的作用是对用户做一个归类,可以更加方便地授权而已。而角色的作用是对权限进行归类。譬如你要对多个角色授权,并且这些角色成员存在交集。那么先把这些共同的用户添加到一个用户组,再在角色成员里面添加用户组,总的添加操作次数是m+n,而直接添加用户则是m*n次。

3.2 基于RBAC模型的一种权限设计

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/867498
推荐阅读
相关标签
  

闽ICP备14008679号