热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

计算机系统安全2018【3】第五章:自主访问控制和强制访问控制比较

第5章1、理解和解释自主访问控制和强制访问控制,举例说明其含义。自主访问(DAC)控制是依据主体的判断力授予访问权限,通常由客体的拥有者授权。应用于

第5章

1、 理解和解释自主访问控制和强制访问控制,举例说明其含义。

自主访问(DAC)控制是依据主体的判断力授予访问权限,通常由客体的拥有者授权。应用于 UNIX, Windows系统。

强制访问控制 (MAC) 按照系统级策略限制主体对客体的访问。用户所创建的资源,也拒绝用户的完全控制。系统的安全策略完全取决于权限,权限由管理员设置。

2、比较ACL和能力表的差异

从静态角度比较ACL和capability模型是不够的,不能说明其逻辑等价性。因为安全机制是动态变化的。
这里提下,什么叫动态和静态:动态就是用户一直在改变,有些用户时间到了失去权限了,他的权限如何收回呢??这就要看ACL和能力表的区别了,由能力矩阵我们知道,acl收回权限困难,因为是对资源来发放权限,能力表收回就方便一些,因为是对角色来发权限。所以如果某个大公司员工辞职了,一般是把他的密码改成随意一个密码。因为一个个去收回权限几乎是不可能的。改掉密码,他就再也不能访问原来的账号了,这样就安全了。

自主访问控制:

缺点:

(1)
不适合用户多、用户经常变化的情况。不能授权用户在某时间段使用。(2)
运行时的安全检查不充分。比如查询某进程应用了哪些权限是困难的。(3)
不容易查询用户对哪些文件有权限,因为以文件为单位授权。(4)不能解决混淆责任问题

能力表:

优点:(1)运行时安全检查更加有效,授权更方便。(2)用户运行程序时,权责清晰。能解决混淆责任问题。缺点:(1)改变文件状态比较困难。

二者差别:


(1) 命名空间:ACL需要客体和主体的命名空间。能力表指定资源和权限。

(2) 能力表授权给主体相应的权限,是基于主体聚集的权限管理方式。ACL授权给资源访问权限,由文件拥有者指定权限。

(3) 权利边界:能力表的权限清晰,没有额外权限。ACL执行程序时权限边界不清晰,额外权限多,会引发混淆责任问题。

(4) 鉴别内容:ACL鉴别主体。能力表不需要鉴别主体,但需要控制权限的传播。

(5) 权限审查:ACL提供单客体的权限审查。能力表提供单主体的权限审查。

(6) 权限撤销:ACL基于单客体撤销权限。能力表基于单主体撤销权限。

(7) 最小特权:能力表提供细粒度的最小特权控制,可动态、短时间访问。ACL提供粗粒度的权限管理,不能实现短时间访问。

(8) 适用性:能力表适合于进程及共享。ACL适合用户级共享。


3、ACL和CAPBILITY中如何撤销权限,两种方式中撤销权限的不同之处

ACL以资源为单位进行授权。资源属于客体,文件、端口等。撤销权限时基于客体进行权限收回。当收回用户的权限时比较困难,需要遍历文件系统才能把该用对对应的文件和目录权限收回,还不能收回动态使用过程的权限。所以收回用户的权限比较困难,采用该密码,使用后不能登录的放式收回权限。

CAPBILITY:

能力表基于单主体撤销权限,授权时基于主体进行授权。可检查主体的权限,然后收回主体的权限。但要控制主体权限的分发。比如软件制造商,卖给用户软件的使用权,用户也可以把软件给他人使用,这时能力表对主体控制其权限分发就非常重要。能力表要能够检查权限是否被用户分发出去,且能控制被分发出去的权限。

4、ACL授权时为什么引发混淆责任问题,如何解决该问题

ACL:

以编译程序 SYSX/FORT为例,SYSX文件夹下的文件: STAT、BILL文件。编译程序需要在SYSX目录下写文件, 因此对目录SYSX授予写权限。一个普通用户可以运行编译程序SYSX/FORT,用户也可以自己指定输出文件。恶意用户:输出文件名指定为SYSX/BILL,导致编译程序的清单文件被替换。编译器运行时,执行两个用户的权限:编译用户和执行用户的权限,系统无法区分应为哪个用户服务。

能力表:

各用户的权限清晰,各用户写自己文件夹下的目录不会冲突。

编译程序compiler的权能:访问SYSX/STAT和SYSX/BILL, 权限存放在自己的能力槽(slots 1 & 2)。应用者运行compiler,有写文件权限, 其权限存放在能力槽(slot 3). 应用者没有写SYSX/BILL文件的权限,因为授权时没有赋予相应的权限。当写入billing信息时, 编译程序使用slot 2中的权限. 当写输出信息时, 使用slot 3中的权限。


推荐阅读
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
author-avatar
_子竹_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有