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


Архитектура технологии ACL

Пространство имен System.Security.AccessControl обеспечивает доступ к спискам управления доступом (ACL) посредством удобных в использовании классов, в значительной мере скрывающих сложность системы безопасности ACL Windows. Кроме того, пространство имен System.Security.AccessControl включает несколько классов, обеспечивающих дополнительные возможности доступа к системе безопасности Windows ACL.

Платформа .NET Framework обеспечивает доступ к спискам ACL для следующих ресурсов.

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

  • Каталоги

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

  • Файлы

  • Mutexes

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

  • Семафоры

Для каждого из этих типов ресурсов имеется несколько классов, которые можно использовать для создания и изменения списков ACL.

Иерархия классов ACL

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

  • Класс, инкапсулирующий списки управления доступом DACL и SACL. Данный класс имеет имя <Название ресурса>Security. Например, классы FileSecurity и DirectorySecurity инкапсулируют списки DACL и SACL для файлов и папок.

  • Класс, инкапсулирующий запись управления доступом (ACE). Данный класс имеет имя <Название ресурса>AccessRule.

  • Класс, инкапсулирующий запись управления доступом аудита. Данный класс имеет имя <Название ресурса>AuditRule.

  • Несколько перечислений, позволяющих создавать определенные правила доступа и аудита.

  • Полный список высокоуровневых классов ACL см. в разделе Сводка по технологиям для записей ACL.

Добавление записей управления доступом в списки ACL

После создания записи управления доступом с помощью одного из классов правил доступа или аудита правило можно добавить к ресурсу или использовать его для удаления из ресурса существующего правила. Например, с помощью класса FileSystemAccessRule было создано правило, разрешающее открывать файл только администраторам. Далее можно добавить правило к объекту FileSecurity или удалить аналогичное правило из объекта FileSecurity.

Добавление записи управления доступом, разрешающей доступ, не гарантирует того, что участник получит доступ, так как правило запрещения всегда имеет приоритет перед правилом разрешения. Например, если добавить к файлу правило разрешения доступа для системной учетной записи, это не значит, что доступ к файлу обязательно будет предоставлен, так как он может быть запрещен другим правилом.

Каждый объект <Название ресурса>Security, связанный с ресурсом, предоставляет следующие методы для добавления или удаления правил доступа и аудита.

Метод

Описание

AddAccessRule

и

AddAuditRule

Производит поиск правила доступа или аудита, которое можно объединить с новым правилом. Если поиск не дал результатов, добавляется новое правило.

SetAccessRule

Удаляет все правила управления доступом с тем же пользователем и значением свойства AccessControlType (Allow или Deny), что и у указанного правила, после чего добавляет указанное правило.

SetAuditRule

Удаляет все правила аудита с тем же пользователем, что и у указанного правила, вне зависимости от значения свойства AuditFlags, после чего добавляет указанное правило.

ResetAccessRule

Удаляет все правила управления доступом с тем же пользователем, что и у указанного правила, вне зависимости от значения свойства AccessControlType, после чего добавляет указанное правило.

RemoveAccessRule

Производит поиск правила управления доступом с тем же пользователем и значением свойства AccessControlType (Allow или Deny), что и у указанного правила, и совместимыми флагами наследования и распространения. Если поиск дал результаты, права, содержащиеся в указанном правиле доступа, удаляются из правила.

RemoveAuditRule

Производит поиск правила управления аудитом с тем же пользователем, что и у указанного правила, и совместимыми флагами наследования и распространения. Если поиск дал результаты, права, содержащиеся в указанном правиле, удаляются из правила.

RemoveAccessRuleAll

Производит поиск всех правил доступа с тем же пользователем и значением свойства AccessControlType (Allow или Deny), что и у указанного правила, и удаляет найденные правила.

RemoveAuditRuleAll

Производит поиск всех правил аудита с тем же пользователем, что и у указанного правила, и удаляет найденные правила.

RemoveAccessRuleSpecific

и

RemoveAuditRuleSpecific

Производит поиск правила доступа или аудита, в точности соответствующего указанному правилу, и удаляет найденное правило.

AddAccessRule

и

AddAuditRule

Производит поиск правила доступа или аудита, которое можно объединить с новым правилом. Если поиск не дал результатов, добавляется новое правило.

Получение и задание списков ACL

Каждый защищенный ресурс имеет методы, служащие для получения и задания объектов <Имя ресурса>Security, связанных с ресурсом. Чтобы получить существующие списки ACL для определенного ресурса, используйте методы GetAccessControl, связанные с ресурсом. Чтобы применить внесенные изменения к ресурсу, используйте методы SetAccesscontrol, связанные с ресурсом. Обратите внимание, что применение внесенных изменений к ресурсу возможно только явным образом с помощью одного из методов задания.

Полный список всех методов получения и задания для каждого защищенного ресурса см. в разделе Сводка по технологиям для записей ACL.

См. также

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

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

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