首页 > 其他分享 >【阅读笔记】RBAC(Role-Based Access Control)模型

【阅读笔记】RBAC(Role-Based Access Control)模型

时间:2024-04-10 11:33:59浏览次数:16  
标签:Control RBAC Based 许可 角色 访问控制 模型 Access 权限

摘自:《凤凰架构:构建可靠的大型分布式系统》周志明 著

使用访问控制模型的目的

所有的访问控制模型,实质上都是在解决同一个问题:“谁(User)拥有什么权限(Authority)去操作(Operation)哪些资源(Resource)。”

如果某个系统涉及成百上千的资源,又有成千上万的用户,若要为每个用户访问每个资源都分配合适的权限,必定导致巨大的操作量和极高的出错概率,这也正是RBAC所关注的问题之一。

建立访问控制模型的基本目的是管理垂直权限和水平权限。垂直权限即功能权限,譬如前面提到的审稿编辑有通过审核的权限、开发经理有代码提交的权限、出纳有从账户提取资金的权限,这一类某个角色完成某项操作的许可,都可以直接翻译为功能权限。由于实际应用与权限模型具有高度对应关系,将权限从具体的应用中抽离出来,放到通用的模型中是相对容易的,Spring Security、Apache Shiro等权限框架就是这样的抽象产物,大多数系统都能采用这些权限框架来管理功能权限。
与此相对,水平权限即数据权限,但管理起来要困难许多。譬如用户A、B都属于同一个角色,但它们各自在系统中产生的数据完全有可能是私有的,A访问或删除了B的数据也照样属于越权。一般来说,数据权限是很难抽象与通用的,仅在角色层面控制并不能满足全部业务的需要,很多时候只能具体到用户,甚至要具体管理到发生数据的某一行、某一列之上,因此数据权限基本只能由信息系统自主完成,并不存在能放之四海皆准的通用数据权限框架。

RBAC模型的思路

为了避免对每一个用户设定权限,RBAC将权限从用户身上剥离,改为绑定到“角色”(Role)上,将权限控制变为对“角色拥有操作哪些资源的许可”这个逻辑表达式的值是否为真的求解过程。

许可是抽象权限的具象化体现,权限在RBAC系统中的含义是“允许何种操作作用于哪些资源之上”,这句话的具体实例即为“许可”。

提出许可这个概念的目的其实与提出角色的目的是完全一致的,只是更为抽象。角色为的是解耦用户与权限之间的多对多关系,而许可为的是解耦操作与资源之间的多对多关系。

RBAC模型的作用

采用RBAC不仅是为了简化配置操作,还天然地满足了计算机安全中的“最小特权原则”(Least Privilege)。在RBAC模型中,角色拥有许可的数量是根据完成该角色工作职责所需的最小权限来赋予的

RBAC还允许对不同角色之间定义关联与约束关系,进一步强化它的抽象描述能力。

 

Spring Security也参考了(但并没有完全遵循)RBAC来设计它的访问控制功能。在Spring Security的设计里,用户和角色都可以拥有权限,譬如在它的HttpSecurity接口就同时有hasRole()和hasAuthority()方法。Spring Security的访问控制模型如下图所示

 

标签:Control,RBAC,Based,许可,角色,访问控制,模型,Access,权限
From: https://www.cnblogs.com/onejay/p/18125690

相关文章

  • 2023 NIPS A*Net: A Scalable Path-based Reasoning Approachfor Knowledge Graphs 知
    文章链接原文:b9e98316cb72fee82cc1160da5810abc-Paper-Conference.pdf(neurips.cc)代码:https://github.com/DeepGraphLearning/AStarNet一、动机与贡献为了使路径推理方法适用于大规模图上的归纳推理任务,文章改进了路径信息获取的方法。路径推理方法较好的归纳推理能力......
  • Verification -- Basic Concepts ~ 5. Assertion Based Verification
    AssertionBasedVerification基于断言的验证(ABV)是一种将断言用作验证数字设计正确性的主要手段的技术。断言是描述在设计中必须始终为真的条件的语句,通常使用硬件描述语言(如SystemVerilog或VHDL)编写。ABV背后的基本思想是结合使用功能和形式验证设计是否满足其功能要求。Sy......
  • Web应用安全现状(包含Injection、File System Traversal、Broken Access Control攻击介
    目录1、Web应用安全现状1.1Web应用发展历程1.2Web应用安全1、Web应用发展历程早期的WWW网,用户通过Web浏览器,相关信息流仅由服务器向浏览器单向传送。多数站点并不验证用户的合法性,因为根本没有必要这样做;所有用户同等对待,提供同样的信息。如今的万维网与早期的万维网......
  • ACCESS TreeView控件的使用
    一.在窗体的设计模式下,选择ActiveX控件,然后找到 MicrosoftTreeViewControl6.0(SP6),确定 二.数据表的设计.重点在处理NodeID与ParentNodeID这两个字段的关系上.  三.TreeView数据的加载.下图是TreeView控件的所有事件.可以看到它本身是没有专用的加载事件的.需要在......
  • sd+ebsynth_utility扩展+controlNet实现视频换风格
    1.安装sd,安装EbSynth(https://ebsynth.com/)2.安装扩展:https://github.com/Mikubill/sd-webui-controlnethttps://github.com/s9roll7/ebsynth_utility3.下载模型基础模型选用c站:https://civitai.com/models/104100?modelVersionId=155254 下载放置sd扩展path/to......
  • Firefox火狐浏览器控制台,提示:已拦截跨源请求:同源策略禁止读取位于 http://127.0.0.1
    前言全局说明Firefox火狐浏览器控制台,提示:已拦截跨源请求一、火狐官方说明https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin?utm_source=devtools&utm_medium=firefox-cors-errors&utm_campaign=default二、修改浏览器方法[原文......
  • 记一次DataAccessException在代码中的处理
    有一天代码评审的时候发现我很多sql都会有一句抛异常DataAccessException。然后就这个异常跟我进行讨论,我觉得很多sql都会出现查不到数据的情况。一般来说表名不存在会抛这个异常。但是其实我们最开始就运行了建表语句,并且不是天表。所以并不会出现这种情况。因此特地查询了......
  • 【计算机控制网络 Computer Control Network】组网设计作业 Enterprise Network Desig
    一、说明1、仅为本人的作答,非标准答案;2、题目版权归校方和教授所有。二、题目描述p1:p2:三、完整作答p1:p2:p3:p4:p5:p6:p7:p8:p9:p10:p11:p12:p13:p14:p15:p16:p17:p18:p19:......
  • Prompt Perturbation in Retrieval-Augmented Generation based Large Language Model
    本文是LLM系列文章,针对《PromptPerturbationinRetrieval-AugmentedGenerationbasedLargeLanguageModels》的翻译。基于大语言模型的检索增强生成中的提示扰动摘要1引言2相关工作3梯度引导的提示扰动4对抗性前缀的检测5实验6结论摘要随着大型......
  • Avalonia的模板控件(Templated Controls)
    在Avalonia的UI框架中,TemplatedControl是一个核心组件,它提供了一种强大的方式来创建可重用且高度可定制的控件。本文将深入探讨TemplatedControl的概念、其带来的优势以及它在实际开发中的应用场景,并通过一个示例代码来展示其用法。什么是TemplatedControlTemplatedControl是Av......