RBAC 模型梳理

news2024/10/6 22:23:47

1. RBAC 模型是什么

RBAC(Role-Based Access Control)即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。
RBAC 模型由 4 个基础模型组成:

  1. 基本模型 RBAC0(Core RBAC)
  2. 角色分层模型 RBAC1(Hierarchal RBAC)
  3. 角色限制模型 RBAC2(Constraint RBAC)
  4. 统一模型 RBAC3(Combines RBAC)
    RBAC 授权的过程可以抽象概括为:判断 Who 是否可以对 What 进行 How 的访问操作,以及这个逻辑表达式的值是否为 True 的计算过程。
    Who、What、How 构成了访问权限三元组,Who 是权限的拥有者或主体(User、Role),What 是资源(Resource),How 是具体的权限。
    在这里插入图片描述

1.1. 基本模型 RBAC0

RBAC0 是最基础也是最核心的模型,由五部分组成:用户(User)、角色(Role)、许可(Permission)、会话(Session)、操作(operations OPS)。
在这里插入图片描述
角色通过权限(许可)被授权资源,角色又授权到用户身上,通过会话管理用户和角色的授权关系,用户就继承了角色的访问资源权限。
我们举一个很简单的例子,例如:张三是一家企业的财务总监,同时他也是该企业对外的形象大使,财务总监有访问公司财务数据的权限,形象大使有访问公司市场部推广计划和编辑发言稿的权限。那么张三既有访问公司财务数据的权限,又有访问公司市场部推广计划和编辑发言稿的权限。突然有一天公司决定做职位调整,张三被任命为财务总监和人力资源总监,撤掉了形象大使。那么张三当前就只能访问财务总监和人力资源总监所对应的授权资源。

1.2. 角色分层模型 RBAC1

该模型主要是在 RBAC0 的基础上,增加了角色层级关系的继承逻辑,也就是说角色有了组织树的逻辑。
在这里插入图片描述
角色有了上下级关系,上一级的角色可以继承其下所有角色的授权资源。
再比如张三是一家企业的财务总监,同时他也是该企业对外的形象大使,财务总监有访问公司财务数据的权限,形象大使有访问公司市场部推广计划和编辑发言稿的权限。那么他的上级领导,比如是该公司的 CFO,既有访问公司财务数据的权限,又有访问公司市场部推广计划和编辑发言稿的权限。这是继承关系。
在这里插入图片描述

1.3. 角色限制模型 RBAC2

该模型主要添加了授权约束。约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。
责任分离包括:静态责任分离(SSD)和动态责任分离(DSD)。
在这里插入图片描述
SSD 是用户和角色的指派阶段加入的,主要是对用户和角色有如下约束:

  1. 角色互斥:同一个用户在两个互斥角色中只能选择一个。比如财务部有会计和审核员两个角色,他们是互斥角色,那么用户不能同时拥有这两个角色,体现了职责分离原则。
  2. 基数约束:一个角色被分配的用户数量受限,一个用户可拥有的角色数目受限,同样一个角色对应的访问资源权限数目也受限,以控制高级权限在系统中的分配。比如李四是 COO,王五不能也是 COO。同样的李四不能既是 COO 又是 CTO 又是 CFO。COO 、CTO、 CFO 三个角色所能访问的资源权限也不能是一模一样的。
  3. 先决条件约束:用户想要获得高级角色,首先必须拥有低级角色。
    DSD 是会话和角色之间的约束,可以动态的约束用户拥有的角色,也叫运行时互斥。如一个用户可以拥有两个角色,但是运行时只能激活一个角色。如一个人如果既是运动员又是教练,当比赛开始的时候,只能选择一个角色身份入场。

1.4. 统一模型 RBAC3

RBAC3 是 RBAC1 与 RBAC2 的合集,所以 RBAC3 是既有角色分层又有约束的一种综合授权模型了。

2. 什么是权限

权限是资源的集合,这里的资源指的是软件中所有的内容,包括模块、菜单、页面、字段、操作功能(增删改查)等等。具体的权限配置上,目前形式多种多样,按照我个人的理解,可以将权限分为:页面权限操作权限数据权限

2.1. 页面权限

所有系统都是由一个个的页面组成,页面再组成模块,用户是否能看到这个页面的菜单、是否能进入这个页面就称为页面权限。
在这里插入图片描述
客户列表、客户黑名单、客户审批页面组成了客户管理这个模块。对于普通用户,不能进行审批操作,即无客户审批页面权限,在他的账号登录后侧边导航栏只显示客户列表、客户黑名单两个菜单。

2.2. 操作权限

用户凡是在操作系统中的任何动作、交互都是操作权限,如增删改查等。

2.3. 数据权限

数据权限是指在一个系统,对于不同的用户或用户组,授予不同的数据访问权限的过程。
这里的数据权限包含菜单、页面以及字段等。这些权限可以限制用户可以访问哪些数据、以及他们可以对这些数据进行哪些操作。数据权限的目的是确保数据的安全性和保密性,同时也可以提高数据的可用性和可靠性。
简单举个例子:某系统中有销售部门,销售专员负责推销商品,销售主管负责管理销售专员日常工作,经理负责组织管理销售主管作业。
在这里插入图片描述
按照实际理解,“销售专员张三”登录时,只能看到自己负责的数据;销售主管2登录时,能看到他所领导的所有业务员负责的数据,但看不到其他团队业务员负责的数据。
换另外一句话就是:我的客户只有我和我的直属上级以及直属上级的领导能看到,这就是我理解的数据权限。
要实现数据权限有多种方式:

  1. 可以利用RBAC1模型,通过角色分级来实现。
  2. 在‘用户-角色-权限’的基础上,增加用户与组织的关联关系,用组织决定用户的数据权限。
    具体如何做呢?
  3. 组织层级划分
    在这里插入图片描述
  4. 数据可视权限规则制定
    上级组织只能看到下级组织员工负责的数据,而不能看到其他平级组织及其下级组织的员工数据等。
    通过以上两点,系统就可以在用户登录时,自动判断要给用户展示哪些数据了。

3. RBAC 设计实现

3.1. 用户-角色-权限

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

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

3.2. 用户-组织-角色-权限

在“用户-角色-权限”的基础上,增加了用户与组织的关联关系,组织决定了用户的数据范围的权限
在这里插入图片描述
系统都有数据私密性的要求:哪些用户可以看到哪些数据,哪些用户不可以看到哪些数据。这个时候,我们需要从组织结构出发思考数据范围权限其实是角色权限的重要属性,但是由于数据范围太灵活,如果加入“数据权限”,如果账号下的数据量较大,用户编辑数据权限的操作会很繁琐。因此现在主流的后台设计都会使用“组织结构”来对应数据权限。
在这里插入图片描述
常用数据范围设置:全部数据权限自定数据权限本部门数据权限本部门及以下数据权限仅本人数据权限

3.3. 用户-组织-岗位-角色-权限

在第二种权限体系上进行优化的,增加了用户与岗位的关联关系
在这里插入图片描述

4. 组织结构数据库存储

https://blog.csdn.net/tongluren381/article/details/114874080

参考:
https://www.zhihu.com/question/428429216
https://www.woshipm.com/pd/1150093.html
https://blog.csdn.net/hao2713636/article/details/132326046

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

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

相关文章

Qwen2本地部署的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

归并排序(分治)

归并排序 概念介绍原理解释:案例步骤:稳定性:画图理解如下 代码实现 概念介绍 归并排序(Merge Sort)是一种经典的排序算法,基于分治的思想,它将待排序数组分成两个子数组,分别排序&…

12. ESP32-JSON(Arduino)

使用ESP32和Arduino框架处理JSON数据 在物联网(IoT)开发中,ESP32是一款功能强大的微控制器,它结合了Wi-Fi和蓝牙功能,适用于各种智能设备和传感器项目。JSON(JavaScript Object Notation)是一种…

C++三大特性之继承,详细介绍

阿尼亚全程陪伴大家学习~ 前言 每个程序员在开发新系统时,都希望能够利用已有的软件资源,以缩短开发周期,提高开发效率。 为了提高软件的可重用性(reusability),C提供了类的继承机制。 1.继承的概念 继承: 指在现有…

储能逆变器测试负载箱是如何实现的

储能逆变器测试负载箱是专门用于模拟各种负载条件的设备,主要用于对储能逆变器进行性能测试和评估。它可以根据实际需求,模拟不同的负载类型、负载大小和负载变化率,从而为储能逆变器的设计和优化提供准确的数据支持。那么,储能逆…

关于gitee上传成功没有绿点

今天上传完代码以后,打开gitee看了一下,但是看到昨天和今天都没有小绿点,仔细思考了一番,是仓库满了?不对啊,如果满了的话,上传就会失败啊,那这是什么问题呢? 原来是因为…

20240607在Toybrick的TB-RK3588开发板的Android12下适配IMX415摄像头和ov50c40

20240607在Toybrick的TB-RK3588开发板的Android12下适配IMX415摄像头和ov50c40 2024/6/7 11:42 【4K/8K摄像头发热量巨大,请做好散热措施,最好使用散热片鼓风机模式!】 结论:欢迎您入坑。 Toybrick的TB-RK3588开发板的技术支持不…

AlaSQL.js:用SQL解锁JavaScript数据操作的魔法

简介 先附上 github 地址 https://github.com/AlaSQL/alasql AlaSQL.js - JavaScript SQL database for browser and Node.js. Handles both traditional relational tables and nested JSON data (NoSQL). Export, store, and import data from localStorage, IndexedDB, or …

从零开始学JAVA

一、编写Hello world程序 public class JavaMain1 {//主程序执行入口,main方法public static void main(String[] args){System.out.println("Hello world!");} } 运行结果 Hello world! java编写主程序常见错误: 1、System ---首字母没有…

vue2+elementui,动态生成的表单校验

话不多,先上一段视频,看看是不是你们需要的效果 elementui动态生成表单校验 附上代码 <template><div class"home"><div class"home-box"><!-- <menuHtml></menuHtml> --><div class"home-div"><…

使用2个手机文件恢复工具,轻松找回文件

在这个智能手机横行的时代&#xff0c;手机已经成为我们生活中不可或缺的一部分。然而&#xff0c;就像生活中的一切事物一样&#xff0c;手机也有可能出现意外&#xff0c;比如文件丢失。这就像是你在超市购物&#xff0c;结果发现钱包不见了&#xff0c;那种感觉真是让人抓狂…

CTFHUB-技能树-web-web前置技能-HTTP协议全

目录 1.请求方式 2.302跳转 3.Cookie 4.基础认证 5.响应包源码 1.请求方式 curl -v -X http://challenge-3022c877a8dcedeb.sandbox.ctfhub.com:10800/index.php 2.302跳转 参考链接&#xff1a;http://t.csdnimg.cn/aqdNG 301——永久性重定向。该状态码表示请求的资源已…

攻防世界---misc---津门杯2021-m1

1、题目描述&#xff0c;下载附件是一张bmp格式的图片 2、直觉告诉我这和图片的颜色通道有关 3、于是我就尝试用stegslove打开图片 4、将颜色通道都改为0&#xff0c;点击preview 5、然后发现一串base64编码 6、解码得flag flag{l5DGqF1pPzOb2LU919LMaBYS5B1G01FD}

MyEclipse新手使用介绍

目录 1.MyEclipse诞生背景 2.作用 3.版本历史 4.优缺点 5.应用场景 6.如何使用 6.1.下载与安装 6.2.MyEclipse 菜单及其菜单项 7.创建和发布一个 Java 程序 7.1.创建 Java 程序 7.2.发布 Java 程序 8.示例 8.1. Hello World 示例 8.2. 简单Spring Boot 应用 8.3…

行心科技中禄松波携手,开启智能健康新时代

在2024年第34届健博会暨中国大健康产业文化节的盛大舞台上&#xff0c;广州市行心信息科技有限公司&#xff08;以下简称“行心科技”&#xff09;与浙江中禄松波生物工程有限公司&#xff08;以下简称“中禄松波”&#xff09;宣布达成战略合作&#xff0c;共同推动医康养产业…

【JavaEE精炼宝库】多线程(4)深度理解死锁、内存可见性、volatile关键字、wait、notify

目录 一、死锁 1.1 出现死锁的常见场景&#xff1a; 1.2 产生死锁的后果&#xff1a; 1.3 如何避免死锁&#xff1a; 二、内存可见性 2.1 由内存可见性产生的经典案例&#xff1a; 2.2 volatile 关键字&#xff1a; 2.2.1 volatile 用法&#xff1a; 2.2.2 volatile 不…

2024 年最新商家转账到零钱功能申请问题集中解答

鉴于诸多商户在申请商家转账到零钱时受到过时、错误经验文章的误导&#xff0c;基于我们数千次成功开通商家转账到零钱功能的丰富经验&#xff0c;特整理此篇文章&#xff0c;以期对新商户开通微信支付的商家转账到零钱功能提供有益帮助。以下将针对商家转账到零钱功能申请前、…

阿里云sls 采集日志安装记录

参考阿里云给的安装文档 阿里云安装Logtail组件 注意这里&#xff0c;选择地域&#xff0c;是中国地域选中国&#xff0c;海外选海外即可 按照文档继续下去 修改配置文件./alibaba-cloud-log-all/values.yaml 所有的操作完成后&#xff0c;去控制台配置 以上操作的前提是…

多目标应用:MOHHO多目标哈里斯鹰优化算法求解无人机三维路径规划(MATLAB代码)

详细介绍 多目标应用&#xff1a;MOHHO多目标哈里斯鹰优化算法求解无人机三维路径规划&#xff08;MATLAB代码&#xff09;-CSDN博客 一次运行结果 完整MATLAB代码

工会考试基础知识题库分享(附答案解析)

单选题 1、国家机关在组织起草或者修改直接涉及职工切身利益的法律、法规、规章时&#xff0c;( )工会意见。 A、可以听取 B、应当听取 C、必须听取 D、应当吸收 [答案]B 【解析】国家机关在组织起草或者修改直接涉及职工自身利益的法律、法规、规章时&#xff0c;应当听取工…