当前位置:首页 > > 架构师社区
[导读]本文要和大家聊聊一个非常流行的权限管理模型,那就是 RBAC。

前面和大家说了 ACL,讲了理论,也给了一个完整的案例,相信小伙伴们对于 ACL 权限控制模型都已经比较了解了。

本文我要和大家聊一聊另外一个非常流行的权限管理模型,那就是 RBAC。

1.RBAC 简介

RBAC(Role-based access control)是一种以角色为基础的访问控制(Role-based access control,RBAC),它是一种较新且广为使用的权限控制机制,这种机制不是直接给用户赋予权限,而是将权限赋予角色。

RBAC 权限模型将用户按角色进行归类,通过用户的角色来确定用户对某项资源是否具备操作权限。RBAC 简化了用户与权限的管理,它将用户与角色关联、角色与权限关联、权限与资源关联,这种模式使得用户的授权管理变得非常简单和易于维护。

2.RBAC 的提出

权限、角色这些东西,在早期 1970 年代的商业计算机程序中就可以找到相关的应用,但是早期的程序相对简单,而且并不存在一个明确的、通用的、公认的权限管理模型。

Ferraiolo 和 Kuhn 两位大佬于 1992 年提出了一种基于通用角色的访问控制模型(看来这个模型比松哥年龄还大),首次提出了 RBAC 权限模型用来代替传统的 MAC 和 DAC 两种权限控制方案,并且就 RBAC 中的相关概念给出了解释。

Ferraiolo,Cugini 和 Kuhn 于 1995 年扩展了 1992 年提出的权限模型。该模型的主要功能是所有访问都是通过角色进行的,而角色本质上是权限的集合,并且所有用户只能通过角色获得权限。在组织内,角色相对稳定,而用户和权限都很多,并且可能会迅速变化。因此,通过角色控制权限可以简化访问控制的管理和检查。

到了 1996 年,Sandhu,Coyne,Feinstein 和 Youman 正式提出了 RBAC 模型,该模型以模块化方式细化了 RBAC,并提出了基于该理论的 RBAC0-RBAC3 四种不同模型。

今天,大多数信息技术供应商已将 RBAC 纳入其产品线,除了常规的企业级应用,RBAC 也广泛应用在医疗、国防等领域。

目前网上关于 RBAC 理论性的东西松哥只找到英文的,感兴趣的小伙伴可以看下,地址是:

  • https://csrc.nist.gov/projects/Role-Based-Access-Control

如果小伙伴们有中文的资料链接,欢迎留言说明。

3.RBAC 三原则

  1. 最小权限:给角色配置的权限是其完成任务所需要的最小权限集合。
  2. 责任分离:通过相互独立互斥的角色来共同完成任务。
  3. 数据抽象:通过权限的抽象来体现,RBAC 支持的数据抽象程度与 RBAC 的实现细节有关。

4.RBAC 模型分类

说到 RBAC,我们就得从它的模型分类开始看起。

4.1 RBAC0

RBAC0 是最简单的用户、角色、权限模型。RBAC0 是 RBAC 权限模型中最核心的一部分,后面其他模型都是在此基础上建立。

Spring Security中最流行的权限管理模型 图片源自网络

在 RBAC0 中,一个用户可以具备多个角色,一个角色可以具备多个权限,最终用户所具备的权限是用户所具备的角色的权限并集。

4.2 RBAC1

RBAC1 则是在 RABC0 的基础上引入了角色继承,让角色有了上下级关系。

Spring Security中最流行的权限管理模型 图片源自网络

在本系列前面的文章中,松哥也曾多次向大家介绍过 Spring Security 中的角色继承。

4.3 RBAC2

RBAC2 也是在 RBAC0 的基础上进行扩展,引入了静态职责分离和动态职责分离。

Spring Security中最流行的权限管理模型 图片源自网络

要理解职责分离,我们得先明白角色互斥。

在实际项目中,有一些角色是互斥的,对立的,例如财务这个角色一般是不能和其他角色兼任的,否则自己报账自己审批,岂不是爽歪歪!

通过职责分离可以解决这个问题:

静态职责分离

在设置阶段就做好了限制。比如同一用户不能授予互斥的角色,用户只能有有限个角色,用户获得高级权限之前要有低级权限等等。

动态职责分离

在运行阶段进行限制。比如运行时同一用户下5个角色中只能同时有2个角色激活等等。

4.4 RBAC3

将 RBAC1 和 RBAC2 结合起来,就形成了 RBAC3。

Spring Security中最流行的权限管理模型 图片源自网络

5.扩展

我们日常见到的很多权限模型都是在 RBAC 的基础上扩展出来的。

例如在有的系统中我们可以见到用户组的概念,就是将用户分组,用户同时具备自身的角色以及分组的角色。

6.小结

好啦,今天就和小伙伴们简单介绍下 RBAC 权限模型。其实 RBAC 只要把权限模型搞清楚了,技术上来说,基本上没啥问题。如果你把松哥 vhr 中涉及到的 Spring Security 技术搞懂了,结合今天的文章,用 Spring Security 实现 RBAC 完全不成问题~当然,我后面也抽空给大家整一个 RBAC 的 DEMO。


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭