当前位置: 首页 > article >正文

系统设计---RBAC模型与ABAC模型

RBAC 模型了解吗?

系统权限控制最常采用的访问控制模型就是 RBAC 模型

什么是 RBAC 呢? RBAC 即基于角色的权限访问控制(Role-Based Access Control)。这是一种通过角色关联权限,角色同时又关联用户的授权的方式。

简单地说:一个用户可以拥有若干角色,每一个角色又可以被分配若干权限,这样就构造成“用户-角色-权限” 的授权模型。在这种模型中,用户与角色、角色与权限之间构成了多对多的关系。
image.png

在 RBAC 权限模型中,权限与角色相关联,用户通过成为包含特定角色的成员而得到这些角色的权限,这就极大地简化了权限的管理。

为了实现 RBAC 权限模型,数据库表的常见设计如下(一共 5 张表,2 张用户建立表之间的联系):
image.png

通常来说,如果系统对于权限控制要求比较严格的话,一般都会选择使用 RBAC 模型来做权限控制。

优点

  1. 简化权限管理:RBAC模型将权限分配和管理集中在角色层级,简化了权限管理过程。
  2. 减少权限冗余:通过角色的权限集合,可以减少权限冗余和提高权限管理的效率。
  3. 提高安全性:RBAC模型可以限制用户只能访问其所需的资源,降低系统被恶意访问的风险。
  4. 易于扩展:RBAC模型具有良好的扩展性,可以根据系统需求灵活地添加、修改和删除角色和权限。

缺点

  1. 复杂性:RBAC模型的实施可能会涉及到复杂的角色和权限管理,需要仔细设计和规划。
  2. 角色爆炸:当系统中角色数量庞大时,可能会出现角色爆炸的问题,增加了管理的复杂性。
  3. 刚性:RBAC模型的权限控制是基于角色的,可能无法灵活地处理一些特殊权限需求。

ABAC 模型了解吗?

基于属性的访问控制(Attribute-Based Access Control,简称 ABAC) 是一种比 RBAC模型 更加灵活的授权模型,它的原理是通过各种属性来动态判断一个操作是否可以被允许。这个模型在云系统中使用的比较多,比如 AWS,阿里云等。

考虑下面这些场景的权限控制:

  1. 授权某个人具体某本书的编辑权限
  2. 当一个文档的所属部门跟用户的部门相同时,用户可以访问这个文档
  3. 当用户是一个文档的拥有者并且文档的状态是草稿,用户可以编辑这个文档
  4. 早上九点前禁止 A 部门的人访问 B 系统
  5. 在除了上海以外的地方禁止以管理员身份访问 A 系统
  6. 用户对 2022-06-07 之前创建的订单有操作权限

可以发现上述的场景通过 RBAC模型 很难去实现,因为 RBAC模型 仅仅描述了用户可以做什么操作,但是操作的条件,以及操作的数据,RBAC模型 本身是没有这些限制的。但这恰恰是 ABAC模型 的长处,ABAC模型 的思想是基于用户、访问的数据的属性、以及各种环境因素去动态计算用户是否有权限进行操作。

优点

  1. 灵活性:ABAC模型具有很高的灵活性,可以根据用户的属性动态调整权限,适应不同的访问控制需求。
  2. 精细控制:ABAC模型可以实现更细粒度的权限控制,可以根据多个属性组合来决定用户是否有权限访问资源。
  3. 策略管理:ABAC模型通过定义属性和策略来管理访问控制,使得权限管理更加直观和灵活。
  4. 适应复杂环境:ABAC模型适用于复杂的环境和需要细致控制权限的场景,如云计算、物联网等。

缺点

  1. 复杂性:ABAC模型的实施可能会涉及到复杂的属性定义、策略管理和权限控制,需要一定的技术和资源支持。
  2. 性能开销:由于需要对多个属性进行评估和决策,ABAC模型可能会带来一定的性能开销,特别是在大规模系统中。
  3. 难以管理:ABAC模型的灵活性也可能导致权限管理的复杂性增加,需要仔细规划和管理属性和策略。

ABAC 模型的原理

ABAC模型 中,一个操作是否被允许是基于对象、资源、操作和环境信息共同动态计算决定的。

  • 对象:对象是当前请求访问资源的用户。用户的属性包括 ID,个人资源,角色,部门和组织成员身份等
  • 资源:资源是当前用户要访问的资产或对象,例如文件,数据,服务器,甚至 API
  • 操作:操作是用户试图对资源进行的操作。常见的操作包括“读取”,“写入”,“编辑”,“复制”和“删除”
  • 环境:环境是每个访问请求的上下文。环境属性包含访问的时间和位置,对象的设备,通信协议和加密强度等

ABAC模型 的决策语句的执行过程中,决策引擎会根据定义好的决策语句,结合对象、资源、操作、环境等因素动态计算出决策结果。每当发生访问请求时,ABAC模型 决策系统都会分析属性值是否与已建立的策略匹配。如果有匹配的策略,访问请求就会被通过。


http://www.kler.cn/a/407033.html

相关文章:

  • 全面提升系统安全:禁用不必要服务、更新安全补丁、配置防火墙规则的实战指南
  • 分层架构 IM 系统之架构演进
  • MacOS下的Opencv3.4.16的编译
  • ROS之什么是Node节点和Package包?
  • 操作系统大会2024 | 麒麟信安根植openEuler社区,持续技术创新 共拓新应用 探索新机遇
  • 解决IDEA报包不存在,但实际存在的问题
  • 【H2O2|全栈】JS进阶知识(九)ES6(5)
  • 大语言模型---Llama模型文件介绍;文件组成
  • 探索Python网络请求新纪元:httpx库的崛起
  • 小白投资理财 - 解读威廉分形指标 Williams Fractals
  • 高度统一:极大和极小如何统于一
  • 0基础如何进入IT行业?
  • 爬虫实战:采集知乎XXX话题数据
  • @RequestBody和前端的关系以及,如何在前后端之间传递数据?
  • mybatis-plus方法无效且字段映射失败错误排查
  • 【PPTist】添加PPT模版
  • 【Linux命令】grep
  • stm32与ht7038的项目
  • 第 22 章 - Go语言 测试与基准测试
  • 【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感
  • 游戏陪玩系统开发功能需求分析
  • 麦肯锡报告 | 未来的经济引擎:解读下一代竞争领域
  • 网络安全设备Bypass
  • 2024年全国青少年信息素养大赛-算法创意实践C++ 华中赛区 (小学组 初赛)
  • RTSP播放器EasyPlayer.js播放器分辨率高的视频在设置container的宽高较小时,会出现锯齿状的画面效果
  • 微信小程序+Vant-自定义选择器组件(单选带筛选