书接上篇博客,自主访问方案是指一个实体可以被授权按其自己的意志使另一个实体能够访问某些资源。DAC的一种通常访问方式是在操作系统或数据库管理系统中运用的访问矩阵(access matrix)。
矩阵中的一维由试图访问资源的被标识的主体组成。这个列表一般由用户或用户组组成,尽管除了用户之外,也可以控制对终端、网络设备、主机或应用的访问。另一维列出可以被访问的客体。矩阵中的每项表示一个特定主体对一个特定客体的访问权。
在实践中,访问矩阵通常是稀疏的,可以用以下方式分解:
- 将矩阵按列分解,产生访问控制表(Access Control List,ACL)。
对于每个客体,ACL列出用户及其被允许的访问权。ACL可以包含一个默认的或公有的项,使得没有显示列出具有特殊权限的用户拥有一组默认的权限。这组默认的权限应该总是最小特权或者只读权限两类中可用的一类。列表的元素可以包括单个用户,也包括用户组。
因为每个ACL提供了一个指定资源的信息,所以当想要确定哪个主体对某个资源具有哪些访问权时,使用ACL很方便。
- 按行分解产生能力权证(capability ticket)。
能力权证用来指定一个用户的授权客体和操作。每个用户有许多权证,可以经系统授权将其借给或转让给其他用户。能力权证的方便与不方便之处与ACL正好相反。它很容易确定一个指定用户所拥有的访问权集合,但要确定对特定资源具有指定访问权的用户列表则要困难得多。