自主访问控制模型
一、 核心定义:一个形象的比喻
自主访问控制,也称为任意访问控制,其核心思想是:对象(如文件、数据)的拥有者,可以完全自主地决定将访问权限授予系统中的其他哪些用户(或主体)。
一个最贴切的比喻:你的私人住宅
你 = 文件的拥有者
你的房子和里面的物品 = 系统中的文件和数据
你的家人、朋友、访客 = 系统中的其他用户
在这个模型下:
你可以完全自主地决定谁可以进入你的房子(访问权限)。
你可以让某人只准在客厅待着(读权限),但允许你的家人进入所有房间甚至修改摆设(读/写/执行权限)。
你可以随时收回某个朋友的钥匙(撤销权限)。
你不需要向物业(系统管理员)申请或获得批准,这是你作为房主的权利。
二、 核心思想与关键特征
权限基于用户身份:访问决策取决于访问者的身份(你是谁)以及被访问对象的权限设置列表。
所有权概念:每个对象都有一个明确的所有者(通常是创建者)。所有权意味着对权限的完全控制。
权限传递的任意性:所有者可以将权限授予其他用户,并且这些用户可能有能力将他们获得的权限再次授予更多人。这是其灵活性的来源,也是其主要的安全风险。
灵活性高:非常适合开放的、协作式的计算环境(如大学的研究小组、公司的项目团队)。
三、 DAC 的常见实现机制
1. 访问控制列表
这是最常见、最直观的DAC实现方式。它就像贴在每个文件或文件夹上的一个“访客名单”。
工作原理:每个受保护的对象(如一个文件)都附带一个列表(ACL),该列表明确记录了哪些用户或用户组可以以何种方式(读、写、执行等)访问该对象。
示例:
文件
ProjectPlan.doc的 ACL:Alice (所有者): 读, 写, 执行, 删除Bob: 读, 写Group_ProjectTeam: 读Everyone: 无访问权限
现实应用:Windows NTFS 文件系统、Unix/Linux 文件系统(简化版)等都广泛使用 ACL。
2. 权限位模式
这是 ACL 的一种简化形式,在 Unix/Linux 系统中非常经典。
工作原理:它将用户分为三类:【文件所有者】、【与所有者同组的用户】、【其他所有用户】。并为每一类用户分配读、写、执行的权限。
示例:用
ls -l命令看到的-rwxr-x---:rwx:所有者有读、写、执行权限。r-x:同组用户有读和执行权限,但不能写。---:其他用户无任何权限。
特点:简单高效,但不够精细(无法为组内的特定用户设置不同权限)。
四、 DAC 的优点
高度灵活:能够满足复杂和多变的访问控制需求,非常适合需要频繁协作的环境。
易于理解和实施:ACL 的概念非常直观,符合人们对资源管理的自然认知。
用户自主性强:减轻了系统管理员的负担,所有者可以快速响应权限变更需求,无需通过管理员。
五、 DAC 的致命缺点与安全风险
DAC 模型最大的问题在于其名字中的“自主”或“任意”,这导致了它在高安全要求环境下的不适用性。
特权传递问题:
用户A拥有文件F,并授予用户B读权限。
用户B可以将文件F的内容复制到另一个自己拥有的文件F‘中,然后作为F’的所有者,将F‘的权限授予任何他想要的人。
后果:机密信息可能会在不受原始所有者控制的情况下被泄露和扩散。这被称为“特洛伊木马”攻击的温床。
权限回收困难:
如果用户A授予了100个用户对某个文件的访问权限,现在想收回,他必须手动从ACL中移除这100个用户,操作繁琐且容易遗漏。
更糟糕的是,如果这些用户已经将数据复制并传播出去,A将完全失去对数据的控制。
无法抵御恶意软件:
如果一个用户运行了恶意软件(病毒、木马),该软件会以该用户的权限运行。由于用户有权访问很多文件,恶意软件也就能读取、修改或删除这些文件,造成巨大破坏。
六、 DAC 与其他访问控制模型的对比
为了更好地理解DAC,我们将其与另外两种主要模型对比:
| 特性 | 自主访问控制 | 强制访问控制 | 基于角色的访问控制 |
|---|---|---|---|
| 控制主体 | 数据所有者 | 系统安全策略 | 系统管理员 |
| 核心依据 | 用户身份和所有者意愿 | 安全标签(密级、范畴) | 用户在组织中的角色 |
| 灵活性 | 高 | 低 | 中 |
| 安全性 | 低 | 非常高 | 高 |
| 权限传递 | 允许 | 严格禁止 | 由管理员控制 |
| 典型场景 | 普通操作系统、文件共享 | 军事、政府机密系统 | 企业信息系统、ERP |
| 比喻 | 私人住宅 | 军事基地(权限由军衔和部门决定) | 公司职位(CFO有财务权限,HR总监有人事权限) |
总结
自主访问控制 是一种以用户为中心的、高度灵活的访问控制模型,它赋予了数据所有者极大的管理自由。然而,这种自由也带来了固有的安全风险,特别是在防止信息泄露和抵御恶意代码方面存在严重不足。
因此,在现代操作系统中,DAC(如文件权限)是基础的、普遍存在的机制,但在对安全性要求极高的环境中,它通常会与强制访问控制或基于角色的访问控制等更严格的模型结合使用,以构建纵深防御体系。
