权限系统模型:RBAC模型与ABAC模型

权限系统

基于角色的访问控制(RBAC

基于角色的控制访问(Role-Based Access Control,简称 RBAC),即:给予该账号角色(Role),授权角色对应的相关权限,实现了灵活的访问控制,相比直接授予用户权限,更加简单、高效、可扩展。

如下图:

img

图片来源自:Apache Directory

当使用RBAC模型时,需要分析该用户的具体使用情况,确认他的职责以及需求,然后基于共同的职责及需求分配不同的角色,属于一种用户->角色->权限的关系,这样的话就可以减去操作单个用户权限的繁琐操作,用户直接从角色中获取所需要的权限。

通过RBAC模型,当存在多个用户存在相同权限时,只需要创建好与权限相对应的角色即可,分配给这一批用户,以后修改角色的权限,就会自动的修改角色内的所有用户的权限。

例如数据库:MongoDB便是采用的RBAC模型,对数据库的操作都划分成了权限(MongoDB权限文档)

权限标识权限说明
find具有此权限的用户可以运行所有和查询有关的命令,如:aggregate、checkShardingIndex、count等。
insert具有此权限的用户可以运行所有和新建数据有关的命令:insert和create等。
collStats具有此权限的用户可以对指定database或collection执行collStats命令。
viewRole具有此权限的用户可以查看指定database的角色信息。

基于这些权限,MongoDB提供了一些预定义的角色(MongoDB预定义角色文档,而且你还可以进行自定义角色):

角色findinsertcollStatsviewRole
read
readWrite
dbAdmin
userAdmin

最后授予用户不同的角色,就可以实现不同粒度的权限划分。

以上基本上RBAC模型的核心设计(RBAC Core)。而基于核心概念之上,RBAC规范了还提供了扩展模式。

角色继承(Hierarchical Role

img

带有角色继承的RBAC,图片来源自:Apache Directory

听到继承,我会想到Java中的继承,感觉其实RBAC中的继承和Java中的也是大差不差的。在RBAC中,角色可以继承于其他角色,这样就会拥有其他角色权限,而且还可以关联额外的权限。这种设计可以给角色分组和分层,一定程度简化 了权限的管理工作。我个人对此的比如我有上级AB,上级A是上级B的上级,如果他们职责几乎完全相同,那么上级A一定会有上级B的权限,这样可以理解为上级A继承于上级B,这样就会拥有他的所有权限,然后根据自己的身份再确定额外的权限。

职责分离(Separation of Duty

为了避免用户拥有过多权限而产生的冲突,比如一个球员同时拥有裁判的权限,那么在比赛的时候不无敌了,另一种职责分离扩展版的RBAC被提出。

职责分离有两种模式:

  • 静态职责分离(Static Separation of Duty):即用户不能被赋予有冲突的角色,比如球员和裁判。

img

静态职责分离,图片来源自Apache Directory

  • 动态职责分离(Dynamic Separation of Duty):用户在一次会话中,不能同时激活自身所拥有的所拥有的、互相有冲突的角色,只能选择其一,比如在足球比赛中,你只能选择球员或者裁判其中一种身份。

img

动态职责分离,图片来自Apache Directory

基于属性的访问控制(ABAC

基于属性的控制访问(Attribute-Based Access Control,简称 ABAC)是一种比RBAC模型更加灵活的授权模型,即:通过各种属性来动态判断某个操作是否被允许。这个模型在云系统中使用的比较多,例如AWS,阿里云等。

考虑下面场景的权限控制:

  1. 授权某个人可以编辑某篇文章的权限
  2. 开发文档的所属部门与用户的部门相时,用户可以访问这个文档
  3. 公司9:00进行打卡,但有的部门是9:30进行打卡,不允许该部门9:00之前进行打卡
  4. 除了某地区外的用户可以观看到此条视频
  5. 在某某时间前创建的订单,我可以进行操作

可以发现上述厂家很难通过RBAC模型进行一个实现,因为他们没有具体的身份,只能描述该身份可以操作的事物,操作的一些条件和数据是没有办法进行限制的,但上述是某个操作规划了某些条件的权限。但这确实ABAC模型的长处,ABAC模型的思想是基于用户、访问的数据的属性、以及各种环境因素区动态计算用户是否有权限进行操作。

ABAC模型的原理

ABAC模型中,某些操作是否被允许是基于对象、资源、操作和环境信息共同计算决定的。

  • 对象:对象即当前访问的用户。用户的属性包括ID,个人资源,角色,部门和组织成员身份等。
  • 资源:资源即当前用户需要访问的资产或者对象,例如:文件,数据,服务器,API等
  • 操作:操作即用户对资源进行的操作。常见的操作包括“读取”,“写入”,“编辑”,“复制”和“删除”
  • 环境:环境是每个访问请求的上下文。环境属性包含访问的时间,位置,设备,通信协议,加密强度等

转转新权限系统的设计思想

RBAC模型已经满足了大部分的场景业务,开发成本也远低于ABAC模型的权限系统,转转此次新权限系统选择基于RBAC模型来实现。

标准的RBAC模型是完全遵从的用户->角色->权限的链路,也就是用户的权限完全由他所拥有的角色来控制,但是这样给用户加权限的效率比较低,所以转转在RBAC模型的基础商,新增了给用户直接添加权限的能力,个人理解就是在角色的基础上,扩展了一个可以单独加权限的操作。最终用户的权限是根据所拥有角色权限和独立新增权限组合而成。

新权限系统的权限模型:用户最终权限 = 用户拥有的角色带来的权限 + 用户独立配置的权限,两者取并集。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【GNN 1】PyG实现图神经网络,完成节点分类任务,人话、保姆级教程

我们来做一个节点分类的任务,选择的数据集是Karate Club,Karate是空手道的意思,所以这就是一个空手道俱乐部的数据。 简而言之,这个数据集,包含34个节点,156条无向无权边,结点总共分为4类&…

SQL-DCL-如何用户管理,如何给用户权限?

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

【一周安全资讯0106】国家标准《信息安全技术 网络安全信息报送指南》正式发布;全球1100万SSH服务器面临“水龟攻击”威胁

要闻速览 1、国家标准GB/T 43557-2023《信息安全技术 网络安全信息报送指南》发布 2、《未成年人网络保护条例》元旦起施行 织密未成年人网络保护立体“安全网” 3、深圳证监局:证券期货经营机构应建立健全网络安全应急处置机制 4、黑客大规模恶意注册与ChatGPT相似…

创建一个简单鸿蒙app项目

文章目录 前言TypeScript 基础类型创建一个鸿蒙app总结 一、前言 鸿蒙系统上的开发已经是趋势了,必须紧跟时代的潮流。先简单了解下鸿蒙系统中,我们开发一个app需要用到的语言,那么就是TypeScript。这篇文章主要讲的就是一些基础的语法。最…

mysql数据库被黑恢复—应用层面delete删除---惜分飞

客户的mysql被人从应用层面攻击,并且删除了一些数据,导致业务无法正常使用,通过底层分析binlog确认类似恢复操作 确认这类的业务破坏是通过delete操作实现的,客户那边不太幸,客户找了多人进行恢复,现场严重破坏,老库被删除,并且还原了历史的备份文件(非故障第一现场),通过底层…

adrv9009使用记录

这里写自定义目录标题 1.首先下载cygwin,CSDN可以直接搜索,按照对应的安装就可以,最后记得加一个make安装包,不然在make时候会导致指令不存在 2.下载完成之后,去adi官网找到对应版本的adrv9009工程 我得电脑是2018.3&a…

2024年第十届控制、自动化与机器人国际会议(ICCAR 2024)即将召开!

2024年4月27~29日 新加披 会议官网:10th-ICCAR 2024https://iccar.org/index.html 第十届控制、自动化和机器人国际会议将于2024年4月27-29日在新加坡举办。本次会议由新加坡电子学会,IEEE机器人和自动控制协会和IEEE联合主办,并得到北京航空…

《SPSS统计学基础与实证研究应用精解》视频讲解:SPSS调查问卷获取数据的流行操作

《SPSS统计学基础与实证研究应用精解》1.3 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解1.3节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。本书旨在手把手教会使…

行为型设计模式——观察者模式

观察者模式 观察者模式也不难,这个模式用大白话将就是若干个观察者类都订阅一个发布类(被观察者类),当发布者需要发表消息的时候,观察者都能够收到消息。**定义:**又被称为发布-订阅(Publish/S…

Making Large Language Models Perform Better in Knowledge Graph Completion

Making Large Language Models Perform Better in Knowledge Graph Completion 基本信息 博客贡献人 鲁智深 作者 Yichi Zhang, Zhuo Chen, Wen Zhang, Huajun Chen 隶属于浙江大学计算机学院和软件学院 摘要 本文主要探讨了如何将有用的知识图谱结构信息融入大语言模型中…

线性布局(Row/Column)

目录 1、概述 2、基本概念 3、布局子元素在排列方向上的间距 3.1、Column容器内排列方向上的间距 3.2、Row容器内排列方向上的间距 4、布局子元素在交叉轴上的对齐方式 4.1、Column容器内子元素在水平方向上的排列 4.2、Row容器内子元素在垂直方向上的排列 5、布局子元…

Sam Altman 与同性男友结婚;传微软正讨论亚洲研究院去留丨 RTE 开发者日报 Vol.125

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

Python实现简易版选课系统

嗨喽,大家好呀~这里是爱看美女的茜茜呐 需求 学生选课系统: 学生 信息:学号,姓名,住址,选的课程列表 功能: 查看:查看该学生所有课程添加课程:把选好得课程添加到课程列…

Python数据分析案例31——中国A股的月份效应研究(方差分析,虚拟变量回归)

案例背景 本次案例是博主本科在行为金融学课程上做的一个小项目,最近看很多经管类的学生作业都很需要,我就用python来重新做了一遍。不弄那些复杂的机器学习模型了,经管类同学就用简单的统计学方法来做模型就好。 研究目的 有效市场假说是现…

基于ssm社区医疗保健监控系统+vue论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统社区医疗保健信息管理难度大,容错率低&#x…

生成式人工智能研究焦点:揭秘基于扩散的模型

生成式人工智能研究焦点:揭秘基于扩散的模型 文章目录 生成式人工智能研究焦点:揭秘基于扩散的模型去噪扩散是什么让扩散发挥作用?采样生成图像的设计选择以更少的步骤理顺流程在低噪音水平下步骤高阶求解器可实现更准确的步骤训练降噪器的设…

Lagrange对偶法

这里写自定义目录标题 5.1.1 The Lagrangian5.1.2 The Lagrange dual function5.2 The Lagrange dual problem5.2.3 Strong duality and Slater’s constraint qualification5.2.3 Strong duality and Slater’s constraint qualification5.5.3 KKT optimality conditions Lagr…

C 语言每日一题——旋转数组的最小数字

一、题目内容 提供一下该OJ题的链接:旋转数组的最小数字_牛客题霸_牛客网 (nowcoder.com) 二、题目分析 通过示例1可知,我们写代码的目的是在数组中找到一个最大值,并且返回来; 我们很容易的会想到创建一个变量:int…

天软特色因子看板 (2024.1 第6期)

该因子看板跟踪天软特色因子A04001(当日趋势强度),该因子为反映股价走势趋势强弱,用以刻画股价走势趋势强弱,abs(值)越接近1,趋势 性越强,符号代表涨跌方向。 今日为该因子跟踪第6期,跟踪其在SW801040 (申万…

深入理解UML中的继承关系

深入理解UML中的继承关系 在面向对象的设计中,继承关系是构建清晰、可维护系统的关键。统一建模语言(UML)提供了一种标准化的方法来可视化这些关系。本文将深入探讨UML中的继承关系,并探讨它如何在代码中体现。 什么是继承关系&a…