自主访问控制(Discretionary Access Control,DAC)是这样的一种控制方式,由客体的属主对自己的客体进行管理,由属主自己决定是否将自己的客体访问权或部分访问权授予其他主体,这种控制方式是自主的。也就是说,在自主访问控制下,用户可以按自己的意愿,有选择地与其他用户共享他的文件。
在计算机安全中,自主访问控制由《可信计算机系统评估准则》所定义的访问控制中的一种类型。它是根据主体(如用户、进程或 I/O 设备等)的身份和他所属的组限制对客体的访问。所谓的自主,是因为拥有访问权限的主体,可以直接(或间接)地将访问权限赋予其他主体(除非受到强制访问控制的限制)。
自主访问控制是指对某个客体具有拥有权(或控制权)的主体能够将对该客体的一种访问权或多种访问权自主地授予其它主体,并在随后的任何时刻将这些权限回收。这种控制是自主的,也就是指具有授予某种访问权力的主体(用户)能够自己决定是否将访问控制权限的某个子集授予其他的主体或从其他主体那里收回他所授予的访问权限。自主访问控制中,用户可以针对被保护对象制定自己的保护策略。
自主访问控制(DAC)常常与
强制访问控制(MAC, Mandatory Access Control, 又叫非自主访问控制)对比。DAC的数据存取权限由用户控制,系统无法控制;MAC安全等级由
系统控制,用户不能直接进行控制。有时候,一个系统称其整体有“自主的”或者“纯自主的”访问控制的时候,意味着这个系统没有强制访问控制。而有的时候,系统也可以同时实现自主访问控制和强制访问控制,其中自主访问控制是指一类可以在主体之间相互转让权限的访问控制,而强制访问控制则指的是另一类强制限制权限的访问控制。
实际上这个术语的意思并不像《可信计算机系统评估准则》中给出的定义一样清晰,这是因为评估准则中并没有强调实现的概念。因此,至少有两种实现方法,分别是:基于属主(多数情况采用此方法)和基于能力。
自主访问控制通常假定所有客体都有属主,并且属主能够修改访问该客体的权限,这可能因为大部分系统的确通过属主的概念来实现的。但是评估准则中并没有关于属主的说明,所以技术上访问控制系统并非必须拥有属主。
能力系统有时被认为能够提供自主的控制,因为它允许主体将权限转让给其他主体,即使基于用户能力的安全系统根本没有基于主体身份限制访问。(一般来说,能力安全系统并不允许权限被传递给“任何其他主体”;主体想要转让它的权限必须访问接受权限的主体,但在系统里主体一般是没有访问能力访问其他所有主体的)。