RBAC-基于角色权限的模型

本文介绍了RBAC权限模型,包括用户与角色的关系、不同类型的RBAC(如RBAC0、RBAC1、RBAC2、RBAC3),以及如何通过用户组进行权限扩展。重点阐述了角色继承、权限限制和群体授权的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在开发一个系统的时候,或多或少都会涉及到用户权限的问题。例如在企业系统中,不同部门、不同职位的人所拥有的权限是不同的,同样在收费产品里面,付费用户和免费用户权限也不一样。

之前在设计用户和权限的关系时,我们都是凭感觉设计的,但牛顿曾说:站在巨人的肩膀上,会让我们看的更远。所以我们在设计时不妨参考目前比较成熟的权限控制模型 ---- RBAC(Role-Based Access Control)权限模型。

RBAC模型表结构示例
在这里插入图片描述

接下来,本文就对 RBAC 权限模型做一个简单介绍。

什么是 RBAC 模型

RBAC(Role-Based Access Control),即基于角色的权限控制。通过用户关联角色,角色关联权限的方式间接赋予用户权限。

在这里插入图片描述
有人会问为什么不直接将权限赋值给用户,中间要增加角色这一环节?

其实是可以直接为用户分配权限的,但是这样就少了一层关系,扩展性弱了很多,适合哪些用户数量、角色类型少的平台。

一般的系统中,都会存在多个用户拥有相同权限的情况,在分配的时候,就需要分别给不同的用户指定权限,后续权限更新也是个麻烦事儿。而使用角色,我们只需修改角色对应的权限,然后将相同权限的用户指定为同一个角色即可,大幅提升了权限调整的效率。

RBAC 模型的分类

RBAC 模型可以分为:RBAC0、RBAC1、RBAC2、RBAC3 这四类。其中 RBAC0 是基础,也是最简单的,相当于底层逻辑,RBAC1、RBAC2、RBAC3都是基于 RBAC0 的升级。

一般产品,只需基于 RBAC0 就可以满足权限管理系统的设计了。

RBAC0

最简单的用户、角色、权限控制模型。具体来说可以分为下面两种:

  • 用户与角色是一对多的关系:即一个用户对应一个角色,一个角色可对应多个用户。
  • 用户与角色是多对多的关系:即一个用户可对应多个角色,一个角色也可以对应多个用户。

在这里插入图片描述
举例:
例如一批校招员工刚入公司,可以统一分配临时员工角色,当培训结束通过考核后,批量修改为正式员工的角色。

RBAC1

与 RBAC0 相比,增加了子角色,引入了继承的概念,即子角色可以继承父角色的所有权限。简单理解就是给角色分几个等级,每个等级权限不同(不超出父角色的权限范围),从而实现更细度的权限管理。

在这里插入图片描述
举例:
例如工程师的角色,有一级工程师、二级工程师等等,每个级别的工程师所拥有的权限是不同的,所以我们就可以将工程师这个角色分等级,根据其级别分配。

RBAC2

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

静态职责分离:

  1. 角色互斥:同一用户不能分配到两个互斥角色中。互斥角色是指权限相互制约的两个角色。例如:财务系统中一个用户不能同时拥有会计角色和审计员角色。
  2. 基数约束:一个用户拥有的角色数量是有限的,一个角色拥有的权限数量也是有限制的。例如:一个角色专门为保密人员创建的,那这个角色的数量时有限的。
  3. 先决条件限制:用户想要获得较高的权限,必须先拥有低一级的权限。例如:先拥有副总经理权限,才能有总经理权限。

动态职责分离:

  1. 运行时互斥:允许一个用户具有两个角色,但运行时只能激活其中一个角色。

RBAC3

RBAC3 也称为统一模型,它包含了 RBAC1 和 RBAC2 的所有特性,这里就不多赘述了。

在这里插入图片描述

基于RBAC的延展——用户组

基于RBAC模型,还可以适当延展,使其更适合我们的产品。例如增加用户组概念,直接给用户组分配角色,再把用户加入用户组。这样用户除了拥有自身的权限外,还拥有了所属用户组的所有权限。

用户组概念可以很方便的给群体用户授权,且不影响用户原有的权限。

在这里插入图片描述

举例:
例如,我们可以把一个部门看做一个用户组,然后给部门赋予角色,这样就有了部门权限,这个部门下面的所有员工就都拥有了部门权限。


感谢大家读到这里,后续还会有其他相关文章,欢迎继续阅读。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值