ACL 技术摘要
更新:2007 年 11 月
本主题汇总了有关用于自由访问控制列表 (DACL)、系统访问控制列表 (SACL) 和访问控制项 (ACE) 的托管 API 的信息。您可以使用 System.Security.AccessControl 命名空间中的类以编程方式访问 .NET Framework 2.0 版和更高版本中几种类型的受保护资源的 DACL、SACL 和 ACE。
托管 ACL API 提供了几种可帮助您处理许多细节问题的类,使得使用 ACL 比非托管实现更加容易。例如,在托管实现中不可能创建 null DACL,您不再需要担心由于错误地对 ACE 排序而意外地创建一个不安全的 DACL。
关键字
访问控制列表 (ACL)、自由访问控制列表 (DACL)、系统访问控制列表 (SACL)、访问控制项 (ACE)、审核 ACE
命名空间
相关技术
背景
自由访问控制列表 (DACL)(有时缩写为 ACL)是一种 Microsoft Windows NT 和更高版本用于保护资源(例如文件和文件夹)的机制。DACL 包含多个访问控制项 (ACE)。访问控制项将一个主体(通常是一个用户帐户或用户帐户组)与一个控制资源的使用的规则相关联。通过 DACL 和 ACE,您可以基于与用户帐户关联的权限允许或拒绝资源的权限。例如,您可以创建一个 ACE 并将其应用于某个文件的 DACL,以阻止除管理员以外的任何人读取该文件。
系统访问控制列表 (SACL)(有时称为审核 ACE)是一种控制与资源关联的审核消息的机制。与 DACL 相似,SACL 包含定义指定资源的审核规则的 ACE。通过审核 ACE,可以记录访问资源的成功尝试或失败尝试,但与访问 ACE 不同的是,审核 ACE 不控制哪些帐户可以使用某个资源。例如,您可以创建一个 ACE 并将其应用于某个文件的 SACL,以记录打开该文件的所有成功尝试。
ACL 类一览
下表列出了可用于轻松创建和修改几种技术领域的 ACL 的主类。这不是 System.Security.AccessControl 命名空间的完整列表,而是您应该用于处理 ACL 的主要类列表。
技术领域 |
类 |
---|---|
加密密钥 |
|
目录 |
|
事件等待句柄 |
|
文件 |
|
互斥体 |
|
注册表项 |
|
信号量 |
要查询某个资源的现有 ACL 信息或将修改后的 ACL 信息应用于某个资源,必须使用提供对现有资源的 ACL 的访问的几种方法之一。上表中的类提供了构造和编辑 ACL 的方法,但并未提供查询或应用 ACL 的方法。
每个资源都有作用如下的关联方法:在创建资源(通常是构造函数重载)期间应用 ACL、检索现有资源的 ACL,以及将 ACL 应用于现有资源。
下表列出了用于获取和设置每个技术领域的 ACL 的方法。这些方法位于 System.Security.AccessControl 命名空间以外的几个命名空间中,它们属于表示特定资源的高级别类。例如,若要查询指定目录的 ACL,可以使用 Directory.GetAccessControl 方法来获取封装该目录的 DACL 和 SACL 的 DirectorySecurity 对象。注意,某些资源(例如文件和目录)在不同的类中具有几种等效的方法,均可提供对 ACL 的访问。
技术领域 |
获取和设置 ACL 的方法 |
---|---|
加密密钥 |
|
目录 |
DirectoryInfo.GetAccessControl |
事件等待句柄 |
EventWaitHandle.GetAccessControl |
文件 |
|
互斥体 |
|
注册表项 |
|
信号量 |