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

命名空间

System.Security.AccessControl

相关技术

.NET Framework 中的安全性

背景

自由访问控制列表 (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 的主要类列表。

技术领域

加密密钥

CryptoKeySecurity

CryptoKeyAccessRule

CryptoKeyAuditRule

目录

DirectorySecurity

FileSystemAccessRule

FileSystemAuditRule

事件等待句柄

EventWaitHandleSecurity

EventWaitHandleAccessRule

EventWaitHandleAuditRule

文件

FileSecurity

FileSystemAccessRule

FileSystemAuditRule

互斥体

MutexSecurity

MutexAccessRule

MutexAuditRule

注册表项

RegistrySecurity

RegistryAccessRule

RegistryAuditRule

信号量

SemaphoreSecurity

SemaphoreAccessRule

SemaphoreAuditRule

要查询某个资源的现有 ACL 信息或将修改后的 ACL 信息应用于某个资源,必须使用提供对现有资源的 ACL 的访问的几种方法之一。上表中的类提供了构造和编辑 ACL 的方法,但并未提供查询或应用 ACL 的方法。

每个资源都有作用如下的关联方法:在创建资源(通常是构造函数重载)期间应用 ACL、检索现有资源的 ACL,以及将 ACL 应用于现有资源。

下表列出了用于获取和设置每个技术领域的 ACL 的方法。这些方法位于 System.Security.AccessControl 命名空间以外的几个命名空间中,它们属于表示特定资源的高级别类。例如,若要查询指定目录的 ACL,可以使用 Directory.GetAccessControl 方法来获取封装该目录的 DACL 和 SACL 的 DirectorySecurity 对象。注意,某些资源(例如文件和目录)在不同的类中具有几种等效的方法,均可提供对 ACL 的访问。

技术领域

获取和设置 ACL 的方法

加密密钥

CspParameters.CryptoKeySecurity

CspParameters.CspParameters

CspParameters.CspParameters

CspKeyContainerInfo.CryptoKeySecurity

目录

Directory.GetAccessControl

Directory.SetAccessControl

DirectoryInfo.GetAccessControl

DirectoryInfo.SetAccessControl

DirectoryInfo.Create

事件等待句柄

EventWaitHandle.GetAccessControl

EventWaitHandle.SetAccessControl

EventWaitHandle.EventWaitHandle

文件

FileStream.GetAccessControl

FileStream.SetAccessControl

FileStream.FileStream

File.GetAccessControl

File.SetAccessControl

File.Create

FileInfo.GetAccessControl

FileInfo.SetAccessControl

互斥体

Mutex.GetAccessControl

Mutex.SetAccessControl

Mutex.Mutex

注册表项

RegistryKey.GetAccessControl

RegistryKey.SetAccessControl

RegistryKey.CreateSubKey

信号量

Semaphore.GetAccessControl

Semaphore.SetAccessControl

Semaphore.Semaphore

请参见

其他资源

ACL 技术概述

.NET Framework 中的安全性