一、什么是RBAC模型

RBAC是Role-Based Access Control的缩写,意为:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。

如下图:

为什么不直接给用户分配权限,还多此一举的增加角色这一环节呢?

其实是可以直接给用户分配权限,只是直接给用户分配权限,少了一层关系,扩展性弱了许多,适合那些用户数量、角色类型少的平台。

对于通常的系统,比如:存在多个用户拥有相同的权限,在分配的时候就要分别为这几个用户指定相同的权限,修改时也要为这几个用户的权限进行一一修改。有了角色后,我们只需要为该角色制定好权限后,将相同权限的用户都指定为同一个角色即可,便于权限管理。

对于批量的用户权限调整,只需调整用户关联的角色权限,无需对每一个用户都进行权限调整,既大幅提升权限调整的效率,又降低了漏调权限的概率。

二、RBAC模型的分类

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

一般情况下,使用RBAC0模型就可以满足常规的权限管理系统设计了。

2.1 RBAC0模型

最简单的用户、角色、权限模型。这里面又包含了2种:

  1. 用户和角色是多对一关系,即:一个用户只充当一种角色,一种角色可以有多个用户担当。
  2. 用户和角色是多对多关系,即:一个用户可同时充当多种角色,一种角色可以有多个用户担当。

那么,什么时候该使用多对一的权限体系,什么时候又该使用多对多的权限体系呢?

如果系统功能比较单一,使用人员较少,岗位权限相对清晰且确保不会出现兼岗的情况,此时可以考虑用多对一的权限体系。其余情况尽量使用多对多的权限体系,保证系统的可扩展性。如:张三既是行政,也负责财务工作,那张三就同时拥有行政和财务两个角色的权限。

2.2 RBAC1模型

相对于RBAC0模型,增加了子角色,引入了继承概念,即子角色可以继承父角色的所有权限。

使用场景:如某个业务部门,有经理、主管、专员。主管的权限不能大于经理,专员的权限不能大于主管,如果采用RBAC0模型做权限系统,极可能出现分配权限失误,最终出现主管拥有经理都没有的权限的情况。

而RBAC1模型就很好解决了这个问题,创建完经理角色并配置好权限后,主管角色的权限继承经理角色的权限,并且支持在经理权限上删减主管权限。

2.3 RBAC2模型

基于RBAC0模型,增加了对角色的一些限制:角色互斥、基数约束、先决条件角色等。

  • 角色互斥:同一用户不能分配到一组互斥角色集合中的多个角色,互斥角色是指权限互相制约的两个角色。案例:财务系统中一个用户不能同时被指派给会计角色和审计员角色。
  • 基数约束:一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。例如:一个角色专门为公司CEO创建的,那这个角色的数量是有限的。
  • 先决条件角色:指要想获得较高的权限,要首先拥有低一级的权限。例如:先有副总经理权限,才能有总经理权限。
  • 运行时互斥:例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色。

2.4 RBAC3模型

称为统一模型,它包含了RBAC1和RBAC2,利用传递性,也把RBAC0包括在内,综合了RBAC0、RBAC1和RBAC2的所有特点。


这里结合我的见解,简单的描述下。

RBAC0:是RBAC的核心思想。

RBAC1:是把RBAC的角色分层模型。

RBAC2:增加了RBAC的约束模型。

RBAC3:其实是RBAC2 + RBAC1。

三、怎么利用RBAC模型来进行权限体系的设计?

我们已经知道什么是RBAC模型了,在分析怎么来根据此模型来设计权限体系之前,我们再把这个模型要素进行拆分一下。

首先是:用户、角色、权限

而权限,具体到某个软件来说,实际上包含两个方面。一个是菜单权限,另一个是数据权限。

不同的行业会有不同的使用场景,用户角色权限模型也会有不同程度上的变化。

可以看看这个文章,有相关数据表的设计 :设计一个权限系统-RBAC - 简书 (jianshu.com)

四、看看ABAC,畅想下未来的权限模式

至此,我们可以了解到:RBAC模型实际上能解决大部分的权限设计问题了。

那么,ABAC到底是什么呢?它存在的意义在哪里?关于未来的权限设计趋势,它能带给我们什么启发呢?

带着这些问题,我们先来看看到底什么是ABAC模型。

ABAC,Attribute-based Access Control. 基于属性的访问控制。而属性,总的来说有三类:用户属性、系统或应用被访问属性(数据和操作)、环境属性。

也就是说,系统根据一组或多组属性是否满足预设规则来动态的控制,谁可以访问哪些功能数据和操作。RBAC模型,其实可以看成是静态的、单组属性的ABAC模型。

用例子来理解这个模型就是:只有当用户角色为Admin,在工作时间内,且处在C栋大楼B实验室,才可以访问D文件。

实际上,ABAC是个可以以最细颗粒度来管理权限的模型。它可以让设计者,利用任何一个用户属性、环境属性,或者多个属性之间的交集、并集等来组合出动态的权限判断逻辑。

ABAC 复杂场景下访问控制解决之道。

RBAC和ABAC的区别

RBAC与ABAC之间的主要区别在于方法授予访问权限的方式。 RBAC按照角色授予访问权限,ABAC可以根据用户特征,对象特征,操作类型等属性确定访问权限。

RBAC优缺点:

优点:

RBAC 模型构建起来更加简单,对于中小型组织,维护角色和授权关系的工作量不大,反而定制各种策略相对麻烦,更容易接受RBAC授权模型。

缺点:

对于大型组织,基于RBCA的控制模型需要维护大量的角色和授权关系,且无法做到对资源细粒度地授权。

ABAC优缺点:

优点:

对于大型组织,基于RBCA的控制模型需要维护大量的角色和授权关系,相比而言,ABAC更加灵活。
新增资源时,ABAC仅需要维护较少的资源,而RBAC需要维护所有相关的角色,ABAC可扩展性更强、更方便。
ABAC 有更加细粒度控制和根据上下文动态执行,RBAC只能基于静态的参数进行判断。

缺点

模型构建相对比较复杂。

参考文献

  • 什么是基于角色的访问控制 (RBAC)?示例、优势等:What is Role-Based Access Control (RBAC)? Examples, Benefits, and More | UpGuardThis is a complete overview of role-based access control (RBAC). Learn about common uses of RBAC, why it is used, and its benefits in this in post.https://www.upguard.com/blog/rbac
  • 访问控制的组件是什么?(DAC,MAC,RBAC,ABAC):What is Access Control? The Essential Cybersecurity Practice | UpGuardhttps://www.upguard.com/blog/access-control
  • 基于属性的访问控制 (ABAC):What is Attribute-Based Access Control (ABAC)? - Definition from Techopediahttps://www.techopedia.com/definition/29706/attribute-based-access-control-abac
  • ABAC - 基于属性的访问控制 - 复杂场景下访问控制解决之道_Yuchen_HAARP的博客-CSDN博客_基于属性的访问控制https://blog.csdn.net/XiaoBeiTu/article/details/100773968

零信任架构_PolarDay.的博客-CSDN博客_零信任架构物理边界曾经是可信网络和不可信网络之间的有效分割,防火墙通常位于网络的边缘,基于静态策略来控制网络流量。位于防火墙内部的用户会被授予高信任等级来访问企业的敏感资源,因为他们被默认是可信的。但随着业务迁移到云端,APT攻击的泛滥,以及移动办公的趋势,传统的安全边界变的模糊,既然网络和威胁已经发生了变化,我们的防御模型也要跟着变化。零信任是一种安全模型。首先我们要抛弃传统的边界观念,不再依据用户所处的网络位置而决定这个人是否可信。取而代之的是我们对每个请求都进行严格验证信任建立起来之前,网络上的任何资源都是https://blog.csdn.net/shn111/article/details/125195071

权限设计,设计模型分析(DAC,MAC,RBAC,ABAC) 之 RBAC相关推荐

  1. 访问控制模型总结(DAC MAC RBAC ABAC)

    访问控制模型 在项目中需要加入访问空值,于是对访问控制模型多了一些调研,介绍一些常见的访问控制模型. 访问控制模型三要素 主体(Subject) 指主动对其它实体施加动作的实体 客体 (Object) ...

  2. 访问控制模型(DAC,MAC,RBAC,ABAC)

    访问控制模型 项目中需要加入访问控制,对访问控制模型做了一些调研, 本文主要是介绍一些常用的访问控制模型. 基本要素 访问控制模型包括三个要素,即: 主体(Subject) 指主动对其它实体施加动作的 ...

  3. 【设计权限系统】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景

    [权限系统设计]ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景 ACL 访问控制列表 规定资源可以被哪些主体进行哪些操作 场景:部门隔离 适用资源:客户页面.人事页面 在ACL权 ...

  4. 用户角色及权限管理设计实例(基于RBAC模型)

    文章目录 1. 五张表模型 2. 需求分析 3. 数据库设计 4. 用户分组 5. 权限分类 6. 参考 1. 五张表模型 RBAC(Role-Based Access Control),基于角色的访 ...

  5. 大型门户网站的RBAC用户权限管理设计

    这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百度.阿里巴巴.淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组.角色组.权限组.操作 ...

  6. 电商平台-RBAC系统权限的设计与架构

    说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想 ...

  7. RBAC权限管理设计思想

    RBAC权限管理设计 一.概述 二.权限模型 三.RBAC模型 什么是RBAC模型 基本模型RBAC0 角色分层模型RBAC1 角色限制模型RBAC2 统一模型RBAC3 基于RBAC的延展--用户组 ...

  8. RBAC、控制权限设计、权限表设计 基于角色权限控制和基于资源权限控制的区别优劣

    RBAC.控制权限设计.权限表设计 基于角色权限控制和基于资源权限控制的区别优劣 一.介绍 二.基于角色的权限设计 三.基于资源的权限设计 四.主体.资源.权限关系图 主体.资源.权限相关的数据模型 ...

  9. 访问控制的三种模型(DAC、MAC、RBAC)

    一.自主访问控制模型(DAC) 是资源的所有者,往往也是创建者,可以规定谁有权访问他们的资源. 安全性较低,不能抵御特洛伊木马的攻击. DAC可以用访问控制矩阵来表示. 访问控制列表ACL: 访问能力 ...

最新文章

  1. Netty 之 Zero-copy 的实现(下)
  2. 这个B站up主太硬核了!纯手工打造AI小电视:硬件自己焊接,驱动代码全手写...
  3. java操作impala
  4. Yii框架控制台报错: The id configuration for the Application is required
  5. photoshop学习笔记(一)2015-12-4【新浪云搬运】
  6. php和mvc的认识
  7. 20145227《信息安全系统设计基础》第一周学习总结
  8. Python学习十大良好习惯
  9. CCCF译文 | 从计算思维到计算行动*
  10. 后台代码和前台显示一样a href=' + URL + ' 使用转义字符
  11. 初中物理凸透镜成像动态图_中考物理考点知识总复习:探究凸透镜成像规律
  12. move.js操作CSS3动画
  13. iOS版本关于微信分享后出现的“未验证应用”
  14. python数据处理可以做什么菜_python 文件处理
  15. SQL CAST与CONVERT区别
  16. SMB Signing not required漏洞修复方法
  17. revit综合免费软件丨多图元下自由控制当前视图的填充
  18. 【Android】时钟动态图标的定制化
  19. 【机器学习】决策树案例一:利用决策树进行年龄与音乐类型喜好分类预测
  20. Android 权限表,危险权限

热门文章

  1. css布局——GFC
  2. python实现空气质量提醒程序_基于Python实现空气质量指数可视化
  3. 一窥深度学习黑箱,拼接深层神经网络架构
  4. 取石子游戏(威佐夫博弈)
  5. hive常用的内置函数
  6. dism 分割镜像_DISM对原版镜像进行改造 整合驱动及补丁
  7. 语音交互设计的一点认知
  8. 我的物联网项目(二十四) 订单编号生成规则
  9. MySQL命令行导出数据库(sql脚本)
  10. 蓝牙麦克风 android,带有蓝牙麦克风的Android语音识别器