访问控制、RBAC和ABAC模型

news2024/11/26 11:43:29

访问控制、RBAC和ABAC模型

访问控制

访问控制的目的是保护对象(数据、服务、可执行应用该程序、网络设备或其他类型的信息技术)不受未经授权的操作的影响。操作包括:发现、读取、创建、编辑、删除和执行等。

为实现访问控制, 计算机安全架构师定义了访问控制机制ACM(Access Control Mechanism)通过各种方法来前置执行应用于受保护对象的访问控制策略。ACM的定义如下: 用于接收来自主体的访问请求、决定和强制执行访问决策的组件。

ACM的实现主要涉及以下模型:

  1. DAC(Discretionary Access Control)自由/自主访问控制, 保护对象的所有者拥有对象和运行程序的全部控制权,所有者包括所有者及其运行的程序。

比如 用户可以删除自己的订单,将订单信息开放出去。

  1. MAC(Mandatory Access Control)强制访问控制,由管理员管理访问控制、指定访问策略,用户无法改变。

比如 安全访问等级中的密级概念,一般<秘密<机密<绝密。 对应的密级有事先确定、必须执行的安全策略,即使是数据的所有者也无法改变。

  1. IBAC/ACL(Identity Based Access Control/Access Control Lists): 随着网络的发展,受保护对象可以被更多的用户所访问,IBAC基于身份的访问控制使用访问控制列表来定义对象授予访问用户的权限。ACL中保存访问主体的凭证及对应的操作。

比如 Linux文件或目录的ACL形式如下:

user::rwx

group::---

other::---

//指定哪些用户、组、对该文件或目录具备的操作权限。

在IBAC模型中, 授权决策在任何特定的访问请求之前作出,并添加到ACL中。ACL中的策略是静态的,需要通过一个过程来重新评估ACL中的内容,对ACL重的对象进行移除等。否则会导致用户权限的累积。

  1. RBAC(Role Based Access Control):基于角色的访问控制,详细内容见下章。随着RBAC规范的流行,是的可以对访问控制进行集中管理,减少了对ACL的需求(ACL是作用在受保护对象)
  2. ABAC (Attribute Based Access Control):基于属性的访问控制。基于请求主体的属性,请求对象的属性,环境条件和一系列针对这些属性和条件配置策略来实现的访问控制方法。

RBAC

RBAC背景

基于角色的访问控制(RBAC)的概念始于20世纪70年代开创的多用户和多应用程序在线系统。RBAC的核心概念是权限与角色相关联,用户被分配给适当的角色。这大大简化了权限管理。角色是为组织中的各种工作职能创建的,用户根据其职责和资格分配角色。用户可以轻松地从一个角色重新分配到另一个角色。随着新的应用程序和系统的加入,可以向角色授予新的权限,并且可以根据需要撤销角色的权限。

  1. 1992年15th Natinal Computer Security Conference(NCSC), David Ferralolo(NIST),Richard Kuhn(NIST)提出Role-Baseed Accessed Controls

  1. 1996年 RS Sandhu、EJ Coyne、HL Feinstein、CE Youman (1996),基于角色的访问控制模型,IEEE Computer 29(2),提出RBAC模型-RBAC96

  1. 现行标准(2012)INCITS 359-2012,信息技术——基于角色的访问控制 (2012 年 5 月 29 日)

相关信息见

https://csrc.nist.gov/projects/role-based-access-control

https://csrc.nist.gov/CSRC/media/Projects/Role-Based-Access-Control/documents/sandhu96.pdf

RBAC96模型

RBAC96定义了一系列4个模型:RBAC0,RBAC1,RBAC2,RBAC3。 RBAC0为最底部的基本模型, RBAC1和RBAC2分别基于RBAC0添加了特性,而RBAC3则等于RBAC1+RBAC2。四者之间的关系:

图一 RBAC96模型关系

图二 RBAC模型图

RBAC0

RBAC0基础模型核心是一个<U(User),R(role),P(permission)>的三元组。通过S(Seesion)来体现User和Role关系的一个活跃状态。

User 用户的概念是人、应用、机器人、固定计算机,甚至计算机网络。可以先简单理解为人。

Role: 组织内的一种工作职能或职务名称

Permission: 权限是对访问系统中一个或多个对象的操作的批准,权限是一个非常灵活的概念,比如授权、访问权、特权等都是。权限的实现是具体系统相关的,可能是特定部门的文件的读取,可能是多个对象相关的,某个功能的操作许可等。权限的设计决定了系统控制的粒度、灵活性等。以数据为例,限定保护对象可以从全量数据、某条数据的粗粒度到字段的细粒度。

RBAC0中 UR和RP之间的关系都是多对多的关系,Session的概念就是当用户拥有多个角色时,体现当前激活角色的上下文含义, 不同的Session可能激活不同的某个或多个角色从而拥有角色对应的权限。

注 RBAC0中的Session概念类似于Web应用中的用户登录Session概念, 如果设计上将RBAC0-Session等同于Web 用户登录Session,则一个用户登录的Session代表着一个RBAC Session。也可以将RBAC-Session设计为用户Session下一级Session,比如一个用户登录Session中可以同时打开多个RBAC Session(不同窗口的形式),这样用户可以在一个会话登录中同时处理多个RBAC会话,而无需进行切换。

    一个RBAC Session中可以激活单个角色或多个角色。

RBAC1

RBAC1模型基于RBAC0引入角色层次结构。角色的继承代表权限的继承,权限的继承是可传递的,如角色A是B的上级角色, B是C的上级角色,则角色B集成角色C的权限,而角色A也同样集成角色C的权限。

用户会话的权限是直接分配给会话角色的权限以及分配给这些角色的下级角色的权限。

角色继承可以设计约束: 比如限制继承的范围,(类似权限加上修饰符protected,private),有些权限可以被继承,而有限不被继承。角色预先定义等级、排他性等约定,避免同级继承、互斥角色继承等。

RBAC2

RBAC2模型在RBAC0模型的基础上引入了约束的概念。约束本身就是安全管理的主要目的。如:某一个人不被允许担任两个相互分离的角色对应职责分离的原则,用户不能被他同事赋予互斥的角色, 比如审计人员和被审计人员。

约束作用于RBAC模型中的所有元素,如User、 Role、 Permission 、 UA(用户角色分配)、PA(权限角色分配)、Session。

常见的约束示例如下:

  1. 同一用户不可同时分配互斥角色
  2. 角色用户数量限制:比如主席只有一个, 副主席可以多个
  3. 一个用户允许拥有的最多角色数量
  4. 先决条件角色:角色对用户的成员资格的要求,比如主席只能从副主席中选出来
  5. 层次上的约束,如初级角色的权限也必须分配给所有高级角色,或者是用户属于高级角色则也必须属于初级角色等。
  6. 约束同样可以作用再回话上,比如用户能不能同时在两个角色中活动,限制用户可以激活的会话个数等。
RBAC3

RBAC1+RBAC2。

ARBAC

在RBAC模型上补充了RBAC的管理模式:

图三 ARBAC示意图

《The ARBAC97 Model for Role-Based Administration of Roles》定义以下管理模式:

  1. URA97:  User和Role的分配管理
  2. PRA97: Role和Permission的分配管理
  3. RRA97: Role和Role之间的管理。

URA97和PRA97定义了最基本的UR分配和RP分配, RRA97根据实际实施需要定义了三种类型的角色:

  1. Abilities: 功能角色, 该类型角色只能与权限或者是其他Abilities之间建立成员关系
  2. Groups: 用户组角色,该类型角色只能与用户或其他用户组之间建立成员关系
  3. UP-Roles: 没有限制的角色, 该角色可以和成员、权限、groups、 ablilities和其他UP-roles建立关系。

Abilities表现的是对权限的管理,如权限包的概念,某一些权限需要以集合为最小单元进行分配才能满足实际业务需求,如订单业务涉及商品查看、订单编辑、库存检查等很多相关的权限。而Groups相应表现为对用户的分类管理,比如某一类用户需要作为一个整体分配给某个角色。

Abilities和Groups本身是对权限和用户单独管理的需求,将其定义为角色的某一种类型,结合角色继承和约束统一纳入到RBAC模型中。为UP角色分配能力(abilities)等同于使UP-Roles中的角色成为Abilities中的角色的直接上级,这样UP-Roles角色中的用户就具备了Abilities角色的权限。而将一个团队分配给UP-Roles等同于将UP-Roles中的角色作为Groups中角色的直接下级,这样Groups中的用户就具备了UP-Roles的中关联的权限。

如有采购角色对应了采购人员和采购权限, 而当审计人员需要具备拥有采购权限进行信息查看是,一种直观的方式是直接将审计人员加入采购角色,另外则是定义专门的采购审计角色,只针对审计人员进行管理,不需要针对审计角色进行权限的分配,而是将采购审计角色继承为采购角色的上级集成。

ABAC

ABAC(Attribute Based Access Control)基于请求主体,请求对象的属性,环境条件和基于这些属性和条件配置的访问策略来实现的访问控制方法。

ABAC中的属性是主体、对象或则环境条件的特性,属性通常是键值对的形式存在。

主体:放出访问请求以对对象进行执行操作。

对象:可以是系统资源,如文件、记录、表、进程、网络等,可以由主体进行操作的对象,包括数据、应用程序、服务、设备和网络。

操作:根据主体请求对对象执行的函数。包括读、写、编辑、删除、复制、执行和修改等。

策略:规则或则关系的标识,基于主体、对象和环境条件的属性值决定是否允许请求的访问。

环境条件: 访问请求发生的操作或情境上下文。环境条件是可检测的环境特征,独立于主体或对象,比如时间、地点、当前威胁级别。

可以将RBAC或则ACLs认为是ABAC的特定场景:基于访问主体、目标对象的角色属性来进行访问控制。

图四 企业级ABAC访问控制示意图

ABAC主要包括核心组件:

Subject Attribute Repository主体属性仓库。

Object Attribute Repository: 对象属性仓库。

Local Access Control Policy Repository: 访问控制策略仓库。

ABAC ACM策略执行引擎,基于主体、对象、环境条件相关的属性值,执行预先定义的访问控制策略以控制对目标对象的访问。

微服务中的访问控制和授权

微服务中,授权服务通常作为用户管理的一部分存在,提供关于用户、角色以及权限关系的管理功能。

授权(访问规则执行)通常和认证服务一起在网关节点中进行执行,在用户成功认证后以过滤器模式或AOP切面的方式实现,在请求处理之前进行访问控制校验,通过授权服务获取用户的角色信息以及角色先关的权限配置,针对当前请求进行校验或则将权限配置转换为对应的请求参数,如角色中只允许查看用户创建的表单转换为查询创建者为当前用户的表单查询参数。 具体转换依据实现如SQL、ES等。

    授权可以基于Spring Security框架的授权API和注解编程实现,但需要在请求处理方法上进行相应的配置,更常见自主实现访问控制检查,将请求及用户信息映射为权限信息与当前用户的角色权限进行比对,如将请求URL映射为某个功能来检查等。

    用户、角色、权限以及三者之间的关系可以使用本地缓存或redis缓存提升访问控制性能。使用缓存是需要仔细考虑和实现刷新机制,避免错误。

总结

ABAC 的思想基于属性的、可扩展的、可灵活定制的一种访问控制规则引擎、类似如groovy、drools、js等执行引擎可以作为规则引擎的一种实现方式。而基于关系型数据库的数据控制可以将访问策略转换为SQL的属性查询条件, 如对象A的创建者可读策略对应的检查条件可能为:where A.creatorId=Subject.id。

RBAC模型是项目实施中的访问控制主流模型,实施中通常是基于RBAC进行访问控制管理,基于用户所分配的角色,及给角色分配的权限进行访问控制,这其中可以将角色定义为关键属性输入,实际的访问控制还会在数据上定义用于数据权限校验的属性: 如数据的创建者、数据所属团队、数据所属公司等属性,并同时将这些属性规则绑定到角色上。可以将ABAC模型属性以及基于属性的控制等相关理念作为RBAC的补充,应用到特定业务数据的权限控制以满足实际业务需求。

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

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

相关文章

第二阶段第二章——数据库SQL

到这里就是属于原有的知识的扩充了。、 发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发…

CentOS 7 安装 JDK11(注意版本号要与自己的版本一致)

查看是否有自带的 JDK java -versionrpm -qa | grep jdk卸载自带 JDK rpm -e --nodeps [name] # 如 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64查看自带 JDK 是否卸载干净 java -versionrpm -qa | grep jdk在 oracle 官网下载自己所需 JDK 版本&#x…

JavaEE平台技术——MyBatis

JavaEE平台技术——MyBatis 1. 对象关系映射框架——Hibernate、MyBatis2. 对象关系模型映射3. MyBatis的实现机制4. MyBatis的XML定义5. Spring事务 在观看这个之前&#xff0c;大家请查阅前序内容。 &#x1f600;JavaEE的渊源 &#x1f600;&#x1f600;JavaEE平台技术——…

Mythical Beings里的DAO治理指南——Mythical DAO使用方法浅析

DAO(Decentralized Autonomous Organization)去中心化自治组织,正在成为Web3世界的重要组织和治理形式。通过区块链和加密通证等技术实现transparent、inclusive的社区自治。Mythical Beings游戏也推出了Mythical DAO,帮助玩家社区自治。本文主要介绍当前热门的DAO治理工具,以及…

行政处罚有哪些?

一、行政处罚的定义 行政处罚&#xff0c;是指行政机关依法对违反行政管理秩序的公民、法人或者其他组织&#xff0c;以减损权益或者增加义务的方式予以惩戒的行为。这是首次以立法的形式明确“行政处罚”的定义。 二、行政处罚与行政处分的区别 行政处分是指国家行政机关对其…

分布式系统之BASE理论

BASE理论是对分布式系统设计和处理的一种理论指导&#xff0c;相对于ACID&#xff08;原子性、一致性、隔离性和持久性&#xff09;这一强一致性模型&#xff0c;BASE更强调在分布式系统中牺牲强一致性以获得可用性和性能的平衡。 BASE理论的核心概念包括&#xff1a; Basica…

用了这款工具,让我效率提升了80%

目录 一、写在前面 二、优势 三、主要功能点 四、低代码归根结底差不多 五、小结 一、写在前面 低代码开发平台&#xff0c;一个号称能在几分钟的时间里开发出一套公司内部都可使用的应用系统开发工具。很多人或许都隐隐听说过低代码&#xff0c;因为低代码不仅远名国外&#x…

FastGPT | 3分钟构建属于自己的AI智能助手

这是一篇使用指南&#xff01;&#xff01;&#xff01; FastGPT是什么&#xff1f; FastGPT 是一个基于 LLM 大语言模型的知识库问答系统&#xff0c;提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排&#xff0c;从而实现复杂的问答场景&…

DASCTF X CBCTF 2023|无畏者先行

前言 笔者没有参加此次比赛&#xff0c;由于团队后面会复现此次比赛&#xff0c;所以笔者在此进行复现记录。 EASYBOX 考点&#xff1a;命令执行&#xff1f; 栈溢出 附件给了 docker 环境&#xff0c;可以直接在本地复现&#xff0c;但是 docker 我不会调试&#xff0c;幸…

视频号提取视频工具,使用教程合集

第一步&#xff1a; 点击关注公众号下方菜单&#xff0c;视频下载-【视频号提取视频工具】&#xff0c;长按识别二维码&#xff0c;添加视频下载小助手为好友。 没有关注的可以&#xff0c;点击下载关注一下 第二步&#xff1a; 选择你要下载的视频&#xff0c;找到转发图标…

AD教程 (八)器件的复制和对齐

AD教程 &#xff08;八&#xff09;器件的复制和对齐 设置原理图工作区域 设置Sheet Size&#xff0c;将A4改为A3&#xff0c;增大原理图区域 按照原理图布局大致排布元件 框选需要复制的元件&#xff0c;按住Shift即可复制元件并拖动到合适的位置。如果元件需要对齐&#xf…

JUC-3-并发锁

一 JAVA 多线程锁介绍 1 悲观锁 定义&#xff1a;悲观锁指对数据被外界修改持保守态度&#xff0c;认为数据很容易就会被其他线程修改&#xff08;很悲观&#xff09;&#xff0c;所以在数据被处理前先对数据进行加锁&#xff0c;并在整个数据处理过程中&#xff0c;使数据处…

seata事务回滚引起的skywalking数据库存储空间剧增的问题排查

基本信息 产品名称&#xff1a;ATS3.0 问题分类&#xff1a;编码问题 环境类型&#xff1a;环境无关 问题现象 11月1日上午华润DBA收到数据库磁盘空间告警&#xff0c;检查后发现skywalking连接的mysql数据库占用空间从之前一直是比较稳定的&#xff0c;但是10月31日…

ElasticSearch与Lucene是什么关系?Lucene又是什么?

一. ElasticSearch 与 Lucene 的关系 Elasticsearch&#xff08;ES&#xff09;和Apache Lucene之间有密切的关系&#xff0c;可以总结如下&#xff1a; Elasticsearch构建于Lucene之上&#xff1a;Elasticsearch实际上是一个分布式的、实时的搜索和分析引擎&#xff0c;它构建…

二维码智慧门牌管理系统全新升级:个性化配置,智能管理,让你的社区更安全!

文章目录 前言一、个性化配置功能的升级二、智能化管理和便捷性 前言 随着科技的飞速发展&#xff0c;智能化管理已经成为各个领域的标配。在社区管理方面&#xff0c;智能化的优势在便捷性、高效性和安全性方面得到了广泛认可。最近&#xff0c;二维码智慧门牌管理系统经过全…

【文献分享】NASA JPL团队CoSTAR一大力作:直接激光雷达里程计:利用密集点云快速定位

论文题目&#xff1a;Direct LiDAR Odometry: Fast Localization With Dense Point Clouds 中文题目&#xff1a;直接激光雷达里程计:利用密集点云快速定位 作者&#xff1a;Kenny Chen, Brett T.Lopez, Ali-akbar Agha-mohammadi 论文链接&#xff1a;https://arxiv.org/pd…

如何使用Plex在Windows系统上搭建一个全能私人媒体影音站点

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…

WebSocket Day03 : SpringMVC整合WebSocket

前言 在现代Web应用程序中&#xff0c;实时性和即时通信变得越来越重要。传统的HTTP请求-响应模式无法满足实时数据传输和双向通信的需求。随着技术的发展&#xff0c;WebSocket成为了一种强大而灵活的解决方案。 WebSocket是HTML5提供的一种新的通信协议&#xff0c;它通过一…

基于蛇优化算法的无人机航迹规划-附代码

基于蛇优化算法的无人机航迹规划 文章目录 基于蛇优化算法的无人机航迹规划1.蛇优化搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用蛇优化算法来优化无人机航迹规划。 1.蛇优化…

在jupyter中使用R

如果想在Jupyter Notebook中使用R语言&#xff0c;以下几个步骤操作可行&#xff1a; 1、启动Anaconda Prompt 2、进入R的安装位置&#xff0c;切换到R的安装位置&#xff1a;D:\Program Files\R\R-3.4.3\bin&#xff0c;启动R&#xff0c;具体代码操作步骤如下&#xff0c;在…