系统安全性之访问控制技术

本文详细阐述了访问矩阵在访问控制中的应用,包括进程与保护域的静态和动态联系方式,以及访问矩阵如何描述权限分配,如访问权、保护域、拷贝权、所有权和控制权。还介绍了访问控制表和访问权限表的实现,以及它们在存储效率和权限管理上的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

访问矩阵(Access Matrix)

  1. 访问权
    为了对系统中的对象加以保护,应由系统来控制进程对对象的访问。我们把一个进程能对某对象执行操作的权力称为访问权(Access right)。每个访问权可以用一个有序对(对象名, 权集)来表示,例如,某进程有对文件F1执行读和写操作的权力,这时,可将该进程的访问权表示成(F1,{R/W})。

  2. 保护域
    为了对系统中的资源进行保护而引入了保护域的概念,保护域简称为“域”。“域”是进程对一组对象访问权的集合, 进程只能在指定域内执行操作,这样,“域”也就规定了进程所能访问的对象和能执行的操作。在图中示出了三个保护域。在域1中有两个对象,即文件F1和F2,只允许进程对F1读,而允许对F2读和写;而对象Printer1同时出现在域2和域3中,这表示在这两个域中运行的进程都能使用打印机。
    在这里插入图片描述

  3. 进程和域间的静态联系方式
    在进程和域之间,可以一一对应,即一个进程只联系着一个域。这意味着,在进程的整个生命期中,其可用资源是固定的,我们把这种域称为“静态域”。在这种情况下, 进程运行的全过程都是受限于同一个域,这将会使赋予进程的访问权超过了实际需要。 例如,某进程在运行开始时需要磁带机输入数据;而在进程快结束时,又需要用打印机打印数据。在一个进程只联系着一个域的情况下,则需要在该域中同时设置磁带机和打印机这两个对象,这将超过进程运行的实际需要。

  4. 进程和域间的动态联系方式
    在进程和域之间,也可以是一对多的关系,即一个进程可以联系着多个域。在此情况下,可将进程的运行分为若干个阶段,其每个阶段联系着一个域,这样便可根据运行的实际需要,来规定在进程运行的每个阶段中所能访问的对象。用上述的同一个例子,我们可以把进程的运行分成三个阶段:进程在开始运行的阶段联系着域D1,其中包括用磁带机输入; 在运行快结束的第三阶段联系着域D3,其中是用打印机输出; 中间运行阶段联系着域D2,其中既不含磁带机,也不含打印机。我们把这种一对多的联系方式称为动态联系方式,在采用这种方式的系统中,应增设保护域切换功能,以使进程能在不同的运行阶段, 从一个保护域切换到另一个保护域。

访问矩阵

我们可以利用一个矩阵来描述系统的访问控制,并把该矩阵称为访问矩阵(Access Matrix)。 访问矩阵中的行代表域, 列代表对象,矩阵中的每一项是由一组访问权组成的。因为对象已由列显式地定义,故可以只写出访问权而不必写出是对哪个对象的访问权,每一项访问权access(i,j)定义了在域Di中执行的进程能对对象Qj所施加的操作集。
访问矩阵中的访问权,通常是由资源的拥有者或者管理者所决定的。当用户创建一个新文件时,创建者便是拥有者,系统在访问矩阵中为新文件增加一列,由用户决定在该列的某个项中应具有哪些访问权,而在另一项中又具有哪些访问权。 当用户删除此文件时, 系统也要相图的访问矩阵如图所示。它是由三个域和8个对象所组成的。当进程在域D1中运行时,它能读文件F1、 读和写文件F2。进程在域D2中运行时,它能读文件F3、F4和F5,以及写文件F4、F5和执行文件F4,此外还可以使用打印机1。只有当进程在域D3中运行时,才可使用绘图仪2。应地在访问矩阵中将该文件对应的列撤消。
在这里插入图片描述

具有域切换权的访问矩阵

为了实现在进程和域之间的动态联系,应能够将进程从一个保护域切换到另一个保护域。为了能对进程进行控制,同样应将切换作为一种权力,仅当进程有切换权时,才能进行这种切换。 为此,在访问矩阵中又增加了几个对象,分别把它们作为访问矩阵中的几个域;当且仅当switch∈access(i,j)时,才允许进程从域i切换到域j。 例如, 在图 9 [CD*2] 11 中,由于域D1和D2所对应的项目中,有一个S即Switch,故而允许在域D1中的进程切换到域D2中。类似地,在域D2和对象D3所对应的项中, 也有Switch,这表示在D2域中运行的进程,可以切换到域D3中, 但不允许该进程再从域D3返回到域D1。
在这里插入图片描述

访问矩阵的修改

拷贝权(Copy Right)

在这里插入图片描述
在图中,凡是在访问权(access(i,j))上加星号()者,都表示在i域中运行的进程能将其对对象j的访问权,复制成在任何域中对同一对象的访问权。例如,图中在域D2中对文件F2的读访问权上加有号时,表示运行在D2域中的进程可以将他对文件F2的读访问权扩展到域D3中去。又如,在域D1中对文件F3的写访问权上加有号时,可以使运行在域D1中的进程, 可以将他对文件F3的写访问权扩展到域D3中去,使在域D3中运行的进程,也具有对文件F3的写访问权。
应注意的是,把带有
号的拷贝权如R*,由access(i,j)拷贝成access(k,j)后,其所建立的访问权只是R而不是R*,这使在域DK上运行的进程,不能再将其拷贝权进行扩散,从而限制了访问权的进一步扩散。 这种拷贝方式被称为限制拷贝。

所有权(Owner Right)

人们不仅要求能将已有的访问权进行有控制的扩散,而且同样需要能增加某种访问权,或者能删除某种访问权。此时, 可利用所有权(O)来实现这些操作。如果在access(i,j)中包含所有访问权,则在域Di上运行的进程,可以增加或删除其在j列上任何项中的访问权。换言之,进程可以增加或删除在任何其它域中运行的进程对对象j的访问权。例如,在图(a)中, 在域D1中运行的进程(用户)是文件F1的所有者,他能增加或删除在其它域中运行进程对文件F1的访问权;类似地,在域D2中运行的进程(用户)是文件F2和文件F3的拥有者,该进程可以增加或删除在其它域中运行的进程对这两个文件的访问权。 在图(b)中示出了在域D1中运行的进程删除了在域D3中运行的进程对文件F1的执行权;在域D2中运行的进程增加了在域D3中运行进程对文件F2和F3的写访问权。
在这里插入图片描述

控制权(Control Right)

拷贝权和所有权都是用于改变矩阵内同一列中的各项访问权的,或者说,是用于改变在不同域中运行的进程对同一对象的访问权。控制权则可用于改变矩阵内同一行中(域中)的各项访问权,亦即,用于改变在某个域中运行进程对不同对象的访问权。如果在access(i,j)中包含了控制权,则在域Di中运行的进程可以删除在域Dj中运行进程对各对象的任何访问权。例如在图中,在access(D2, D3)中包括了控制权,则一个在域D2中运行的进程能够改变对域D3内各项的访问权。比较图 9 -11 和图 9 - 14 可以看出,在D3中已无对文件F6和Ploter2的写访问权。
在这里插入图片描述

访问控制矩阵的实现

访问控制表(Access Control List)

这是指对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL。在该表中,已把矩阵中属于该列的所有空项删除,此时的访问控制表是由一有序对(域, 权集)所组成。 由于在大多数情况下,矩阵中的空项远多于非空项,因而使用访问控制表可以显著地减少所占用的存储空间,并能提高查找速度。在不少系统中,当对象是文件时,便把访问控制表存放在该文件的文件控制表中,或放在文件的索引结点中, 作为该文件的存取控制信息。
域是一个抽象的概念,可用各种方式实现。 最常见的一种情况是每一个用户是一个域,而对象则是文件。此时,用户能够访问的文件集和访问权限,取决于用户的身份。 通常,在一个用户退出而另一个用户进入时,即用户发生改变时,要进行域的切换;另一种情况是, 每个进程是一个域,此时,能够访问的对象集中的各访问权,取决于进程的身份。
访问控制表也可用于定义缺省的访问权集, 即在该表中列出了各个域对某对象的缺省访问权集。在系统中配置了这种表后,当某用户(进程)要访问某资源时,通常是首先由系统到缺省的访问控制表中,去查找该用户(进程)是否具有对指定资源进行访问的权力。如果找不到,再到相应对象的访问控制表中去查找。

访问权限(Capabilities)表

如果把访问矩阵按行(即域)划分,便可由每一行构成一张访问权限表。换言之,这是由一个域对每一个对象可以执行的一组操作所构成的表。表中的每一项即为该域对某对象的访问权限。 当域为用户(进程)、对象为文件时,访问权限表便可用来描述一个用户(进程)对每一个文件所能执行的一组操作。
图 示出了对应于图中域D2的访问权限表。在表中共有三个字段。 其中类型字段用于说明对象的类型;权力字段是指域D2对该对象所拥有的访问权限;对象字段是一个指向相应对象的指针,对UNIX系统来说,它就是索引结点的编号。由该表可以看出,域D2可以访问的对象有4个,即文件3、4、 5和打印机,对文件3的访问权限是只读;对文件4的访问权限是读、写和执行等。
在这里插入图片描述

访问权限表不能允许直接被用户(进程)所访问。 通常, 将访问权限表存储到系统区内的一个专用区中,只允许专用于进行访问合法性检查的程序对该表进行访问,以实现对访问控制表的保护。
目前,大多数系统都同时采用访问控制表和访问权限表, 在系统中为每个对象配置一张访问控制表。当一个进程第一次试图去访问一个对象时,必须先检查访问控制表,检查进程是否具有对该对象的访问权。如果无权访问,便由系统来拒绝进程的访问,并构成一例外(异常)事件;否则(有权访问),便允许进程对该对象进行访问,并为该进程建立一访问权限,将之连接到进程。以后,该进程便可直接利用这一返回的权限去访问该对象,这样,便可快速地验证其访问的合法性。 当进程不再需要对该对象进行访问时,便可撤消该访问权限。
欢迎大家加我微信交流讨论(请备注csdn上添加)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程子的小段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值