RBAC——基于角色权限的模型

news2024/11/20 20:26:20

目录

1、RBAC是什么?

2、为什么要使用RBAC模型?

3、RBAC的适用场景

4、RBAC流程图

5、RBAC各模块功能

6、访问控制流程

7、数据库设计及相关表结构

8、RBAC模型的JPA简单实现-单表及多表查询

9、RBAC模型四级分级

10、总结(优缺点)


1、RBAC是什么?

Role-Based Access Control,中文意思是:基于角色(Role)的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。

简单来说,就是通过将权限分配给➡角色,再将角色分配给➡用户,来实现对系统资源的访问控制。一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。具体而言,RBAC模型定义了以下几个核心概念:

  1. 角色(Role):角色是指在系统中具有一组相关权限的抽象概念,代表了用户在特定上下文中的身份或职能,例如管理员、普通用户等。

  2. 权限(Permission):权限是指对系统资源进行操作的许可,如读取、写入、修改等。权限可以被分配给角色。

  3. 用户(User):用户是指系统的实际使用者,每个用户可以被分配一个或多个角色。

  4. 分配(Assignment):分配是指将角色与用户关联起来,以赋予用户相应的权限。

RBAC 认为授权实际上是Who 、What 、How 三元组之间的关系,也就是Who 对What 进行How 的操作,也就是“主体”对“客体”的操作。

Who:是权限的拥有者或主体(如:User,Role)。

What:是操作或对象(operation,object)。

How:具体的权限(Privilege,正向授权与负向授权)。

通过RBAC模型,可以实现灵活且易于管理的访问控制策略。管理员可以通过分配和调整角色,来管理用户的权限。这种角色层次结构可以帮助简化权限管理,并确保用户只有所需的权限。

RBAC模型广泛应用于系统安全、数据库管理、网络管理等领域,它提供了一种可扩展、可管理的访问控制机制,有助于保护系统资源免受未经授权的访问和潜在的安全威胁。

2、为什么要使用RBAC模型?

因为当用户的数量非常大时,要给系统每个用户逐一授权,是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和。

在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。

举个例子:登录功能的用户-角色-权限关系

图片来源:RBAC角色权限设计-阿里云开发者社区

3、RBAC的适用场景

(1)企业组织架构:在企业中,RBAC可用于根据员工的职位、角色和职责来管理访问权限。不同部门的员工可以被分配到不同的角色,以便根据其工作职能限制他们对系统和资源的访问。

(2)应用程序和系统访问控制:RBAC可用于管理应用程序和系统中的用户访问权限。管理员可以根据用户的角色将其分配到适当的角色,并定义角色的权限集合。这样,系统可以确保用户只能访问其所需的功能和数据,从而提高安全性。

(3)多租户系统:在多租户环境中,RBAC模型可以用于对不同租户之间的访问进行隔离和管理。每个租户可以有自己的角色和权限定义,以确保其数据和资源只能被其授权的用户访问。

(4)医疗保健:在医疗保健领域,RBAC可用于管理医生、护士和管理员等不同角色的访问权限。例如,医生可以被分配到具有病人记录和处方访问权限的角色,而护士只能访问病人记录。

(5)金融和银行:在金融和银行领域,RBAC可用于管理不同用户角色的访问权限,例如客户、经理和审计人员。通过RBAC,可以确保客户只能访问其自己的账户信息,而经理和审计人员可以拥有更广泛的访问权限。

(6)云计算和网络服务提供商:RBAC可用于管理云计算平台和网络服务提供商中的用户访问权限。不同用户可以被分配到不同的角色,以限制其对云资源、虚拟机或网络设备的操作。

RBAC模型可以应用于各种不同的领域和系统,以提供更安全、灵活和可管理的访问控制机制。根据特定的需求和环境,可以根据RBAC模型进行定制和扩展。

4、RBAC流程图

5、RBAC各模块功能

图片来源:【php】RBAC 管理权限

6、访问控制流程

图片来源:【php】RBAC 管理权限

7、数据库设计及相关表结构

主外键关联的

非主外键(虚拟)

8、RBAC模型的JPA简单实现-单表及多表查询

详见以下地址:RBAC模型的JPA简单实现-单表及多表查询-CSDN博客

9、RBAC模型四级分级

RBAC0(Core RBAC):最简单的RBAC形式,员工使用角色来获取权限(使用最多)。

基本模型有三个元素:用户、角色和权限。模型设计基于“多对多”原则,即多个用户可以具有相同的角色,一个用户可以具有多个角色。同样,您可以将同一权限分配给多个角色,也可以将同一角色分配给多个权限。

RBAC1(Hierarchical RBAC):分层,建立在FlatRBAC规则之上,增加角色分层

添加了第四个组件-层次结构,它定义了不同角色之间的资历关系。通过允许高级角色自动获取下级角色的权限,可以消除冗余,例如在角色重叠时必须指定某些权限。

RBAC2(Static separation of duty (SSD) relations):受约束的,建立在分层RBAC0之上,并增加职责分离

为了在存在利益冲突策略的情况下提供帮助,将根据用户分配添加角色之间的关系。例如,作为一个角色的成员的用户将无法被指派为具有利益冲突的角色的成员。

RBAC3(Dynamic separation of duty (DSD) relations)RBAC3=RBAC1+RBAC2

与SSD一样,DSD限制了可用的用户权限,但基于不同的上下文。例如,根据会话期间执行的任务,用户可能需要不同级别的访问,DSD限制会话期间激活的权限。

10、总结(优缺点)

RBAC模型的优点:

  1. 简化权限管理:RBAC模型通过将权限分配给角色,再将角色分配给用户,使得权限管理更加灵活和易于管理。管理员可以通过调整角色和用户之间的关系,来分配和撤销权限,而无需直接管理每个用户的权限。

  2. 灵活的角色与权限关系:RBAC模型支持多对多的角色与权限关系,即一个角色可以拥有多个权限,一个权限也可以被多个角色所共享。这种灵活性使得RBAC适用于各种复杂的权限管理需求。

  3. 提高安全性:RBAC模型可以确保用户只有所需的权限,并提供了良好的隔离性。通过严格控制权限的分配,可以减少系统中的安全漏洞和潜在的攻击风险。

  4. 易于扩展和维护:由于RBAC模型使用了基于角色的抽象概念,当系统需要进行扩展或调整时,只需修改角色的权限分配,而无需改变具体的用户权限。

RBAC模型的缺点:

  1. 复杂性:尽管RBAC模型提供了灵活的权限管理机制,但其本身也较为复杂。设计和实施RBAC系统需要仔细考虑角色的定义、权限的分配以及用户与角色之间的关系,需要进行详细的规划和配置。

  2. 难以处理特殊情况:RBAC模型对于不同角色的用户可能存在某些特殊需求或特权,如临时提升权限、临时改变角色等,这些特殊情况可能难以通过RBAC模型来满足。

  3. 高度依赖角色设计:RBAC模型的有效性和安全性高度依赖于正确定义和管理角色。如果角色设计不合理或者角色权限分配不当,可能导致系统中出现权限过度或权限不足的问题。

  4. 难以适应复杂场景:在某些复杂的业务场景下,RBAC模型可能无法满足需求。例如,需要考虑时间约束、地域约束、审批流程等其他因素时,RBAC模型的简单角色与权限关系可能显得不够灵活和细粒度。

总结起来,RBAC模型具有简化权限管理、灵活的角色与权限关系、提高安全性和易于扩展等优点。但同时也存在复杂性、处理特殊情况困难、高度依赖角色设计和难以适应复杂场景等缺点。在实施RBAC模型时,需要根据具体情况进行合理规划和权衡。

参考:

【php】RBAC 管理权限

RBAC角色权限设计-阿里云开发者社区

RBAC权限管理(一)-阿里云开发者社区

RBAC权限管理(二)-阿里云开发者社区

初识RBAC - 知乎


感谢阅读,码字不易,多谢点赞!如有不当之处,欢迎反馈指出,感谢!

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

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

相关文章

Spring Cloud Alibaba系列(6)之nacos集群搭建

传送门 Spring Cloud Alibaba系列之nacos:(1)安装 Spring Cloud Alibaba系列之nacos:(2)单机模式支持mysql Spring Cloud Alibaba系列之nacos:(3)服务注册发现 Spring Cloud Alibaba系列之nacos:(4)配置管理 Spring Cloud Al…

将本地的项目上传到Gitee

目录 1.先在Gitee新建一个仓库,提交即可 2.进入到要上传的项目里面,右键选择 Git Bash Here 3.右键后就打开了Git命令窗口 4.配置你的用户名和邮箱(已经配置过则可跳过) 5.查看你的用户名和邮箱配置(可不查看) 6.输入git init指令&#…

【第二天】C++类和对象解析:构造函数、析构函数和拷贝构造函数的完全指南

一、类的引出概述 在c语言结构体中,行为和属性是分开的,万一调用错误,将会导致问题发生。c中类将数据和方法封装在一起,加以权限区分,用户只能通过公共方法 访问 私有数据。 二、封装 封装特性包含两个方面&#xff0…

Java 中的 Default 关键字

default 关键字:是在 Java 8 中引入的新概念,也可称为 Virtual extension methods——虚拟扩展方法与public、private等都属于修饰符关键字,与其它两个关键字不同之处在于default关键字大部分都用于修饰接口。 default 修饰方法时只能在接口…

基于Java+Springboot+Vue前后端分离的商品库存销售管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 当今社会,…

混合专家模型 Mixture-of-Experts (MoE)

大纲 Mixture-of-Experts (MoE)Mixture of Sequential Experts(MoSE)Multi-gate Mixture-of-Experts (MMoE) 一、MoE 1. MoE架构 MoE(Mixture of Experts)层包含一个门网络(Gating Network)和n个专家网…

中文编程开发语言工具编程实际案例:台球棋牌混合计时计费软件使用的编程构件说明

中文编程开发语言工具编程实际案例:台球棋牌混合计时计费软件使用的编程构件说明 上图说明:该软件可以用于桌球和棋牌同时计时计费,在没有开台的时候,图片是处于等待状态,这使用编程工具中的固定图像构件,在…

【经典 PageRank 】01/2 PageRank的基本原理

一、说明 PageRank是Google搜索算法中使用的一种算法,用于确定页面的重要性和排名。 它是通过对网页间的链接关系进行评估来计算的,具有较高的链接权重的网页将获得较高的PageRank值。 PageRank是一个0到10的指标,其中10是最高级别&#xff0…

正点原子嵌入式linux驱动开发——Linux并发与竞争

Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。在Linux驱动编写过程中对于并发控制…

前端TypeScript学习day05-索引签名、映射与类型声明文件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 索引签名类型 映射类型 索引查询(访问)类型 基本使用 同时查询多个索引的类型…

2023天猫双十一活动时间表 天猫淘宝双11预售几号开始付定金

双十一购物节是生活不可或缺的一部分,不论是满足基本需求还是享受生活乐趣,都需要购物。因此,双十一绝对是一个不容错过的绝佳机会,希望大家能善用这个机会,因为错过了就得再等一整年。 每日领红包:红包有…

基于袋獾优化的BP神经网络(分类应用) - 附代码

基于袋獾优化的BP神经网络(分类应用) - 附代码 文章目录 基于袋獾优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.袋獾优化BP神经网络3.1 BP神经网络参数设置3.2 袋獾算法应用 4.测试结果:5.M…

MYSQL第一章节DDL数据定义语言的操作(DDL-数据库操作,DDL-操作表-查询,DDL-操作表-修改,数据库的基本类型)

c知识点合集已经完成欢迎前往主页查看,点点赞点点关注不迷路哦 点我进入c第一章知识点合集 MYSQL第一章节DDL数据定义语言的操作 目录 DDL-数据库操作 查询所有数据库 查询当前数据库 创建数据库 删除数据库 DDL-操作表-查询 查询当前数据库中的所有表 查询表结构…

基于斑马优化的BP神经网络(分类应用) - 附代码

基于斑马优化的BP神经网络(分类应用) - 附代码 文章目录 基于斑马优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.斑马优化BP神经网络3.1 BP神经网络参数设置3.2 斑马算法应用 4.测试结果:5.M…

【iOS】MVC模式

MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,ta最早出现在SmallTalk语言中。现在,很多计算机语言和架构都采用了MVC模式。 MVC模式概述 MVC模式是一种设计模式,由3部分组成…

图论05-【无权无向】-图的广度优先遍历-路径问题/检测环/二分图/最短路径问题

文章目录 1. 代码仓库2. 单源路径2.1 思路2.2 主要代码 3. 所有点对路径3.1 思路3.2 主要代码 4. 联通分量5. 环检测5.1 思路5.2 主要代码 6. 二分图检测6.1 思路6.2 主要代码6.2.1 遍历每个联通分量6.2.2 判断相邻两点的颜色是否一致 7. 最短路径问题7.1 思路7.2 代码 1. 代码…

基于SSM的物业管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

AdaBoost:增强机器学习的力量

一、介绍 机器学习已成为现代技术的基石,为从推荐系统到自动驾驶汽车的一切提供动力。在众多机器学习算法中,AdaBoost(自适应增强的缩写)作为一种强大的集成方法脱颖而出,为该领域的成功做出了重大贡献。AdaBoost 是一…

数据分析案例-顾客购物数据可视化分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

今年阿里云双十一服务器优惠价格讨论_看看大家怎么说?

2023阿里云双十一云服务器大概会降到什么区间?阿里云服务器网认为会在当前的优惠价格基础上,降价10%左右,可以在阿里云CLUB中心领券:aliyun.club 云服务器专用满减优惠券。阿里云服务器网从各个渠道了解到大家对今年阿里云双十一服…