[音乐]
[音乐]
同学们好,下面我们介绍这个自主访问控制的分类。
自主访问控制呢,目前实现的方法应该分为两种类型,
第一种类型呢就是基于行的这样的访问控制, 第二种呢是基于列的访问控制。
那么基于行的访问控制其实指的就是 将这个访问控制的这个信息和这个用户的信息
连接在一起,那么基于列的访问控制呢其实就是将这个访问控制的信息和这个
客体的信息绑定在一起,或者说连接在一起。
下面呢我们就来具体介绍一下,那么这个两种类型的这样的访问控制矩阵。
第一种呢就是关于基于行的自主访问控制机制,
那么基于行的访问控制机制,刚才我们提到了,就是在每个主体上面都要附上
附加上一个这个主体所访问的这个客体的明细表。
那么根据这个表上的信息呢 现在实现的方法的不同,我们现在又划分为三种形式。
第一种形式呢叫能力表,第二种叫前缀表,第三种是这个基于口令的这种方式。
我们先来看第一种,就是关于能力表。
能力表呢是基于行的这个自主访问控制早期的一种实现,
它主要是在系统里面为每一个用户建立了这样一张能力表。
能力表里面存放了这个用户对系统里面哪些资源具有什么样的一些访问权限。
那么这里面的能力呢其实有两个属性, 第一个属性呢,就是说这种能力可以从一个主体传递给另一个主体,
那么这就符合 DAC 的这样的前面说的这个自主的要求。
第二个呢是这种能力是 拥有这个访问,拥有这个能力的主体它是不能够去随便修改
或者去伪造任何一个这样的能力的, 这是能力表的实现。
那么在这个实现里面它有一个很大的不足,不足就在哪里呢? 就是说系统里面如果我想知道
针对某一个文件,谁具有什么样的访问权限。
如果系统里面要去查询这样一个结果的话,那么 需要去怎么做呢?同学们可以思考一下。
是的,那么我们在系统里面如果要去
问,谁可以访问这个文件?可能系统需要做的很多工作就是要去遍历系统里面每一个用户的- 能力表。
那么从这个能力表里面去查找这个文件 可以被哪些用户访问到。
那么这个工作其实是花费的时间是很大的,开销比较大,这是这个能力表的不足。
第二个呢是前缀表,前缀表呢它的主要实现方法是在每个主体的这个信息里面
赋予了一张前缀表,那么前面那个是在用户
关联能力表,这里是每个主体关联一个这个前缀表。
那么前缀表里面给出的是所有的就是受保护的客体的名字
和这个主体对这个客体拥有什么样的权限。
那么这种方法在实现的时候也有几个不足。
它的方法非常类似于这个能力表,那么实现上也有几个不足,我们说一下这三个不足。
第一个不足跟前面非常类似,就是我要撤销一个权限或者要删除一个客体的时候
会涉及到系统里面需要遍历所有的主体的这个前缀表, 那么这带来的开销是非常巨大的。
第二个呢是 对于一个可访问的这样一个许多客体的这样一个主体, 就是说我如果一个主体可以访问很多的客体,那么它的这个前缀表
就会显得很,就会要很大,那么我们管理的开销会很大。
第三呢,就是说你要在所有的这个前缀表里面去描述每一个客体,
那么客体呢需要用全路径,如果不用全路径,那没有办法体现客体的唯一性 会造成这个管理困难等等。
这是我们前缀表在 这个主体里面加进去之后所带来的一些问题。
第三种方法呢是口令,那么口令呢是最早期的时候采用的一种方法。
那么它是对每一个客体都会分配一些这样的
读或者写它的口令,比如说这个你要对这个客体拥有读的权限,
那么这个客体呢你就要有一个读口令,要有一个写权限呢,又要分配一个写口令。
所以对一个客体的读、 写,都会分配相关的口令。
那么在用户这一端,主体这一端, 如果一个主体要去访问一个客体,它需要建立这样的一些口令表。
那么口令表里面其实就是蕴含着,它拥有哪个客体的 读口令,拥有哪个客体的写口令,那么它就可以去读写某个客体。
那么这种方式呢是早期的时候经常会用到的。
那么这种方案呢其实也有它很多的不足, 因为我们知道口令它是目前我们经常会用来作为身份标识和鉴别用的,
尤其是在这个鉴别方面,我们通常会用户名,然后出一个口令来鉴定你是不是这个 声称的合法用户。
那么口令是不是适合用来做访问控制呢? 那么事实上呢,我们通过前面这个例子可以看到,就是说
如果用口令来做这样的访控的话会带来很多问题,比如说我要修改一个口令
那么这个修改口令就会导致以前 拥有这种口令的用户都不再能够去访问这个客体了。
那么不能够单独地去吊销某一个用户 去访问这个客体的权限。
就是说你修改口令本来是为了防止某一个用户,因为他经常 恶意地去写你的东西,所以你想主要是想防止他来破坏这个数据。
但是如果你要是改它的口令,就会导致其他用户全部得改,全部都得更新。
第二呢,就是说系统没有办法获知访问一个文件的用户 是谁。
也就是说系统根本没有办法,只是检查这个口令是对的,
但它并没有办法去鉴定这个口令现在是哪个用户拿这个口令来访问的,
它并没有去鉴别这个用户是谁,只鉴定口令,这其实是没有办法去识别用户的。
第三个呢,用户要记住每一个文件的这样的口令是不合理的。
所以它大多数用户会把它存在这个终端上,或者写在纸上。
这么一旦泄露其实会导致这个资源的访问权限被泄露。
另外呢,口令即使是不是写在纸上,不是写在终端,存在你的终端上,
那么你把它嵌入在这个程序里面,那么这个隐患也是,就是说一旦你的程序被别人拿走,
那么别人一旦可以运行这个程序,就意味着可以去访问这些文件,
那么这个意义也没有达到保护的这个目的。
这就是口令在做访问控制它其实存在许多的不足, 那么目前做访问控制更多的可能并没有依赖于口令。
好这一部分我们就介绍到这,谢谢。