自主访问控制
在计算机安全中,自主访问控制(英语:discretionary access control,缩写DAC)由《可信计算机系统评估准则》[1]所定义的访问控制中的一种类型。它是根据主体(如用户、进程或 I/O 设备等)的身份和他所属的组限制对客体的访问。所谓的自主,是因为拥有访问权限的主体,可以直接(或间接)地将访问权限赋予其他主体(除非受到强制访问控制的限制)。
自主访问控制常常与强制访问控制(MAC,Mandatory Access Control,又叫非自主访问控制)对比。有时候,一个系统称其整体有“自主的”或者“纯自主的”访问控制的时候,意味着这个系统没有强制访问控制。而有的时候,系统也可以同时实现自主访问控制和强制访问控制,其中自主访问控制是指一类可以在主体之间相互转让权限的访问控制,而强制访问控制则指的是另一类强制限制权限的访问控制。
实现方法
编辑实际上这个术语的意思并不像《可信计算机系统评估准则》中给出的定义一样清晰,这是因为评估准则中并没有强调实现的概念。因此,至少有两种实现方法,分别是:基于属主(多数情况采用此方法)和基于能力。[2]
基于属主
编辑自主访问控制通常假定所有客体都有属主,并且属主能够修改访问该客体的权限,这可能因为大部分系统的确通过属主的概念来实现的。但是评估准则中并没有关于属主的说明,所以技术上访问控制系统并非必须拥有属主。
基于这种实现下,用户(属主)能够修改安全属性。一个直接的例子是 Unix 的文件模式。
基于能力
编辑能力系统有时被认为能够提供自主的控制,因为它允许主体将权限转让给其他主体,即使基于用户能力的安全系统根本没有基于主体身份限制访问。(一般来说,能力安全系统并不允许权限被传递给“任何其他主体”;主体想要转让它的权限必须访问接受权限的主体,但在系统里主体一般是没有访问能力访问其他所有主体的)。
参阅
编辑参考
编辑- ^ Trusted Computer System Evaluation Criteria. United States Department of Defense. December 1985. DoD Standard 5200.28-STD. (原始内容存档于2006-05-27).
- ^ http://fedoraproject.org/wiki/Features/RemoveSETUID (页面存档备份,存于互联网档案馆) – Fedora 15 set to remove SETUID in favor of (Linux kernel) capabilities