4.2.1 访问控制矩阵与访问控制列表

4.2.1 访问控制矩阵与访问控制列表

访问控制矩阵(Access Control Matrix,ACM)是通过矩阵形式表示访问控制规则和授权用户权限的方法。即对每个主体而言,拥有对哪些客体的哪些访问权限;而对客体而言,有哪些主体可对它实施访问。将这种关联关系加以描述,就形成了访问控制矩阵。其中,特权用户或特权用户组可以修改主体的访问控制权限。访问控制矩阵的实现易于理解,但是查找和实现有一定的难度,特别是当用户和文件系统需要管理很多文件时,访问控制矩阵将呈几何级数增长,会占用大量的系统资源,引起系统性能的下降。

从概念上说,访问控制可以通过使用和维护一个访问控制矩阵来实现。访问控制矩阵包含三个元素:主体、客体和访问权限。该矩阵模型是二维的,表示一个保护状态。访问控制矩阵中每一行代表一个用户,每一列代表一个系统资源,矩阵中的每项内容则表示用户对资源访问的模式。如果系统中用户和资源都非常多,而每个用户可能访问的资源有限,将会出现在庞大的访问控制矩阵中存在很多空值的情况,从而造成存储矩阵空间的浪费。此外,访问控制矩阵存放在何处也是一个问题。简单的解决方式是将访问控制矩阵按行或按列进行划分。

如果按行划分,得到访问控制能力表。对于每个用户,能力表列出可以使用的客体和对客体的访问能力。如果按列进行划分,可以得到广泛应用的访问控制列表。对于每个资源,访问控制列表中列出可能的用户和用户的访问权限。

访问控制列表是基于访问控制矩阵中列的自主访问控制区的,它在一个客体上附加一个主体明细表,来表示各个主体对这个客体的访问权限,明细表中的每一项都包括主体的身份和主体对这个客体的访问权限。在访问控制矩阵的概念模式下,访问控制列表对应访问控制矩阵中的列,每一列对应一个ACL。

每个访问控制列表是目标对象的属性表,它给定每个用户对给定目标的访问权限,即一系列主体及其对资源的访问权限的列表。访问控制列表机制适合于相对少的需要被区分的用户,并且这些用户大都比较稳定。如果访问控制列表太大或经常改变,那么维护访问控制列表就成为一个问题。

访问控制矩阵的行对应于主体,列对应于客体。第i行第j列的元素是访问权限的集合,列出了允许主体si对客体oj进行的访问权限。

定义4-1 S表示主体集合,R表示访问权限集合,访问控制列表l={(s,r),s∈S,r∈R}。acl为将特定客体o映射为访问控制列表l的函数。acl(o)={(si,ri),1≤i≤n}表示si可使用ri中的任意权限访问客体o。

例4-1 访问控制矩阵如图4-2所示,主体集合是Bob、Alice和John,客体集合是文件1、文件2、文件3和文件4。

图4-2 例4-1对应的访问控制矩阵

对应的访问控制列表:

acl(文件1)={(Bob,{拥有}),(Alice,{写}),(John,{读,写})}

acl(文件2)={(Bob,{读,写}),(Alice,{拥有})}

acl(文件3)={(Alice,{拥有}),(John,{写})}

acl(文件4)={(Bob,{执行}),(Alice,{执行}),(John,{拥有})}

例4-2 主体集合是Bill和Alice,客体集合是Bill.doc、Edit.exe和Sun.com。

Bill.doc可以被Bill读和写,但不允许Alice访问。

Edit.exe可以被Bill和Alice执行。

Sun.com可以被Bill读、写和执行,可以被Alice读和执行。

用访问控制矩阵表示为

图4-3 例4-2对应的访问控制矩阵

访问控制列表将对象的访问权限同对象本身存放在一起,一个ACL对应访问控制矩阵中的一列,并声明了谁可以访问一个给定的对象。用访问控制列表表示为:

acl(Bill.doc)={(Bill,{读,写})}

acl(Edit.exe)={(Bill,{执行}),(Alice,{执行})}

acl(Sun.com)={(Bill,{读,写,执行}),(Alice,{读,执行})}

当创建ACL时,权限被实例化。在所有权限中,最重要的是所有权。所有权的拥有者可以修改ACL。系统在创建客体的同时也创建了它的ACL,并且ACL具有初始值。通常,具有所有权的主体可以修改这个ACL。但有些系统允许任意拥有访问权的用户操作这些权限。

例4-3 关系数据库System R中包含基干构成记录的n元组集合,而每一个n元组中的每一个元素都有属性值。n元组以表的形式存储,记录为行,属性为列。每一张表定义一个关系。

操作表的权限包括读权限、更新权限、插入权限、删除权限和丢弃权限。每一种权限有一个修改者,称为授权选项,可以设置它使得所有者将此权限赋予他人。如果这些权限具有授权选项,任何拥有表访问权的用户都能将他的权限赋予其他用户。因此,控制权限转让的是访问的拥有权,而不是客体的拥有权。