06_《计算机安全原理与实践》访问控制
06_《计算机安全原理与实践》访问控制
1. 访问控制原理
【访问控制的概念】
不同机构对访问控制的定义是不同的,广义角度上来说,访问控制与所有的计算机安全相关领域密切相关(以sql注入为例,如果发现当前注入网站的数据库用户拥有root权限,那么就可以进行许多高权限操作)。具体来说,访问控制思想可以分成两个方面:1.对于资源来说:指定对于一个具体的资源可以被哪些实体访问;2.对于实体而言:某个具体的实体对象可以访问哪些资源。
【访问控制的基本元素】
我们将主体、客体和访问权称作访问控制的基本元素。
- 主体:能够访问资源的实体,计算机中往往等同于进程,进程往往使用发起用户的属性。基本的访问控制定义了三类主体:
1)所有者:往往是资源的创建者,可以对资源权限进行分配;
2)组:除了所有者外,命名组中的成员也能被分配访问权,往往一个用户可以存在于多个组当中;
3)世界:这类用户拥有的权限最小,可以访问系统,但是权限远小于组成员和拥有者。 - 客体:访问控制下的资源,主体想要访问的对象。这类实体用于存储或者接受信息。
- 访问权:描述了主体访问客体的方式,分成如下几类:
1)读:可以查看(包括复制和打印)资源的内容;
2)写:包含读的权限,在读权限基础上可以对资源进行增删改;
3)执行:可以执行某个指定程序;
4)删除,创建,搜索:顾名思义;
【访问控制的语境】
首先先描述图中主要元素在语境中的行为:
系统:拥有资源,可以被获取;
用户:想要获取系统中的资源;
安全管理员:管理权限数据库,该数据库中存在一些信息,规定不同用户对系统有什么样的访问权限;
认证功能:判定用户有权访问系统,但没有规定用户可以在系统中拥有什么样的权限;
访问控制功能:根据安全管理员所维护的权限数据库配合安全策略来决定用户对系统资源拥有什么样的权限;
审计模块:监测并且保留用户从被系统认证(登录到系统)到被系统授权(对资源有什么样的权限)再到对资源操作的每一步记录。接下来描述这样的语境下,用户访问系统资源所发生的事件:
首先,系统认证试图访问的用户。通过用户认证后,用户实体成功登录系统,接着用户发起对特定资源的访问请求,访问控制模块读取授权数据库中的信息发现该用户有权访问该资源,对该开放资源,用户进而取得资源进行具体操作。对于上述过程,审计模块记录并监控了关键事件。说明:访问控制往往不是单一模块保障的功能。事实应用当中,以操作系统为例,除了系统本身的访问控制策略以外,还可以辅以特定的软件和硬件加强访问控制。
【访问控制策略】
- 自主访问控制(DAC):基于请求者身份和授权的访问控制。在这样的策略下,假设用户A是资源A的拥有者,假设用户B申请访问资源A,那么用户A就能根据自身需求决定是否授权用户B访问资源。
- 强制访问控制(MAC):通过对具有安全许可的安全标签进行比较从而进行访问控制。其中安全许可表明用户实体有权访问某特定资源,而安全标签的存在一定程度上表明了资源的敏感性(重要程度)。之所以说这种方式是“强制的”,是因为相比较于DAC中高权限用户可以为低权限用户授权,MAC策略下的高权限用户并不能为低权限用户授权。
- 基于角色的访问控制(RBAC):基于用户在系统中角色和资源访问规则(如,授权数据库)进行访问控制
- 基于属性的访问控制(ABAC):基于用户,资源以及当前环境的访问控制
注意,以上四种策略并不矛盾,在实际考虑对资源进行访问控制时,可以采用上述的一种或多种进行设计。
2.自主访问控制(DAC)
【访问矩阵】
DAC方案下,用户可以根据自身意志,给予其他用户某些资源的访问权。策略设计中往往主体、客体和访问权的关系由一个访问矩阵表示。如下图所示:
矩阵的一个维度为试图访问资源的主体(一般是用户或者用户组),另一个维度为客体(待访问资源),图中描述的UserA对File1和File3有读写权限,而对于File2和File4没有权限。
但是在实践中,访问控制信息的存储往往比较稀疏。一种方便查找的思想就是采用链表的方式存储矩阵,这就需要将访问矩阵根据不同维度进行进行分裂形成对应的链表。如果按照主体分裂,产生的数据结构被称为能力权证,其所表达的是某个主体对哪些客体拥有权限,链表中每一个元素值中都包含了这些权限的名称,例如:将上述矩阵按行(主体)进行分裂,得到的能力权证如下。
如果对访问矩阵按客体进行分裂,得到的一组链表称为访问控制表,其表达的是某一客体可以被哪些主体访问,这些主体对客体拥有什么样的访问权。上述矩阵,按照客体(列)分裂,得到的访问控制表如下。
但是,随之而来带有很多问题,如果采用访问控制表的方式进行存储,当想知道哪个主体对于哪个客体有访问权时是方便的,但是想指定特定用户对哪些客体有访问权查询效率就显得不是那么高了。而对于能力权证,则会产生安全问题,这种数据结构存储的用户访问权,存在被伪造的风险,所以在实际使用时还应采用一些安全措施防止伪造(Token,密码学手段)。
在关系型数据库中,访问矩阵往往采用如下形式进行存储,这样存储的好处是避免存储稀疏的问题。
【一个DAC模型】
在DAC中,我们需要识别的内容如下:保护状态,用户权限(可能一个拥有多个权限,因为用户能够为其他用户分配权限),执行访问权、允许用户更改保护状态的方式,如下图所示:S1是S2的拥有者,也是S3的拥有者,同时S1可以控制S3;S1对于F1,F2有读的权限,同时其为F2的拥有者;对于进程P1P2,S1可以唤醒;对于磁盘驱动器D1,S1可以进行寻道,同时S1拥有D2.
以下是一些访问控制命令:
3.基于角色的访问控制(RBAC)
【RBAC思想和策略】
DAC只是简单的根据用户身份(是否是拥有者,以及拥有者分配的身份)执行访问控制。而RBAC的访问控制是基于职责的,根据职责的不同,系统分配给用户不同的访问权。(职责在这里被称为角色),如下图所示,不同的用户可能拥有相同的职责(角色),因此被分配相同的权限;同样,一个用户可能拥有多项职责(角色),因此会被分配多个权限。
那么该如何实现存储呢?RABC的访问控制矩阵分为两块,一方面需要存储用户和角色的对应关系,另一方面需要存储不同角色作为主体,对客体的访问权限。如下表所示。
根据上述思想,可以得到最基本的RBAC模型,我们将其称为RBAC0,但是在实际工作中,角色之间不是平行的,也是存在着层次关系的,因此,添加了角色层次思想后,得到的模型就是RBAC1,如下所示:按照约定,上级角色画在上方,下级角色画在下方,下级角色拥有的访问权小于上级角色。
但是,仅仅存在角色层次是不够的,在实际项目管理中,角色可能存在互斥性,角色数量也有限制,系统可能预先设定好了一些强制性条件,因此需要存在一定的约束,这就是所谓的RBAC2 。将RBAC1和RBAC2都运用到访问控制中,形成的策略称为RBAC3 。
【三种层次约束】
互斥角色是指用户只能分配给该集中的一个角色的角色。
基数是指针对角色设置相应的最大数字。
系统可以指定一个先决条件,即当用户已经分配给其他指定的角色时,才能将其分配给特定的角色。
【RABC中四种实体类型】
用户:可以访问此计算机系统的个人。每个人都有一个关联的用户ID。
角色:控制此计算机系统的组织中的一个已命名的作业功能。通常,与每个角色相关联的是对授予该角色以及承担该角色的任何用户的权限和责任的描述。
权限:批准对一个或多个对象的特定访问模式。相同的术语是访问权、特权和授权。
会话:用户与分配给用户的角色集的激活子集之间的映射。
4.基于属性的访问控制(ABAC)
【ABAC特点】
访问控制发展至今,控制判定元素已经得到相当的扩展,基于属性的访问控制ABAC可以基于用户,资源以及当前环境进行访问控制,也就是说ABAC模型既要考虑定义主体属性,也要考虑定义客体属性。ABAC的优点在于它的灵活性和表现力,访问控制不再是基于相对死板传统的RBAC角色,而是基于主体和客体的特征。但是也存在着一些实现上的困难,因为再这样的策略下,每一次的访问控制都会重新对主体和客体的属性进行评估,耗费大量的系统资源,不过再云计算环境下,这些耗费是微不足道的。
【ABAC三要素】
- 属性
主体属性:主体的标签,名称,组织,职务等;
客体属性:客体资源的标签,名称,主题,大小,创建日期等;
环境属性:所处的通信,网络,设备环境信息,长期被传统访问策略忽略; - 逻辑架构:
1.主体向课题资源发送访问请求,该请求被路由到一个访问控制设备;
2.设备通过一系列规则对主体属性,客体属性,环境属性进行评估决定是否进行授权;
3.授权通过或不通过;过程如图
5.课后习题
- 简述DAC和MAC的区别?
(DAC)根据请求者的身份和说明允许请求者操作的访问规则(授权)来控制访问。此策略被称为可自由支配,因为一个实体可能具有访问权限,允许该实体自行允许另一实体访问某些资源。
(MAC)基于安全标签(指示系统资源的敏感性或关键程度)与安全许可(表明系统实体有资格访问某些资源)的比较来控制访问。此策略被称为强制策略,因为已允许访问资源的实体不能自行使另一个实体访问该资源。 - RBAC如何与DAC、MAC联系?
根据用户在系统中拥有的角色以及规定给定角色中允许用户访问的规则来控制访问。RBAC可能有一个自由裁量的或强制性的机制。 - 简述三类主体:
所有者:这可能是一个资源的创建者,比如一个文件。对于系统资源,所有权可以属于系统管理员。对于项目资源,可以为项目管理员或负责人分配所有权。
组:除了分配给所有者的权限外,还可以向指定的用户组授予访问权限,这样,组中的成员资格就足以行使这些访问权限。在大多数方案中,一个用户可以属于多个组。
世界:授予能够访问系统但不包括在该资源的类别所有者和组中的用户的访问量最少。 - 在访问控制的语境中,主体和客体的区别:
主体是一个能够访问对象的实体。一般来说,主体的概念等同于过程的概念。任何用户或应用程序实际上通过表示该用户或应用程序的进程获得对一个对象的访问权。对象是指可以控制其访问的任何对象。例子包括文件、部分文件、程序和内存段 - 什么是访问权:访问权描述了主体访问对象的方式。
- 访问控制列表和访问权证的区别:对于每个对象,访问控制列表将列出用户及其允许的访问权限。功能票据指定用户的授权对象和操作。
- 保护域是什么:访问权描述了主体访问对象的方式。
- RABC四种模型:RBAC0包含了RBAC系统的最小功能。RBAC1包含RBAC0功能,并添加了角色层次结构,使一个角色能够从另一个角色继承权限。RBAC2包括RBAC0,并添加约束,以限制RBAC系统组件的配置方式。RBAC3包含RBAC0、RBAC1和RBAC2的功能。
- RABC中四种实体类型:
用户:可以访问此计算机系统的个人。每个人都有一个关联的用户ID。
角色:控制此计算机系统的组织中的一个已命名的作业功能。通常,与每个角色相关联的是对授予该角色以及承担该角色的任何用户的权限和责任的描述。
权限:批准对一个或多个对象的特定访问模式。相同的术语是访问权、特权和授权。
会话:用户与分配给用户的角色集的激活子集之间的映射。 - 描述RABC三种层次约束:
互斥角色是指用户只能分配给该集中的一个角色的角色。
基数是指针对角色设置相应的最大数字。
的任何用户的权限和责任的描述。
权限:批准对一个或多个对象的特定访问模式。相同的术语是访问权、特权和授权。
会话:用户与分配给用户的角色集的激活子集之间的映射。 - 描述RABC三种层次约束:
互斥角色是指用户只能分配给该集中的一个角色的角色。
基数是指针对角色设置相应的最大数字。
系统可以指定一个先决条件,即当用户已经分配给其他指定的角色时,才能将其分配给特定的角色。
06_《计算机安全原理与实践》访问控制相关推荐
- 07_《计算机安全原理与实践》数据安全随笔
07_<计算机安全原理与实践>数据库随笔 1.数据库安全面临的挑战 对于一个群体而言(可以是任意的组织.机构),数据库是用于存储敏感数据的媒介.实际运用中,这些数据的访问对于业务开展至关重 ...
- 04_《计算机安全原理与实践》密码编码工具(下)
04_<计算机安全原理与实践>密码编码工具(下)含本章理论性习题解答 前言 本专栏上一篇博文介绍了消息认证的机理和非对称加密体系,从实际应用角度,二者是不可分割的.本章将在上一章的基础上进 ...
- 计算机安全原理与实践第三版答案,计算机安全: 原理与实践 : 第3版
摘要: 本书系统地介绍了计算机安全领域中的各个方面,全面分析了计算机安全威胁.检测与防范安全攻击的技术方法以及软件安全问题和管理问题,并反映了计算机安全领域的*新发展状况和趋势.本书重点介绍核心原理, ...
- 计算机安全原理与实践第3版PDF,windows安全原理与技术.pdf
085155 Windows 安全原理与技术 学分 :3 学时 :48 先修课程 :高级语言程序设计.操作系统 课程性质 :专业选修(限选)课程 适用专业 :信息安全专业 内容简介 :<Wind ...
- 计算机安全原理与实践_《计算机图形学原理及实践》学习笔记之第三章
第三章 一个古老的绘制器 1525年,阿尔布雷·丢勒 制作了一幅木刻画,展示了一种可以绘制任一形体透视图的方法. 本章我们将开发一个软件来模拟丢勒展示的方法. 丢勒视角绘制算法的伪代码 Input: ...
- 新书推荐 |《计算机安全:原理与实践(原书第4版)》
新书推荐 <计算机安全:原理与实践(原书第4版)> 长按二维码 了解及购买 深入浅出地介绍计算机安全的原理,计算机安全领域的知名教材. 编辑推荐 本书作者William Stallings ...
- 网络工程原理与实践教程实验安排
<网络工程原理与实践教程(第3版)>胜在超凡实验指导书和教材合为一体,"易学,易教,内容新" 第10章 实 验.... 235 实验1 水晶头的制作... 23 ...
- 《VMware 网络技术:原理与实践》—— 3.2 以太网
本节书摘来自华章出版社<VMware 网络技术:原理与实践>一 书中的第3章,第3.2节,作者:(美)Christopher Wahl Steven Pantol,更多章节内容可以访问云栖 ...
- 2018-2019-2 网络对抗技术 20165301 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165301 Exp2 后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任 ...
最新文章
- 学习这么多算法到底在解决哪些问题?深度学习之外,我们要选择谁?
- python 爬取网页照片!全代码!指定数量,指定目录,爬取过程详细!关于有下载照片过程但是不显示照片的问题的解释
- 与 Linux 一起学习:学习打字
- python cnn代码详解图解_TextCNN 代码详解(附测试数据集以及GitHub 地址)
- 每个人都要在自己的“时区”里找到自己的快乐
- 为什么 那么多 前端开发者都想学 Vue.js
- 玩微博也好,头条、朋友圈也罢
- Android中的EditText默认时不弹出软键盘的方法
- 快速上手Perl语言
- 快速实现ARM和DSP的通信和协同工作
- 如何用深度学习进行语音识别
- java 1st 2nd 3rd 4th_为啥第一是1ST,第二是2ND,第三是3RD,第四开始都是TH呢1ST、2ND、...-3rd-英语-耿佬杜同学...
- 使用DHT11和51单片机进行温湿度的读取(保证好用版本)
- 解决‘adb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
- rsync 同步本地文件到远端
- 基于simulink的PID控制器设计
- Python 基础课程安排
- 计算机发布信息的方法,介绍两种用电脑给手机发短信的方法
- ThingsBoard调试部署和性能分析
- ios移动端滑动抖动的bug
热门文章
- vue中手机端点击手机键盘的完成 / 搜索按钮触发文本框搜索
- “%”取模/取余是不同的
- linux ppoe,linux下连接windows2003 ppoe 服务器
- win10安装一键ghost,重启仍然直接进入win10的解决办法
- 今天玩了玩PSP上的战神,不愧是大作
- 【vn.py学习笔记(三)】vn.py事件引擎 学习笔记
- 新手入门级搭建服务器
- u盘笔记本安装linux卡主,小白u盘装系统步骤图解u盘安装centos7 卡在loop:module loaded...
- win10家庭中文版安装Hyper-V
- 100首带swf格式的歌曲