一、RBAC 是什么

在学习DCloud官方的uni-id规范时,看到其描述中说到:支持rbac权限角色体系。
遂对RBAC进行了基本的了解,在此记录分享。

RBAC(Role-Based Access Control )及基于角色的访问控制的设计模型。

知道了中文名称感觉就很好理解了,跟我以往做的系统中的权限管理一个思路。

就是具体的操作权限和角色关联(角色和用户往往都是一对多的),用户在关联到具体的角色,这样就可以很方便的进行权限管理了。

java 权限管理设计 rbac权限管理设计_权限管理

以前只知道开发上这么来做,原来别人有个高大上的名字 RBAC

二、RBAC 规范

权限在日常系统中是一个比较基本且重要的功能,可以管理用可以做哪些操作,不可以做哪些操作。

RBAC其基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。

这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理操作。

java 权限管理设计 rbac权限管理设计_Access_02


java 权限管理设计 rbac权限管理设计_RBAC_03

RBAC 中对权限的管理主要是明确:
谁(具体用户)可以对具体内容(功能模块)进行具体操作(具体接口)。

三、RBAC 细分

除了RBAC还可以分为具体的:RBAC0、RBAC1、RBAC2、RBAC3。

RBAC0

RBAC0是RBAC的核心思想,引入了角色的思想解决了用户与权限之间的分离问题。

  • 比如,我们根据公司部门可以设置销售角色、客服角色,并授予相应的权限。

RBAC1

RBAC1是在RBAC0的基础上引入了角色分层模型,及对单个角色还可以进行更细化的等级划分。
* 比如,我们的销售角色下面还可以细分为销售经理、销售副经理、普通销售、见习销售。
* 一般细化的角色只包含上级角色的部分权限。

RBAC2

RBAC2 是在RBAC0的基础上引入了约束模块,及对角色的授予及使用上的一些限制。
* 静态职责限制:限制用户角色的授予。
* 动态职责限制:限制当前使用的角色 。

RBAC3

RBAC3 是RBAC1和RBAC2的合集,所以RBAC3既有角色分层,也包括可以增加各种限制。
* 一般在一些中大型的项目中使用。