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

server/2024/11/24 14:01:49/

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.ppmy.cn/server/144559.html

相关文章

探索智能时代:从AI生成PPT到自动化未来

在这个技术飞速发展的年代, 我们每天都在寻找提高效率的方法。随着技术的飞速发展,PPT制作也迎来了革命性的变化。跟小编一起联想一下,只需轻轻一点,便能生成一份专业的演示文稿。这种便捷的体验得益于AI生成PPT技术的迅猛发展。 …

【自动化】如何从列表中找到图片并命名保存下来

以下是对这段 Python 代码的分析: 代码功能概述 这段代码主要使用了 DrissionPage 库(看起来是用于自动化网页操作相关的库)来与浏览器(基于 Chromium 内核)进行交互,实现以下功能: 打开豆瓣…

设计模式-创建型-单例模式

1.概念 该设计模式保证全局只有一个实例对象可以使用,并且自动实例化,向外部提供一个使用接口。 2.作用 保证某些对象在项目中只有一份。 3.应用场景 比如: 全局的计数器——web页面文章阅读计数 全局的资源共享——用户登录后各个页面之…

数据结构——小小二叉树第三幕(链式结构的小拓展,二叉树的创建,深入理解二叉树的遍历)超详细!!!

文章目录 前言一、二叉树的层序遍历二、二叉树的有关习题2.1 单值二叉树题目思路代码 2.2 相同的树题目思路代码 2.3 对称的树题目思路代码 2.4 二叉树的遍历题目思路代码 2.5 二叉树的遍历题目思路代码 2.6 二叉树的有关选择题 总结 前言 上篇博客我们学习了链式结构的二叉树&…

开发中常见邮箱服务器以及端口号

邮箱类型服务器端口备注QQ邮箱smtpsmtp.qq.com587https://mail.qq.com/imapimap.qq.com993pop3pop.qq.com995163邮箱smtpsmtp.163.com25https://mail.163.com/imapimap.163.com993pop3pop.163.com995126邮箱smtpsmtp.126.com25https://mail.126.com/imapimap.126.com993pop3pop…

利用 GitHub 和 Hexo 搭建个人博客【保姆教程】

利用 GitHub 和 Hexo 搭建个人博客 利用 GitHub 和 Hexo 搭建个人博客一、前言二、准备工作(一)安装 Node.js 和 Git(二)注册 GitHub 账号 三、安装 Hexo(一)创建博客目录(二)安装 H…

【BUG】ES使用过程中问题解决汇总

安装elasticsearch内存不足问题 问题回顾 运行kibana服务的时候,无法本地访问 解决 首先排查端口问题,然后检查错误日志 无法运行kibana服务,是因为elasticsearch没有启动的原因 发现致命错误,确定是elasticsearch服务没有运行导…

部署端侧大模型

端侧大模型是当前人工智能领域的热点话题。 一.端侧大模型发展现状 1.论文: 《On-Device Language Models: A Comprehensive Review》 链接:https://arxiv.org/abs/2409.00088 简介: 该论文全面综述了设备端语言模型的发展,包…