基于RBAC实现权限系统

news2024/11/19 11:19:17

RBAC

  • 一:故事背景
  • 二:什么是RBAC(Role-Based Access Control)
    • 2.1 概念
    • 2.2 关键构成
    • 2.3 RBAC 三个著名原则
      • 2.3.1 最小权限
      • 2.3.2 责任分类
      • 2.3.3 数据抽象
    • 2.4 RBAC 的 5种类型
    • 2.5 图体现
  • 三:RBAC的优缺点
  • 四:通过RBAC实现权限系统
  • 五:总结&提升

一:故事背景

最近需要为我们的项目部署一个独立的权限管理系统。考虑的是直接使用开源的权限项目,直接使用开源的项目并且加以改造,与我们的项目相互结合,实现权限控制。在选取项目的过程中,学到了RBAC的相关概念,今天总结一下什么是RBAC,如何通过RBAC的方式,实现权限控制系统。

二:什么是RBAC(Role-Based Access Control)

2.1 概念

  • RBAC 是 Role-Based Access Control(基于角色的访问控制)的缩写。它是一种访问控制模型,用于管理和控制系统中的用户访问权限。

  • 在 RBAC 模型中,访问权限是通过角色来授权的。每个角色被分配给一个或多个用户,而每个角色具有特定的权限和访问级别。通过将权限与角色相关联,可以简化权限管理,并在需要时轻松地对用户的权限进行更改。

  • RBAC 的核心思想是将权限的授权从用户直接关联到角色,从而提高系统的安全性和管理灵活性。通过使用 RBAC,可以更好地组织和管理大型系统中的用户和权限,使管理员能够更好地控制用户对资源的访问。

2.2 关键构成

RBAC 模型的关键组成部分包括以下几个要素:

  1. 角色(Roles):定义了一组相关权限的集合,例如管理员、用户、审计员等。每个角色代表了特定的工作职责或访问需求。
  2. 权限(Permissions):表示可以执行的操作或访问的资源。权限可以是系统级别的,也可以是特定功能或数据的访问权限。
  3. 用户(Users):系统中的个体用户,被分配到一个或多个角色中。
  4. 授权(Authorization):将角色与权限进行关联,并将角色分配给用户。授权过程确定了用户在系统中的访问权限。

通过使用 RBAC,组织可以实现细粒度的访问控制,确保用户只能访问他们所需的资源,并提高系统的安全性和可管理性

2.3 RBAC 三个著名原则

RBAC支持三个著名的安全原则:最小权限原则,责任分离原则和数据抽象原则。

2.3.1 最小权限

之所以被RBAC所支持,是因为RBAC可以将其角色配置成其完成任务所需要的最小的权限集。

2.3.2 责任分类

可以通过调用相互独立互斥的角色来共同完成敏感的任务而体现,比如要求一个计帐员和财务管理员共参与同一过帐。

2.3.3 数据抽象

可以通过权限的抽象来体现,如财务操作用借款、存款等抽象权限,而不用操作系统提供的典型的读、写、执行权限。然而这些原则必须通过RBAC各部件的详细配置才能得以体现。

2.4 RBAC 的 5种类型

RBAC(基于角色的访问控制)可以分为以下几种类型:

  1. 基本 RBAC(Basic RBAC):基本 RBAC 模型定义了角色、权限和用户之间的基本关系。每个角色被授予一组权限,而用户则被分配到一个或多个角色中。这是最简单和最常见的 RBAC 类型。

  2. 静态 RBAC(Static RBAC):静态 RBAC 模型中,角色和权限之间的关系是固定的,不随时间或上下文的变化而改变。一旦角色与权限的关联被定义,它们在系统中保持不变。

  3. 动态 RBAC(Dynamic RBAC):动态 RBAC 模型中,角色和权限之间的关系是可变的。这意味着在运行时,管理员可以根据需要添加、删除或修改角色和权限的关联。这种灵活性允许系统在适应变化的需求和上下文时进行动态的权限管理。

  4. 继承型 RBAC(Hierarchical RBAC):继承型 RBAC 模型中,角色之间可以存在继承关系。一个角色可以继承另一个角色的权限,并且可以将其自己的权限分配给其他角色。这种层次结构可以简化权限管理,并使角色之间的关系更加灵活。

  5. 基于条件的 RBAC(Constraint-Based RBAC):基于条件的 RBAC 模型允许在授权过程中引入条件或约束。这些条件可以是时间限制、位置限制、数据范围等。通过引入条件,可以更细粒度地控制用户对资源的访问。

2.5 图体现

通过一个图来体现RBAC的概念。不同的角色类型赋予不同的具体的权限,对于具体的用户,具体赋给具体的用户即可。当用户角色发生变化时,其权限产生相应变化。

在这里插入图片描述

三:RBAC的优缺点

使用RBAC会有相应的优缺点,这里通过表格的方式,总结对应的RBAC的优缺点:

优点缺点
角色集中管理,简化权限管理配置复杂,需要仔细规划和管理角色与权限的关联
提高安全性,减少误授权实施和维护 RBAC 需要一定的技术和管理资源
简化用户管理,减少管理工作量需要额外的开销来定义和维护角色、权限和用户之间的关系
灵活性和可扩展性,支持快速适应变化需要定期评估和更新角色和权限的分配,以适应组织的变化和增长
降低风险,避免管理员授权过高权限滥用角色和权限可能导致安全漏洞和数据泄露
提供审计和可追踪性,记录用户活动和权限变更实现复杂的授权策略时,可能需要额外的扩展和自定义功能
支持合规性要求,满足监管和法律要求用户可能被限制在某些操作或资源上,可能影响业务流程和灵活性

四:通过RBAC实现权限系统

想要通过RBAC实现权限系统,需要注意以下几个主要方面:

  1. 确定角色:首先,要了解系统中需要哪些角色,角色和用户的职责和职能如何进行对应。例如一个博客网站可能会有管理员、作者、读者等各种角色。
  2. 确定权限:为每个角色定义相应的权限。权限是指可以执行的操作或可以访问的资源。例如,管理员可能有权限创建、编辑和删除文章,而作者只有编辑和发布文章的权限。
  3. 分配角色:将用户分配到适当的角色。这可以通过用户的职位、部门或其他标识来确定。例如,一个新用户可能会被分配为读者角色,而经理可能会被分配为管理员角色。
  4. 设计角色层次结构:如果你的系统中存在多个角色,并且这些角色之间存在继承关系,你可以设计一个角色层次结构。这样可以简化权限的管理。例如,一个高级角色可能继承了低级角色的所有权限,并具有额外的权限。
  5. 定义访问控制策略:确定谁可以访问哪些资源以及执行哪些操作。这可以通过为每个角色分配特定的权限集来实现。例如,管理员可以访问所有文章并进行管理,而读者只能访问和阅读文章。
  6. 实施和管理:将RBAC设计应用到你的系统中,并确保适当的权限和访问控制策略得以实施。确保权限的分配和更改过程是安全的,并定期审查和更新角色和权限。

五:总结&提升

本文给出了RBAC的相关概念,以及对应关键构成。介绍了RBAC的原则与5中基本类型,并且通过图的方式,表示了RBAC应该在系统通如何存在。在介绍完基础概念之后,分析了RBAC的优缺点,然后讲述了RBAC实现权限系统的重要流程。希望通过这边博客,读者可以充分的了解到什么是RBAC,通过对概念的了解,可以结合实际,用到项目上,或者开放过程中!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/641353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

useref和useImperativeHandle

1.函数组件中,还可以基于useRef Hook函数,创建一个ref对象 useRef 是 React 提供的一个 Hook 函数,它可以用来在函数式组件内部保存和访问任何可变值,类似于在类组件中使用 this.setState 来保存数据。不同之处在于,u…

Maven创建Web项目

创建 Web 应用 通过使用 Maven 的 maven-archetype-webapp 模板可以创建一个简单的 Web 应用。 例如,在命令行窗口执行以下命令,Maven 会为我们创建一个 JavaWeb 应用。 mvn archetype:generate -DgroupIdnet.biancheng.www -DartifactIdmavenWeb -Darc…

Unity与原生交互之Unity篇——AndroidStudio导出aar/jar包供Unity使用实现交互全流程(4)

序言:此篇介绍使用AndroidStudio导出aar/jar导入unity过程中的注意点 1.处理aar包 *****重要 重要 重要***** 目的是为了剔除之前导入android工程的unity API,这些api unity已经有了 过程建议拷贝一份aar进行处理 方式一: 处理aar包 1)解压aar 2)…

百度沈抖:大模型 产业智能化时代的新引擎

6月9日,2023 NAVIGATE领航者峰会在杭州举办,聚焦数字经济新政策、新技术、新业态带来的蓬勃机遇,探讨ICT行业在AIGC时代将要面临的全新挑战与应对策略。百度集团执行副总裁、百度智能云事业群总裁沈抖出席大会并作题为《大模型 产业智能化时代…

华为OD机试之用户调度问题(Java源码)

用户调度问题 题目描述 在通信系统中,一个常见的问题是对用户进行不同策略的调度,会得到不同的系统消耗和性能。假设当前有n个待串行调度用户,每个用户可以使用A/B/C三种不同的调度策略,不同的策略会消耗不同的系统资源。请你根据…

AI + 非遗文化主题师资培训落地,飞桨持续赋能AI人才培养

随着数字浪潮袭来,人工智能的发展声势浩大,高校人工智能专业建设以及 AI 的人才培养已经提上日程。如何夯实产教融合,加快人工智能研究创新,培养具备 AI 系统能力的拔尖人才,是推进产业智能化升级的迫切课题。6月2日-4…

2023年国内五大 IoT 物联网平台费用对比

五大物联网平台费用对比 随着物联网发展进入成熟期,越来越多企业选择云厂商提供的物联网PaaS服务,以降低运营成本,缩短业务上线周期,释放运维的人力,按需付费动态扩容。笔者基于各云厂商2023年4月的官网报价&#xff0…

【笑小枫系列】Java加密那点事,本文给你讲的明明白白

本文简介 相信大家在日常工作中都遇到过加密的场景吧,像登录密码加密保存、无token接口验签、数据加密传输等等。 本文将详细的介绍一下加密的方式,并分析使用场景,并会以详细的代码完整的介绍如何使用加密,让小伙伴们遇到加密时…

docker-consul服务发现部署

什么是consul consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法,用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案&…

Redis 分布式集群操作

文章目录 连接集群写入数据单个key写入批量key操作 集群查询查询 key 的 slot查询 slot 中 key 的数量查询 slot 中的 key 故障转移Master宕机Master 和 Slave 都宕机 集群扩容1.启动两个节点2.添加 master3.分配slot4.添加 slave 集群缩容1.删除 slave 节点2.移出 master 的 s…

【K8SRockyLinux】基于开源操作系统搭建K8S高可用集群(详细版)

文章目录 一、实验节点规划表👇二、实验版本说明📃三、实验拓扑📊四、实验详细操作步骤🕹️1. 安装Rocky Linux开源企业操作系统2. 所有主机系统初始化3. 所有master节点部署keepalived4. 所有master节点部署haproxy5. 所有节点配…

睿智医药×企通启动采购与供应链管理项目,加速医药领域数智采购

随着世界经济发展、人口总量增长、人口老龄化程度提高以及人们保健意识增强,新型国家城市化建设的推进和各国医疗保障体制的不断完善,全球医药市场呈持续增长趋势。在政策、资本、技术等因素催化下,我国生物医药行业研发创新实力稳步增强&…

Three.js教程:渲染器

推荐:将 NSDT场景编辑器加入你的3D工具链。 其他系列工具: NSDT简石数字孪生 渲染器 生活中如果有了景物和相机,那么如果想获得一张照片,就需要你拿着相机,按一下,咔,完成拍照。对于threejs而言…

《西部学刊》期刊简介及投稿邮箱

《西部学刊》是经国家新闻出版总署批准,由陕西新华出版传媒集团主管、主办的面向国内外公开发行的综合性哲学社会科学学术期刊。2014年,被国家新闻出版广电总局认定为第一批学术期刊。 《 西部学刊》以全球视野,关注中国西部,聚焦…

webpack生成模式配置

一、生产模式和开发模式介绍 生成模式(production mode)是指在开发完成后将代码部署到生产环境中运行的模式,通常需要进行代码压缩、优化、合并,以减少文件大小和请求次数,提高页面加载速度和运行效率。 开发模式&am…

生成式人工智能将会对Salesforce的CRM系统护城河构成破坏性威胁

来源:猛兽财经 作者:猛兽财经 第一季度财务业绩 由于Salesforce(CRM)对2024财年的预测挫败了投资者对其人工智能业务前景的信心,所以猛兽财经认为,Salesforce今年的股价反弹可能已经结束了。尽管该公司在第一季度实现了令人印象深…

母婴商家怎么建立自己的品牌,母婴产品传播渠道总结

随着互联网的发展逐渐深入我们的生活,线上传播的模式也越来越被大家熟知。越来越多的行业开始重视线上传播。那么母婴商家怎么建立自己的品牌,母婴产品传播渠道总结。 其实,母婴产品线上用户群体众多,且母婴产品用户目的明确&…

5_普通最小二乘法线性回归案例(Scikit-learn 0.18.2)

现有一批描述家庭用电情况的数据,对数据进行算法模型预测,并最终得到预测模型(每天各个时间段和功率之间的关系、功率与电流之间的关系等) 数据来源:Individual household electric power consumption Data Set建议&am…

Meta开源音乐生成AI模型MusicGen;直白图解GPT2模型Self Attention注意力机制

🦉 AI新闻 🚀 Meta开源音乐生成AI模型MusicGen 摘要:Meta在Github上开源了其AI语言模型MusicGen,该模型基于Google 2017年推出的Transformer模型,可将文本和旋律转化为完整乐曲。MusicGen支持文本与旋律的组合输入&a…

Python实现ACO蚁群优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…