基于角色的访问控制方法(Role-BasedAccessControl,简称RBAC)

基于角色的访问控制方法(Role-BasedAccessControl,简称RBAC)

基于角色的访问控制(RBAC)是目前公认的解决大型企业统一资源访问控制的有效方法。 其两个显着特点是:

1、降低授权管理的复杂度,降低管理开销;

2、灵活支持企业安全策略,对企业变化具有极大的扩展能力。

RBAC的基本思想

RBAC-0是基于角色的访问控制方法的最基本模型。 在原来的“用户-权限”结构中增加了“角色”的概念,成为“用户-角色-权限”结构。

对应的权限管理模块及功能如下:

用户管理

提供创建、编辑、启用、停用和删除用户帐户的功能。 基于电子邮件、手机号码或其他信息创建帐户的具体细节将根据各公司的实际情况确定。

角色管理

角色管理包括用户与角色的关联、角色与权限的关联管理。 主要包括以下功能:

1.角色创建、编辑、删除功能,

2.角色下添加和删除用户

3.角色权限配置功能

角色管理功能说明

在这种结构中,创建了不同的角色,并直接为角色分配权限。 用户只需关联角色即可获得该角色对应的权限。 这样做的好处是:

1、不需要为每个用户设置权限,只设置角色的权限。

2、当用户角色发生变化时角色权限设计,例如从销售转为产品,只需更改用户的角色,相应的权限就会发生变化。

除了RBAC-0之外,还有RBAC-1、RBAC-2、RBAC-3,将放在文章最后方便大家了解。 为避免影响文章逻辑,这里不再详述。

数据权限是功能权限的延伸

常见的权限要求有两种:功能权限和数据权限。

功能权限

1.菜单级权限:可见性

2.页面元素级别权限:可操作性

例如上例中DBAC-0的设计方案就属于功能权限。 对于一级菜单和二级菜单,如果没有权限,则不会显示菜单,即可见性; 权限详细信息,如果没有该权限,运行时会报错。 例如,点击时,toast提示“抱歉,您没有操作权限”,则表示该操作是可操作的。

数据许可

简单来说,数据权限就是可以使用功能,但看不到数据。 例如,用户A和B都具有查看销售记录功能的权限,但A有权查看公司所有者,而B只能看到自己的销售记录。 这就涉及到数据权限的控制。

涉及数据权限的权限管理需求会比简单的功能权限复杂,但数据权限依赖于功能权限,是功能权限的进一步描述,解释角色在指定功能点的数据控制权限。

角色数据权限管理

首先,有一个约定,为了降低开发成本,数据权限一般采取“未明确规定即视为有效”​​的原则。 如果没有定义某个函数的数据权限,则表示该角色拥有该函数的所有权限。 如果某个特性定义了某种类型的数据权限,则该用户仅对该类型下的指定数据拥有数据权限。

这与功能权限的设置正好相反。 函数权限只有在指定的情况下才具有权限。 如果不指定,将没有权限。

继续上面提到的设计方案,如果进一步明确需求背景:

张三、李四、王五是第一业务部。 公司共设有3个业务部,以及业务二部、业务三部。 肖红是业务一部经理,肖明是销售部总经理。 要求按照组织架构查看订单信息:业务员只能查看个人,业务经理可以查看自己业务部门的所有订单,总经理可以查看自己业务部门的所有订单信息。

首先明确数据权限、数据类型和数据对象两个概念。

数据类型是数据中的字段,数据对象是数据类型的值。

例如角色权限设计,部门A的人员无法看到部门B的数据。对于部门A的人员游戏策划,其数据权限的数据类型为“部门”,数据对象为A。

根据上述要求,设计方案进一步调整如下:

组织

首先要有一个组织结构数据库,用于权限控制。

组织结构图

角色管理-业务员

销售人员只能查看自己的数据。 为了方便起见,可以具体设置一个值作为个人标识。

销售员角色

角色管理-业务经理

创建业务1经理角色2d素材,设置数据权限类型部门为业务1,并指定该角色只能查看业务1的订单数据。

业务经理角色

角色管理-销售部总经理

创建销售部总经理角色,设置数据权限类型部门为销售事业部,并注明该角色只能查看销售事业部的订单数据。

销售经理角色

对于数据权限,可以根据需要设置多个数据类型字段,如部门、商户类型等,根据数据字段控制权限。

以上就是基于RBAC数据排序的权限管理功能的设计思路。 解决方案可能存在一些缺陷。 毕竟,这并不是一个真正已经实施的解决方案。 欢迎大家留言指正。 如果您有真实案例分享,也欢迎推荐。

依恋

添加 RBAC 的其他几个扩展

1.RBAC-1

RBAC1引入了角色之间的继承关系。 角色之间的继承关系可以分为一般继承关系和受限继承关系。 一般继承关系只要求角色继承关系是绝对偏序关系,允许角色之间多重继承。 受限继承关系还要求角色继承关系为树形结构。

2.RBAC-2

RBAC2模型中添加了职责分离关系。 RBAC2的约束规定了为角色分配权限、为用户分配角色以及用户在某一时刻激活角色时应遵循的强制规则。

职责分离包括静态职责分离和动态职责分离。

静态职责分离

1、互斥角色限制:同一用户只能选择两个互斥角色之一。

2、角色数量限制:一个用户拥有的角色数量是有限的,同样的权限也会受到限制。

3、角色顺序限制:用户想要拥有更高级别的角色,必须首先拥有对应的低级别角色。

动态职责分离

4、角色激活限制:例如,允许一个用户拥有两个角色,但运行时只能激活一个角色。

约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问权限。

3.RBAC-3

RBAC3包括RBAC1和RBAC2,它不仅提供了角色之间的继承关系,还提供了职责分离。

文章来源:https://www.jianshu.com/p/3ef4f6879d23