Поделиться через


Сводка по технологиям для записей ACL

Обновлен: Ноябрь 2007

В данном разделе обобщены сведения об управляемых API для списков управления доступом на уровне пользователя (DACL), системных списков управления доступом (SACL) и записей управления доступом (ACE). Классы, относящиеся к пространству имен System.Security.AccessControl, позволяют получать программный доступ к спискам DACL, SACL и записям ACE для различных защищенных ресурсов в .NET Framework версии 2.0 и более поздних.

Управляемые API списков управления доступом упрощают работу с этими списками по сравнению с неуправляемой реализацией за счет наличия ряда классов, автоматизирующих многие операции. Например, в случае управляемой реализации невозможно создать пустой список DACL (null), и больше не приходится беспокоиться о том, что из-за неправильного упорядочения записей 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 и применить ее к списку SACL файла для журнализации всех успешных попыток открытия файла.

Краткий обзор классов ACL

В следующей таблице приведен список основных классов, которые могут использоваться для удобного создания и изменения списков ACL в ряде областей. Это отнюдь не исчерпывающий список классов пространства имен System.Security.AccessControl; он включает лишь самые основные классы, используемые при работе со списками ACL.

Сфера применения

Классы

Ключи шифрования

CryptoKeySecurity

CryptoKeyAccessRule

CryptoKeyAuditRule

Каталоги

DirectorySecurity

FileSystemAccessRule

FileSystemAuditRule

Дескрипторы ожидания событий

EventWaitHandleSecurity

EventWaitHandleAccessRule

EventWaitHandleAuditRule

Файлы

FileSecurity

FileSystemAccessRule

FileSystemAuditRule

Объекты Mutex

MutexSecurity

MutexAccessRule

MutexAuditRule

Разделы реестра

RegistrySecurity

RegistryAccessRule

RegistryAuditRule

Семафоры

SemaphoreSecurity

SemaphoreAccessRule

SemaphoreAuditRule

Для запроса имеющейся информации ACL, относящейся к определенному ресурсу, или для применения к ресурсу измененной информации ACL следует использовать один из нескольких методов, обеспечивающих доступ к спискам ACL существующего ресурса. Классы, приведенные в предыдущей таблице, обеспечивают методы для создания и изменения списков ACL, однако они не предоставляют средств запроса или применения списков ACL.

С каждым ресурсом связаны методы, которые применяют списки ACL при создании ресурса (обычно это перегрузка конструктора), позволяют получать списки ACL для существующего ресурса и применять списки ACL к существующему ресурсу.

В следующей таблице приведен список методов, используемых для получения и задания списков ACL в различных областях применения. Эти методы размещены в нескольких пространствах имен вне пространства имен System.Security.AccessControl и входят в состав более высокоуровневых классов, представляющих определенный ресурс. Например, чтобы запросить список ACL для определенного каталога, используется метод Directory.GetAccessControl, с помощью которого можно получить объект DirectorySecurity, инкапсулирующий списки DACL и SACL для данного каталога. Обратите внимание, что некоторые ресурсы, такие как файлы и каталоги, имеют несколько эквивалентных методов в разных классах, которые обеспечивают доступ к спискам 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

Mutex.GetAccessControl

Mutex.SetAccessControl

Mutex.Mutex

Разделы реестра

RegistryKey.GetAccessControl

RegistryKey.SetAccessControl

RegistryKey.CreateSubKey

Семафоры

Semaphore.GetAccessControl

Semaphore.SetAccessControl

Semaphore.Semaphore

См. также

Другие ресурсы

Общие сведения о технологии ACL

Безопасность в .NET Framework