【安全知识】访问控制模型DAC、MAC、RBAC、ABAC有什么区别?

news2024/9/26 1:25:56

图片

       不同的公司或软件提供商,设计了无数种控制用户访问功能或资源的方法。但无论哪种设计,都可归到四种经典权限模型里——自主访问控制(DAC, Discretionary Access Control)、强制访问控制(MAC, Mandatory Access Control)、基于角色访问控制(RBAC, Role-based Access Control)和基于属性访问控制(ABAC, Attribute-based Access Control)。

       从本质来说,无论何种类型的权限管理模型都可以抽象出三个基本的要素——即:用户(user)、系统/应用(system/application)、策略(policy)。

访问控制模型三要素

图片

  • 主体(Subject) 指主动对其它实体施加动作的实体

  • 客体 (Object) 是被动接受其他实体访问的实体

  • 控制策略 (Policy) 为主体对客体的操作行为和约束条件

自主访问控制模型(DAC)

概念

       自主访问控制模型(DAC,Discretionary Access Control)是根据自主访问控制策略建立的一种模型,允许合法用户以用户或用户组的身份访问策略规定的客体,同时阻止非授权用户访问客体。拥有客体权限的用户,可以将该客体的权限分配给其他用户。例如没有文件 File1 访问权限的用户可以从有访问权限的 B 用户那里得到访问权限。

DAC访问控制的实现

权限控制列表

       访问控制列表 (ACL, Access Control List),每一个客体都配有一个列表,这个列表记录了主体对客体进行何种操作。当系统试图访问客体时,先检查这个列表中是否有关于当前用户的访问权限。ACL 是一种面向资源的访问控制模型,它的机制是围绕资源展开的。

       对于一个文件对象的 ACL:

  • Alice: read,write

  • Bob: read

       表示 Alice 可以对该文件进行读写操作,Bob 只能读取。

权限控制矩阵

       访问控制矩阵 (ACM,Access Control Matrix) 是通过矩阵形式描述主体和客体之间的权限分配关系。每个主体而言,都拥有对哪些客体的哪些访问权限;而对客体而言,又有哪些主体对他可以实施访问;

应用场景

        DAC 常见于文件系统,LINUX,UNIX、WindowsNT 版本的操作系统都提供 DAC 的支持。在实现上,先对用户鉴权,然后根据控制列表决定用户能否访问资源。用户控制权限的修改通常由特权用户或者管理员组实现。

图片

特点和缺点

特点

       授权的实施主体(1、可以授权的主体;2、管理授权的客体;3、授权组)自主负责赋予和回收其他主体对客体资源的访问权限。DAC 模型一般采用访问控制矩阵和访问控制列表来存放不同主体的访问控制信息,从而达到对主体访问权限的限制目的。

缺点

  1. 主体的权限太大,无意间就可能泄露信息

  2. 不能防备特洛伊木马的攻击访问控制表

  3. 当用户数量多、管理数据量大时,ACL 就会很庞大。不易维护。

强制访问控制 MAC

       强制访问控制模型 (MAC, Mandatory Access Control), 是为了弥补 DAC 权限控制过于分散的问题而诞生的。在计算机安全领域指一种由操作系统约束的访问控制,目标是限制主体或发起者访问或对对象或目标执行某种操作的能力。任何主体对任何对象的任何操作都将根据一组授权规则(也称策略)进行测试,决定操作是否允许。

  • Subject 被赋予一定的安全级别

  • Object 被赋予一定的安全级别

  • Subject 能否访问 Object 由双方的关系安全级别决定,这个判断通常有系统硬性限制.

图片

       MAC 非常适合机密机构或者其他等级观念强烈的行业,过重强调保密性,管理不够灵活。在实现上,MAC 和 DAC 通常为每个用户赋予对客体的访问权限规则集,考虑到管理的方便,在这一过程中还经常将具有相同职能的用户聚为组,然后再为每个组分配许可权。

强制访问策略

       强制访问控制系统根据主体和客体的敏感标记来决定访问模式,模式包括

  • 不上读(NRU),主体不可读安全级别高于他的数据;

  • 不下读(NRD),主体不可读安全级别低于他的数据

  • 不上写(NWU),主体不可写安全级别高于他的数据。

  • 不下写(NWD),主体不可写安全级别低于他的数据。

       由于安全性,这种方式一直被军方所使用,下面讲述两种被广泛使用的强制访问控制安全模型

  • BLP 模型:在 BLP 模型中,不上读,不下写,也就是不允许低安全等级的用户读取高安全等级的信息,不允许高敏感度的信息写入低敏感度的区域,禁止信息从高级别流向低级别,强制访问控制通过这种梯度的安全标签实现信息的单向流通

  • Biba 模型:由于 BLP 模型存在不保护信息的完整性和可用性,不涉及访问控制等缺点,所以使用 Biba 模型作为一个补充,它针对的是信息的完整性保护,主要用于非军事领域,Biba 模型使用不下读,不上写的原则来保证数据的完整性,在实际的应用中主要是避免应用程序修改某些重要的系统程序或系统数据库,这样可以使资源的完整性得到保障。也就是写,只能读上级发给他的命令,不能读他的下级接收到什么命令

基于角色的访问控制(RBAC)

       管理员定义一系列角色(roles)并把它们赋予主体。系统进程和普通用户可能有不同的角色。设置对象为某个类型,主体具有相应的角色就可以访问它。这样就把管理员从定义每个用户的许可权限的繁冗工作中解放出来。

       基于角色的访问控制 (RBAC, Role Based Access Control) 在用户和权限之间引入了 “角色(Role)” 的概念,角色解耦了用户和权限之间的关系。

角色和组的主要区别

  • 组是用户的集合

  • 角色是权限的集合

  • 角色 / 权限之间的变化比组 / 用户关系之间的变化相对要慢得多,减小了授权管理的复杂性

       基于角色的访问控制模型 RBAC,有时成为基于规则的基于角色的访问控制(Rule-Based Role-Based Access Control,RB-RBAC)。它包含了根据主体的属性和策略定义的规则动态地赋予主体角色的机制。例如,你是一个网络中的主体,你想访问另一个网络中的对象。这个网络在定义好了访问列表的路由器的另一端。路由器根据你的网络地址或协议,赋予你某个角色,这决定了你是否被授权访问。

发展历程

RBAC0

       RBAC0 作为基础模型,只包含核心的三要素,用户,角色,权限。用户和角色可以是多对多的关系,权限和角色也是多对多的关系。

图片

RBAC1

       RBAC1 包括了 RBAC0 并且添加了角色继承。顾名思义,角色继承就是指角色可以继承于其他角色,在拥有其他角色权限的同时,自己还可以关联额外的权限。这种设计可以给角色分组和分层,一定程度简化了权限管理工作。也就是角色之间存在上下级的关系,对应到实体设计中也就是角色实体的自身关联。

图片

RBAC2

       RBAC2 也包括 RBAC0 并且添加了约束。RBAC1 和 RBAC2 相互独立.
       RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。

       互斥约束:包括互斥用户,互斥角色,互斥权限。同一个用户不能拥有相互排斥的角色,两个互斥角色不能分配一样的权限集,互斥的权限不能分配给同一个角色,在 session 中,同一个角色不能拥有互斥权限。

       基数约束:一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。例如:一个角色专门为公司 CEO 创建的,那这个角色的数量是有限的。

       先决条件角色:指要想获得较高的权限,要首先拥有低一级的权限。例如:先有副总经理权限,才能有总经理权限。

图片

RBAC3

        RBAC3 是一个全功能的 RBAC,RBAC3 合并了 RBAC0,RBAC1,RBAC2.

图片

基于属性的访问控制 (ABAC)

       基于属性的访问控制 (ABAC, Attribute Based Access Control) 通过动态计算一个或一组属性是否满足某种条件来进行授权判断。可以按需实现不同颗粒度的权限控制,但定义权限时不易看出用户和对象间的关系。如果规则复杂,容易给管理者带来维护和追查带来麻烦。

       属性通常来说分为四类:

  • 用户属性(如用户年龄)

  • 环境属性(如当前时间)

  • 操作属性(如读取)

  • 对象属性(如一篇文章,又称资源属性)

图片

        指定基于属性的控制协议需要将主体,环境,客体的属性构建集合,通过关联控制策略形成响应结果.

图片

        跟 RBAC 相比,ABAC 对权限的控制粒度更细,如控制用户的访问速率。实际开发中可以结合 RBAC 角色管理的优点和 ABAC 的灵活性一起使用。

图片

不同的公司或软件提供商,设计了无数种控制用户访问功能或资源的方法。但无论哪种设计,都可归到四种经典权限模型里——自主访问控制(DAC, Discretionary Access Control)、强制访问控制(MAC, Mandatory Access Control)、基于角色访问控制(RBAC, Role-based Access Control)和基于属性访问控制(ABAC, Attribute-based Access Control)。

从本质来说,无论何种类型的权限管理模型都可以抽象出三个基本的要素——即:用户(user)、系统/应用(system/application)、策略(policy)。

访问控制模型三要素

图片

  • 主体(Subject) 指主动对其它实体施加动作的实体

  • 客体 (Object) 是被动接受其他实体访问的实体

  • 控制策略 (Policy) 为主体对客体的操作行为和约束条件

自主访问控制模型(DAC)

概念

自主访问控制模型(DAC,Discretionary Access Control)是根据自主访问控制策略建立的一种模型,允许合法用户以用户或用户组的身份访问策略规定的客体,同时阻止非授权用户访问客体。拥有客体权限的用户,可以将该客体的权限分配给其他用户。例如没有文件 File1 访问权限的用户可以从有访问权限的 B 用户那里得到访问权限。

DAC访问控制的实现

权限控制列表

访问控制列表 (ACL, Access Control List),每一个客体都配有一个列表,这个列表记录了主体对客体进行何种操作。当系统试图访问客体时,先检查这个列表中是否有关于当前用户的访问权限。ACL 是一种面向资源的访问控制模型,它的机制是围绕资源展开的。

对于一个文件对象的 ACL:

  • Alice: read,write

  • Bob: read

表示 Alice 可以对该文件进行读写操作,Bob 只能读取。

权限控制矩阵

访问控制矩阵 (ACM,Access Control Matrix) 是通过矩阵形式描述主体和客体之间的权限分配关系。每个主体而言,都拥有对哪些客体的哪些访问权限;而对客体而言,又有哪些主体对他可以实施访问;

应用场景

DAC 常见于文件系统,LINUX,UNIX、WindowsNT 版本的操作系统都提供 DAC 的支持。在实现上,先对用户鉴权,然后根据控制列表决定用户能否访问资源。用户控制权限的修改通常由特权用户或者管理员组实现。

图片

特点和缺点

特点

授权的实施主体(1、可以授权的主体;2、管理授权的客体;3、授权组)自主负责赋予和回收其他主体对客体资源的访问权限。DAC 模型一般采用访问控制矩阵和访问控制列表来存放不同主体的访问控制信息,从而达到对主体访问权限的限制目的。

缺点

  1. 主体的权限太大,无意间就可能泄露信息

  2. 不能防备特洛伊木马的攻击访问控制表

  3. 当用户数量多、管理数据量大时,ACL 就会很庞大。不易维护。

强制访问控制 MAC

强制访问控制模型 (MAC, Mandatory Access Control), 是为了弥补 DAC 权限控制过于分散的问题而诞生的。在计算机安全领域指一种由操作系统约束的访问控制,目标是限制主体或发起者访问或对对象或目标执行某种操作的能力。任何主体对任何对象的任何操作都将根据一组授权规则(也称策略)进行测试,决定操作是否允许。

  • Subject 被赋予一定的安全级别

  • Object 被赋予一定的安全级别

  • Subject 能否访问 Object 由双方的关系安全级别决定,这个判断通常有系统硬性限制.

图片

MAC 非常适合机密机构或者其他等级观念强烈的行业,过重强调保密性,管理不够灵活。在实现上,MAC 和 DAC 通常为每个用户赋予对客体的访问权限规则集,考虑到管理的方便,在这一过程中还经常将具有相同职能的用户聚为组,然后再为每个组分配许可权。

强制访问策略

强制访问控制系统根据主体和客体的敏感标记来决定访问模式,模式包括

  • 不上读(NRU),主体不可读安全级别高于他的数据;

  • 不下读(NRD),主体不可读安全级别低于他的数据

  • 不上写(NWU),主体不可写安全级别高于他的数据。

  • 不下写(NWD),主体不可写安全级别低于他的数据。

由于安全性,这种方式一直被军方所使用,下面讲述两种被广泛使用的强制访问控制安全模型

  • BLP 模型:在 BLP 模型中,不上读,不下写,也就是不允许低安全等级的用户读取高安全等级的信息,不允许高敏感度的信息写入低敏感度的区域,禁止信息从高级别流向低级别,强制访问控制通过这种梯度的安全标签实现信息的单向流通

  • Biba 模型:由于 BLP 模型存在不保护信息的完整性和可用性,不涉及访问控制等缺点,所以使用 Biba 模型作为一个补充,它针对的是信息的完整性保护,主要用于非军事领域,Biba 模型使用不下读,不上写的原则来保证数据的完整性,在实际的应用中主要是避免应用程序修改某些重要的系统程序或系统数据库,这样可以使资源的完整性得到保障。也就是写,只能读上级发给他的命令,不能读他的下级接收到什么命令

基于角色的访问控制(RBAC)

管理员定义一系列角色(roles)并把它们赋予主体。系统进程和普通用户可能有不同的角色。设置对象为某个类型,主体具有相应的角色就可以访问它。这样就把管理员从定义每个用户的许可权限的繁冗工作中解放出来。

基于角色的访问控制 (RBAC, Role Based Access Control) 在用户和权限之间引入了 “角色(Role)” 的概念,角色解耦了用户和权限之间的关系。

角色和组的主要区别

  • 组是用户的集合

  • 角色是权限的集合

  • 角色 / 权限之间的变化比组 / 用户关系之间的变化相对要慢得多,减小了授权管理的复杂性

基于角色的访问控制模型 RBAC,有时成为基于规则的基于角色的访问控制(Rule-Based Role-Based Access Control,RB-RBAC)。它包含了根据主体的属性和策略定义的规则动态地赋予主体角色的机制。例如,你是一个网络中的主体,你想访问另一个网络中的对象。这个网络在定义好了访问列表的路由器的另一端。路由器根据你的网络地址或协议,赋予你某个角色,这决定了你是否被授权访问。

发展历程

RBAC0

RBAC0 作为基础模型,只包含核心的三要素,用户,角色,权限。用户和角色可以是多对多的关系,权限和角色也是多对多的关系。

图片

RBAC1

RBAC1 包括了 RBAC0 并且添加了角色继承。顾名思义,角色继承就是指角色可以继承于其他角色,在拥有其他角色权限的同时,自己还可以关联额外的权限。这种设计可以给角色分组和分层,一定程度简化了权限管理工作。也就是角色之间存在上下级的关系,对应到实体设计中也就是角色实体的自身关联。

图片

RBAC2

RBAC2 也包括 RBAC0 并且添加了约束。RBAC1 和 RBAC2 相互独立.
RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。

互斥约束:包括互斥用户,互斥角色,互斥权限。同一个用户不能拥有相互排斥的角色,两个互斥角色不能分配一样的权限集,互斥的权限不能分配给同一个角色,在 session 中,同一个角色不能拥有互斥权限。

基数约束:一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。例如:一个角色专门为公司 CEO 创建的,那这个角色的数量是有限的。

先决条件角色:指要想获得较高的权限,要首先拥有低一级的权限。例如:先有副总经理权限,才能有总经理权限。

图片

RBAC3

RBAC3 是一个全功能的 RBAC,RBAC3 合并了 RBAC0,RBAC1,RBAC2.

图片

基于属性的访问控制 (ABAC)

基于属性的访问控制 (ABAC, Attribute Based Access Control) 通过动态计算一个或一组属性是否满足某种条件来进行授权判断。可以按需实现不同颗粒度的权限控制,但定义权限时不易看出用户和对象间的关系。如果规则复杂,容易给管理者带来维护和追查带来麻烦。

属性通常来说分为四类:

  • 用户属性(如用户年龄)

  • 环境属性(如当前时间)

  • 操作属性(如读取)

  • 对象属性(如一篇文章,又称资源属性)

图片

指定基于属性的控制协议需要将主体,环境,客体的属性构建集合,通过关联控制策略形成响应结果.

图片

跟 RBAC 相比,ABAC 对权限的控制粒度更细,如控制用户的访问速率。实际开发中可以结合 RBAC 角色管理的优点和 ABAC 的灵活性一起使用。

文章来源:博客园

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

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

相关文章

SprinBoot+Vue高校就业管理系统设计与实现的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…

C语言代码练习(第十九天)

今日练习: 52、有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中 53、输出"魔方阵"。所谓魔方阵是指它的每一行,每一列和对角线之和均相等。 54、找出一个二维数组中的鞍点,即该位置…

如何判断两个ip地址在同一子网

在电脑网络中,了解如何判断两个IP地址是否位于同一子网是一项基础而重要的技能。这对于网络管理、故障排查以及安全策略的实施都至关重要。下面就一起跟着虎观代理小二了解一下吧。 要判断两个‌IP地址是否在同一子网,可以通过以下步骤进行:‌…

Bootstrap简介

Bootstrap 一.Bootstrap简介 什么是Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。 为什么使用Bootstrap? 快速开发:Bootstrap 提供了一套预设的CSS样式和JavaScript组件,如…

SAP B1 营销单据 - 单据字段介绍(上)

背景 营销单据,SAP B1 中一群神秘的单据,在官方说明文档中并未指明【营销单据】范围,却经常使用这一说法。它们结构相似,在 用户定义字段(UDF) 功能里统一受【营销单据】部分增加字段的影响,可以相互复制(…

骨传导耳机哪个牌子最好?深度优选五款优质精品机型

身为有着多年工作经验的数码博主,在近期工作中发现,许多人因为选择了不合适的劣质骨传导耳机,非但没有享受到音乐与通话的便捷与舒适,反而出现了听力损伤的情况。在这里跟大家说一下,选择骨传导耳机不要盲目选择&#…

[翻译] Vue 3.5 发布

翻译自 vue 官方博客 地址:https://blog.vuejs.org/posts/vue-3-5 今天,我们很高兴地宣布 Vue 3.5 “Tengen Toppa Gurren Lagann” 发布! 此次要版本不包含任何重大更改,并且包括内部改进和有用的新功能。我们将在这篇博文中介绍…

ETL数据集成丨MySQL到MySQL的数据迁移实践

前言 MySQL数据迁移至另一MySQL数据库的过程,不仅是数据复制或移动的操作那么简单,它还涉及到一系列策略性考量和技术优化,旨在实现数据的高效、安全传输,以及确保目标系统的高性能运行。其深远意义在于为企业的数字化转型提供强…

智慧水务建设的基本内容

智慧水务解决方案的主要对象客户是全国各地水务投资集团、水务局、水司、水厂、农水办,也会有少量项目涉及到住建局或城管局。解决方案通常会以具体的某个业务单位的职能工作为切入点,配合物联感知、大数据分析、人工智能等技术手段,为城市供水、乡村供水的水质安全、供水调…

纯CSS实现海浪文字效果

如图所示,这是一个很炫酷的文字波动效果,文字呈现出一个海浪波动的效果,这样的动画效果可以显著加强文案本身的含义。本文将解析如何使用纯CSS实现这个特效,基于这个动图可以分析出实现这个效果的主要功能要点: 整体呈…

室内小间距LED显示屏操作指南

随着LED显示技术的迅速发展,小间距LED显示屏在城市的各个角落逐渐普及。它不仅提升了城市形象,还丰富了人们的日常生活。小间距LED显示屏以其高清、节能等特点,广泛应用于各类室内场景,如会议室、展览馆、指挥中心等。然而&#x…

嵌入式鸿蒙系统开发语言与开发方法分析

大家好,今天主要给大家分享一下,HarmonyOS系统的主力开发语言ArkTS语言开发方法,它是基于TypeScript(简称TS)语言扩展而来。 第一:ArkTS语言基本特性 目的:声明式UI,让开发者以更简洁,更自然的方式开发高性能应用。 声明式 UI基本特性: 基本UI描述:ArkTS定义了各种装饰…

【STM32 Blue Pill编程】-定时器输入捕获与频率计数

定时器输入捕获与频率计数 文章目录 定时器输入捕获与频率计数1、定时器介绍2、硬件准备及接线2、模块配置2.1 定时器配置2.2 串口配置3、信号频率测量计算4、代码实现在本文中,将介绍在STM32CubeIDE中配置定时器的工作模式为输入捕获模式,并通过编程对外部输入信号进行频率计…

Prompt工程师压箱底绝活——Prompt的基本组成部分、格式化输出与应用构建

目前,大模型输出往往包含许多冗余信息。本文中,基于文心一言,我们给出了一种包含指令、输入数据、背景信息和输出提示的提示词结构,让大模型能够真正直击应用开发者的需求,严格执行开发者的指令,为大模型的…

opencv实战项目二十二:模板匹配定位对象位置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、opencv模板匹配介绍二、使用代码三、效果 前言 在现代计算机视觉领域,模板匹配是一种基础而强大的技术,它能够帮助我们在图像中找到…

k8s服务发布Ingress

Kubernetes暴露服务的方式目前只有三种:LoadBlancer Service、NodePort Service、Ingress,通俗来讲,ingress和之前提到的Service、Deployment,也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。 In…

第 6 章图像聚类

本章将介绍几种聚类方法,并展示如何利用它们对图像进行聚类,从而寻找相似的图像组。聚类可以用于识别、划分图像数据集,组织与导航。此外,我们还会对聚类后的图像进行相似性可视化。 6.1 K-means聚类 K-means 是一种将输入数据划…

FLV 格式详解资料整理,关键帧格式解析写入库等等

FLV 是一种比较简单的视频封装格式。大致可以分为 FLV 文件头,Metadata元数据,然后一系列的音视频数据。 资料够多: FLV格式解析图 知乎用户 Linux服务器研究 画了一张格式解析图,比较全,但默认背景是白色&#xff…

2024年职业院校人工智能实训室方案解读(融入AIGC技术)

随着人工智能技术的飞速发展,职业院校作为技能型人才培养的重要基地,亟需加强人工智能实训室的建设,以应对市场需求和行业变革。该方案不仅涵盖了全面的人工智能教学内容,还融入了AIGC(Artificial Intelligence Genera…

k8s笔记——kubebuilder实战

kubebuilder Kubebuilder 是一个基于 CRD 来构建 Kubernetes API 的框架,可以使用 CRD 来构建 API、Controller 和 Admission Webhook。 动机 目前扩展 Kubernetes 的 API 的方式有创建 CRD、使用 Operator SDK 等方式,都需要写很多的样本文件&#x…