自定义RBAC(2)

news2024/11/15 2:11:10

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~

上一次把DAC、MAC、PBAC这三个都一口气介绍完了,本想一口气把RBAC也说完。想了想,饭还是要一口口吃,一次吃太多会消化不良,所以现在再来说下RBAC。

本来在RBAC和PBAC之间还有一个ABAC,就是Attribute-Based Access Control,基于属性的权限控制,它是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑),比如“允许所有住的远的员工有10分钟的弹性打卡时间”,这就是典型的ABAC,但业务系统不是考勤打卡,这种权限管理方式确实足够强大灵活,但却极其复杂,而且设计难、门槛高、应用少,所以除了在一些大的商用考勤系统中使用之外,几乎再也没有什么露脸的机会。因此这里也就不多说了。

所谓RBAC,是Role-Based Access Control的缩写,意思是基于角色的访问控制。这是迄今为止最为普及的权限设计模型:每个用户关联一个或多个角色,每个角色关联一个或多个权限,从而省去了每新增一个用户就要关联一遍所有权限的麻烦。

RBAC有几种扩展模式:

1、RBAC0:最基础的用户-角色-权限

2、RBAC1:增加角色继承特性

3、RBAC2:增加职责分离(互斥与约束)特性

4、RBAC3:增加组织、职位、用户组、对对象的控制特性

下面来一个个地看。

RBAC0:用户-角色-权限

 

RBAC0是最简单的一种权限系统,初创公司和少于100人的小公司,用这个差不多已经足够了。

接下来,

RBAC1 = RBAC0 + 角色继承

角色继承的意思并不是面向对象编程OOP的概念,而是角色所具备的权限的一种叠加的概念。它有两种继承方式:

1、一般继承:允许角色多重继承,即角色D既具有角色A,又具有角色B和C的权限,例如开发部经理,既有开发、测试、运维,可能还具有一定的产品、业务权限;

2、受限继承:角色只能单一继承,即角色C能且只能具有角色A或角色B的权限,例如对于一个财务部门的员工来说,会计或出纳的权限,只能二选一。

 

再接着,

RBAC2 = RBAC1 + 职责分离

职责分离意味着:

1、角色互斥:互斥角色是指各自权限互相制约的两个角色,同一用户只能分配到一组互斥角色集合中至多一个角色。比如财务部的用户就不能同时拥有会计和审核员这两个角色;

2、基数约束:用户可拥有的角色数量受限,角色被分配的用户数量受限,角色对应的权限数量也受限;

3、先决条件:用户在获得角色A的同时,必须先获得角色B。

通过增加config表来定义职责分离逻辑,业务代码读取config配置实现职责分离。

 

最后,

RBAC3 = RBAC2 + 用户组/组织机构

1、用户组:当用户基数增大,角色类型增多时,可能会有一部分人具有相同的属性。比如外卖送餐部门人数众多,如果一个个地授权,会非常麻烦。但是如果给这些员工创建一个用户组,员工加入用户组后,即可自动获取该用户组的所有角色,退出用户组,同时也撤销了用户组下的所有角色,无须再一个个手动管理;

2、组织机构:另一种分类方式,是通过将组织与角色进行关联,实现类似用户组的功能;

3、用户组-组织机构混合式:通过用户组实现对角色的整合,然后再按照组织机构的不同范围来查看数据。

 

RBAC3的应用就像这样:

 

到这里,RBAC的概念算是都讲完了,接下来,就该代码上场了。


感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

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

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

相关文章

Python | 今年世界杯哪个队最有可能夺冠?!

文章目录🏳️‍🌈 1. 数据🏳️‍🌈 2. 绘图2.1 绘制南丁格尔玫瑰图2.2 设置cloor_bar2.3 添加文字2.4 添加注释2.5 添加标题2.6 词云🏳️‍🌈 3. 更多可视化项目源码数据大家好,我是 &#x1f4…

Sqoop数据导出 第1关:Sqoop数据导出语法学习

为了完成本关任务,你需要掌握: 1、Sqoop 导出( export )的基本参数。 2、配置环境。 Sqoop 导出( export )的基本参数。 Sqoop 能够让 Hadoop 上的 HDFS 和 Hive 跟关系型数据库之间进行数据导入与导出,多亏了import和export这两个工具。本…

【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、序列-序列机制概述 Seq2Seq 是一个 Encoder-Decoder 结构的神经网络,它的输入是一个序列(Sequence),输出也是一个序列(Sequence)。在 Encoder 中,将可变长度的序列转变为固定长度的向…

【RCNN系列】Fast RCNN论文总结

目标检测论文总结 【RCNN系列】 RCNN Fast RCNN 文章目录目标检测论文总结前言一、Pipeline二、模型设计1.改进点2.RoI pooling layer3.Backbone初始化4.采样策略5.损失函数6.其他小细节三、总结前言 一些经典论文的总结。 一、Pipeline 利用Selective Search(比较…

Unity——通过点击鼠标进行场景切换

前记 通过点击按钮进行场景切换请参考: unity——通过点击按钮进行场景切换_行秋的博客-CSDN博客1.准备两个示例场景 2.点击File—>Build Settings...,将场景添加到视图中,点击Build。选择文件夹进行保存。(建议将文件打包到…

linux命令二

12.whoami,whereis,which,id //whoami:确认自己身份 //whereis:查询命令所在目录以及帮助文档所在目录 //which:查询该命令所在目录(类似whereis) //id:打印出自己的UID以及GID。(UID:用户身份唯一标识。GID:用户组身份唯一标识。每一个用…

程序人生——css绘制世界杯足球场

写在之前的话 花有重开日,人无再少年。 疯狂无大小,热爱即疯狂! 足球⚽️,是我大学时期的一门选修课,足球需要场地,场地绘制现在就开始!!! 四年一次的世界杯再卡塔尔进行…

电影院网站设计毕业设计,电影院网站的设计与实现,电影院售票系统源码毕设作品参考

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的电影院购票选座系统,整个网站项目使用了B/S架构,基于python的Django框架下开发;管理员通过后台录入信息、管理信息,设置网站信息,管理…

KBPC1010-ASEMI液压升降装置方案整流桥10A 1000V

编辑-Z KBPC1010在KBPC-4封装里采用的4个芯片,其尺寸都是100MIL,是一款10A 1000V液压升降装置方案整流桥。KBPC1010的浪涌电流Ifsm为200A,漏电流(Ir)为10uA,其工作时耐温度范围为-65~150摄氏度。KBPC1010采用光阻GPP芯片材质&…

用R语言模拟混合制排队随机服务排队系统

M / M / 1系统 该系统的基本参数:: 使用M / M / 1系统进行仿真非常简单 。 lambda <- 2 mu <- 4 rho <- lambda/mu # 2/4 ..例如&#xff0c; 可以快速可视化随时间变化的资源使用情况。在下面&#xff0c;我们可以看到仿真如何收敛到系统中理论上的平均客户数。 …

单点部署linux命令----linux命令 总结篇

java -jar XXX.jar nohup java -jar xxx.jar & nohup java -jar visual_map-1.0.0.jar >/log/log.txt 2>&1 & nohup java -jar visual_map-1.0.0.jar & nohup java -jar_C18298182575的博客-CSDN博客 java -jar后台启动的四种方式_普通网友的博客-CSD…

基于JavaWeb的大学迎新系统设计与实现(源码+数据库脚本+论文+开题报告)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

NLP命名实体识别

命名实体识别&#xff08;Named Entity Recognition&#xff0c; NER&#xff09;是指在文本中识别出特殊对象&#xff0c;如人、地点、组织机构等。 命名实体识别方法概述 基于规则的方法&#xff1a;利用专家手工制订的规则进行命名实体识别。举例&#xff1a;“赵某出生于…

【动态规划】独立任务最优调度问题

1.题目描述 2.算法思路 我认为做动态规划题的关键是找到一个合适的dp数组&#xff0c;确定它dp[i][j]的含义&#xff0c;用它和题目的最优子结构性质结合求解。具体思路如下&#xff1a; (笔记些许潦草hhh…) 1.dp[i][j]表示第i个作业在第j&#xff08;0-A,1-B&#xff09;台…

Keil setting issue

1, data type default issue caused enter “hard fault during debug” void HardFault_Handler(void) { /* if Hard Fault exception occurs, go to infinite loop */ if(CoreDebug->DHCSR & 1) {//check c DEBUGEN 1 -> Debugger connected __breakpoint(0); //…

小迪-day12(SQL注入简要概述)

1、相关sql函数、语句 1.1 count() 1.1.1 count(column_name) ​ count(column_name)是计算数据库表中指定列有多少行&#xff0c; ​ 例&#xff1a; SELECT COUNT(column_name) FROM table_name1.1.2 count(*) 可以计算表中有多少行&#xff08;有多少条数据&#xff0…

基于 docker 搭建 grafana+prometheus 监控资源之mysql+docker+alertmanager配置(二)(超详细版)

先去看第一篇&#xff08;基础部署篇&#xff09;&#xff0c;看完后&#xff0c;才能接上本篇。 基于 docker 搭建 grafanaprometheus 监控资源之mysqldockeralertmanager配置&#xff08;二&#xff09;环境信息服务基本信息一、安装Mysqld_exporter1.1 标准启动1.2 docker-c…

1554_AURIX_TC275_时钟监控功能以及时钟紧急行为

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这部分还是前面CCU寄存器的一些延续&#xff0c;寄存器支持模块的禁用、禁用状态的查询以及是否支持休眠的控制。 1. 时钟监控是时钟进行安全设计需要考虑的一个手段&#xff0c;支持两种锁…

历史性突破,200层以上存储芯片率先量产,领先国外芯片巨头

近日&#xff0c;中企芯片技术迎来历史性突破&#xff0c;200层以上存储芯片率先量产&#xff0c;领先国外存储芯片巨头&#xff0c;或将成为全球行业领导者。后起之秀&#xff0c;鱼跃龙门 众所周知&#xff0c;存储芯片的生产&#xff0c;不仅需要高端技术&#xff0c;还需要…