EventWaitHandleSecurity Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет функции безопасности управления доступом Windows для именованного системного дескриптора ожидания. Этот класс не наследуется.
public ref class EventWaitHandleSecurity sealed : System::Security::AccessControl::NativeObjectSecurity
public sealed class EventWaitHandleSecurity : System.Security.AccessControl.NativeObjectSecurity
[System.Security.SecurityCritical]
public sealed class EventWaitHandleSecurity : System.Security.AccessControl.NativeObjectSecurity
type EventWaitHandleSecurity = class
inherit NativeObjectSecurity
[<System.Security.SecurityCritical>]
type EventWaitHandleSecurity = class
inherit NativeObjectSecurity
Public NotInheritable Class EventWaitHandleSecurity
Inherits NativeObjectSecurity
- Наследование
- Атрибуты
Примеры
В следующем примере кода показано разделение между Allow правилами и Deny правилами, а также показано сочетание прав в совместимых правилах. В примере создается EventWaitHandleSecurity объект , добавляются правила, разрешающие и запрещающие различные права для текущего пользователя, и отображается результирующая пара правил. Затем в примере разрешены новые права для текущего пользователя и отображается результат, показывающий, что новые права объединены с существующим Allow правилом.
Примечание
В этом примере объект безопасности не присоединяет к объекту EventWaitHandle . Примеры присоединения объектов безопасности можно найти в EventWaitHandle.GetAccessControl и EventWaitHandle.SetAccessControl.
using System;
using System.Threading;
using System.Security.AccessControl;
using System.Security.Principal;
public class Example
{
public static void Main()
{
// Create a string representing the current user.
string user = Environment.UserDomainName + "\\" +
Environment.UserName;
// Create a security object that grants no access.
EventWaitHandleSecurity mSec = new EventWaitHandleSecurity();
// Add a rule that grants the current user the
// right to wait on or signal the event.
EventWaitHandleAccessRule rule = new EventWaitHandleAccessRule(user,
EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify,
AccessControlType.Allow);
mSec.AddAccessRule(rule);
// Add a rule that denies the current user the
// right to change permissions on the event.
rule = new EventWaitHandleAccessRule(user,
EventWaitHandleRights.ChangePermissions,
AccessControlType.Deny);
mSec.AddAccessRule(rule);
// Display the rules in the security object.
ShowSecurity(mSec);
// Add a rule that allows the current user the
// right to read permissions on the event. This rule
// is merged with the existing Allow rule.
rule = new EventWaitHandleAccessRule(user,
EventWaitHandleRights.ReadPermissions,
AccessControlType.Allow);
mSec.AddAccessRule(rule);
ShowSecurity(mSec);
}
private static void ShowSecurity(EventWaitHandleSecurity security)
{
Console.WriteLine("\r\nCurrent access rules:\r\n");
foreach(EventWaitHandleAccessRule ar in
security.GetAccessRules(true, true, typeof(NTAccount)))
{
Console.WriteLine(" User: {0}", ar.IdentityReference);
Console.WriteLine(" Type: {0}", ar.AccessControlType);
Console.WriteLine(" Rights: {0}", ar.EventWaitHandleRights);
Console.WriteLine();
}
}
}
/*This code example produces output similar to following:
Current access rules:
User: TestDomain\TestUser
Type: Deny
Rights: ChangePermissions
User: TestDomain\TestUser
Type: Allow
Rights: Modify, Synchronize
Current access rules:
User: TestDomain\TestUser
Type: Deny
Rights: ChangePermissions
User: TestDomain\TestUser
Type: Allow
Rights: Modify, ReadPermissions, Synchronize
*/
Imports System.Threading
Imports System.Security.AccessControl
Imports System.Security.Principal
Public Class Example
Public Shared Sub Main()
' Create a string representing the current user.
Dim user As String = Environment.UserDomainName _
& "\" & Environment.UserName
' Create a security object that grants no access.
Dim mSec As New EventWaitHandleSecurity()
' Add a rule that grants the current user the
' right to wait on or signal the event.
Dim rule As New EventWaitHandleAccessRule(user, _
EventWaitHandleRights.Synchronize _
Or EventWaitHandleRights.Modify, _
AccessControlType.Allow)
mSec.AddAccessRule(rule)
' Add a rule that denies the current user the
' right to change permissions on the event.
rule = New EventWaitHandleAccessRule(user, _
EventWaitHandleRights.ChangePermissions, _
AccessControlType.Deny)
mSec.AddAccessRule(rule)
' Display the rules in the security object.
ShowSecurity(mSec)
' Add a rule that allows the current user the
' right to read permissions on the event. This rule
' is merged with the existing Allow rule.
rule = New EventWaitHandleAccessRule(user, _
EventWaitHandleRights.ReadPermissions, _
AccessControlType.Allow)
mSec.AddAccessRule(rule)
ShowSecurity(mSec)
End Sub
Private Shared Sub ShowSecurity(ByVal security As EventWaitHandleSecurity)
Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)
For Each ar As EventWaitHandleAccessRule In _
security.GetAccessRules(True, True, GetType(NTAccount))
Console.WriteLine(" User: {0}", ar.IdentityReference)
Console.WriteLine(" Type: {0}", ar.AccessControlType)
Console.WriteLine(" Rights: {0}", ar.EventWaitHandleRights)
Console.WriteLine()
Next
End Sub
End Class
'This code example produces output similar to following:
'
'Current access rules:
'
' User: TestDomain\TestUser
' Type: Deny
' Rights: ChangePermissions
'
' User: TestDomain\TestUser
' Type: Allow
' Rights: Modify, Synchronize
'
'
'Current access rules:
'
' User: TestDomain\TestUser
' Type: Deny
' Rights: ChangePermissions
'
' User: TestDomain\TestUser
' Type: Allow
' Rights: Modify, ReadPermissions, Synchronize
Комментарии
Объект EventWaitHandleSecurity задает права доступа для именованного системного дескриптора ожидания, а также способ аудита попыток доступа. Права доступа к дескриптору ожидания выражаются в виде правил, причем каждое правило доступа представлено EventWaitHandleAccessRule объектом . Каждое правило аудита представлено EventWaitHandleAuditRule объектом .
Это отражает базовую систему безопасности Windows, в которой каждый защищаемый объект имеет не более одного списка управления доступом (DACL), который управляет доступом к защищенному объекту, и не более одного списка управления доступом системы (SACL), который указывает, какие попытки доступа проверяются. DACL и SACL — это упорядоченные списки записей управления доступом (ACE), которые указывают доступ и аудит для пользователей и групп. Объект EventWaitHandleAccessRule или EventWaitHandleAuditRule может представлять несколько ACE.
Примечание
Объект EventWaitHandle может представлять локальный дескриптор ожидания или именованный системный дескриптор ожидания. Безопасность управления доступом Windows имеет смысл только для именованных системных дескрипторов ожидания.
Классы EventWaitHandleSecurity, EventWaitHandleAccessRuleи EventWaitHandleAuditRule скрывают сведения о реализации списков управления доступом и ACE. Они позволяют игнорировать семнадцать различных типов ACE и сложность правильного поддержания наследования и распространения прав доступа. Эти объекты также предназначены для предотвращения следующих распространенных ошибок управления доступом:
Создание дескриптора безопасности с пустым DACL. Пустая ссылка на DACL позволяет любому пользователю добавлять правила доступа к объекту, что может привести к атаке типа "отказ в обслуживании". Новый EventWaitHandleSecurity объект всегда начинается с пустого DACL, который запрещает доступ всем пользователям.
Нарушение канонического упорядочения ACE. Если список ACE в DACL не хранится в каноническом порядке, пользователи могут случайно получить доступ к защищенному объекту. Например, запрещенные права доступа всегда должны отображаться перед разрешенными правами доступа. EventWaitHandleSecurity Объекты поддерживают правильный порядок внутри.
Управление флагами дескриптора безопасности, которые должны находиться под контролем диспетчера ресурсов.
Создание недопустимых сочетаний флагов ACE.
Управление унаследованными ACE. Наследование и распространение обрабатываются диспетчером ресурсов в ответ на изменения, внесенные в правила доступа и аудита.
Вставка бессмысленных ACE в списки управления доступом.
Единственными возможностями, которые не поддерживаются объектами безопасности .NET, являются опасные действия, которых следует избегать большинству разработчиков приложений, например:
Низкоуровневые задачи, которые обычно выполняются диспетчером ресурсов.
Добавление или удаление записей управления доступом способами, которые не поддерживают каноническое упорядочение.
Чтобы изменить безопасность управления доступом Windows для именованного дескриптора EventWaitHandle.GetAccessControl ожидания, используйте метод для получения EventWaitHandleSecurity объекта . Измените объект безопасности, добавив и удалив правила, а затем используйте EventWaitHandle.SetAccessControl метод для его повторного присоединения.
Важно!
Изменения, внесенные в объект , EventWaitHandleSecurity не влияют на уровни доступа именованного дескриптора ожидания, пока вы не вызовете EventWaitHandle.SetAccessControl метод для назначения измененного объекта безопасности именованного дескриптора ожидания.
Чтобы скопировать безопасность управления доступом из одного дескриптора EventWaitHandleSecurity ожидания в другой, используйте EventWaitHandle.GetAccessControl метод , чтобы получить EventWaitHandleSecurity объект, представляющий правила доступа и аудита для первого дескриптора ожидания, а затем используйте EventWaitHandle.SetAccessControl метод или конструктор, который принимает объект, чтобы назначить эти правила второму дескриптору ожидания.
Пользователи, использующие язык определения дескрипторов безопасности (SDDL), могут использовать SetSecurityDescriptorSddlForm метод для задания правил доступа для именованного дескриптора ожидания, а GetSecurityDescriptorSddlForm метод — для получения строки, представляющей правила доступа в формате SDDL. Это не рекомендуется для новой разработки.
Конструкторы
EventWaitHandleSecurity() |
Инициализирует новый экземпляр класса EventWaitHandleSecurity со значениями по умолчанию. |
Свойства
AccessRightType |
Получает значение перечисления, используемое классом EventWaitHandleSecurity для обозначения прав доступа. |
AccessRulesModified |
Получает или задает логическое значение, которое указывает, изменены ли правила доступа, связанные с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
AccessRuleType |
Получает тип, используемый классом EventWaitHandleSecurity для обозначения правил доступа. |
AreAccessRulesCanonical |
Возвращает логическое значение, которое указывает, расположены ли правила доступа, связанные с этим объектом ObjectSecurity, в каноническом порядке. (Унаследовано от ObjectSecurity) |
AreAccessRulesProtected |
Возвращает логическое значение, указывающее, защищен ли список разграничительного управления доступа (DACL), связанный с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
AreAuditRulesCanonical |
Возвращает логическое значение, которое указывает, расположены ли правила аудита, связанные с этим объектом ObjectSecurity, в каноническом порядке. (Унаследовано от ObjectSecurity) |
AreAuditRulesProtected |
Возвращает логическое значение, указывающее, защищен ли системный список управления доступом (SACL), связанный с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
AuditRulesModified |
Получает или задает логическое значение, которое указывает, изменены ли правила аудита, связанные с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
AuditRuleType |
Получает тип, используемый классом EventWaitHandleSecurity для обозначения правил аудита. |
GroupModified |
Возвращает или задает логическое значение, указывающее, была ли изменена группа, связанная с защищаемым объектом. (Унаследовано от ObjectSecurity) |
IsContainer |
Получает логическое значение, которое указывает, является ли данный объект ObjectSecurity контейнером. (Унаследовано от ObjectSecurity) |
IsDS |
Получает логическое значение, указывающее, является ли этот объект ObjectSecurity объектом каталога. (Унаследовано от ObjectSecurity) |
OwnerModified |
Получает или задает логическое значение, указывающее, был ли изменен владелец защищаемого объекта. (Унаследовано от ObjectSecurity) |
SecurityDescriptor |
Возвращает дескриптор безопасности для данного экземпляра. (Унаследовано от ObjectSecurity) |
Методы
AccessRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AccessControlType) |
Создает новое правило управления доступом для указанного пользователя с указанными правами, типом управления доступом и флагами. |
AddAccessRule(AccessRule) |
Добавляет указанное правило доступа в список управления доступом на уровне пользователей, связанный с данным объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
AddAccessRule(EventWaitHandleAccessRule) |
Выполняет поиск подходящего правила управления доступом, с которым можно объединить новое правило. Если поиск не дал результатов, добавляется новое правило. |
AddAuditRule(AuditRule) |
Добавляет указанное правило аудита в системный список управления доступом, связанный с данным объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
AddAuditRule(EventWaitHandleAuditRule) |
Осуществляет поиск правила аудита, с которым можно объединить новое правило. Если поиск не дал результатов, добавляется новое правило. |
AuditRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AuditFlags) |
Создает новое правило аудита, в котором указывается пользователь, к которому относится правило, правила доступа для аудита, а также событие, вызывающее срабатывание правила аудита. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetAccessRules(Boolean, Boolean, Type) |
Получает коллекцию правил доступа, связанных с указанным идентификатором безопасности. (Унаследовано от CommonObjectSecurity) |
GetAuditRules(Boolean, Boolean, Type) |
Получает коллекцию правил аудита, связанных с указанным идентификатором безопасности. (Унаследовано от CommonObjectSecurity) |
GetGroup(Type) |
Получает основную группу, связанную с указанным владельцем. (Унаследовано от ObjectSecurity) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetOwner(Type) |
Возвращает владельца, связанного с указанной основной группой. (Унаследовано от ObjectSecurity) |
GetSecurityDescriptorBinaryForm() |
Возвращает массив значений байтов, представляющих данные дескриптора безопасности для этого объекта ObjectSecurity. (Унаследовано от ObjectSecurity) |
GetSecurityDescriptorSddlForm(AccessControlSections) |
Возвращает представление на языке определения дескриптора безопасности (SDDL) указанных разделов дескриптора безопасности, связанных с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ModifyAccess(AccessControlModification, AccessRule, Boolean) |
Применяет указанное изменение к списку управления доступом на уровне пользователей (DACL), связанному с этим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
ModifyAccessRule(AccessControlModification, AccessRule, Boolean) |
Применяет указанное изменение к списку управления доступом на уровне пользователей (DACL), связанному с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
ModifyAudit(AccessControlModification, AuditRule, Boolean) |
Применяет указанное изменение к системному списку управления доступом (SACL), связанному с этим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
ModifyAuditRule(AccessControlModification, AuditRule, Boolean) |
Применяет указанное изменение к системному списку управления доступом (SACL), связанному с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
Persist(Boolean, String, AccessControlSections) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом ObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(SafeHandle, AccessControlSections) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом NativeObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(SafeHandle, AccessControlSections, Object) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом NativeObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(String, AccessControlSections) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом NativeObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
Persist(String, AccessControlSections, Object) |
Сохраняет указанные разделы дескриптора безопасности, связанного с этим объектом NativeObjectSecurity, в постоянном хранилище. Рекомендуется, чтобы значения параметров |
PurgeAccessRules(IdentityReference) |
Удаляет все правила доступа, связанные с указанным объектом IdentityReference. (Унаследовано от ObjectSecurity) |
PurgeAuditRules(IdentityReference) |
Удаляет все правила, связанные с заданным IdentityReference. (Унаследовано от ObjectSecurity) |
ReadLock() |
Блокирует этот объект ObjectSecurity для доступа для чтения. (Унаследовано от ObjectSecurity) |
ReadUnlock() |
Разблокирует этот объект ObjectSecurity для доступа для чтения. (Унаследовано от ObjectSecurity) |
RemoveAccessRule(AccessRule) |
Удаляет правила доступа с тем же идентификатором безопасности и маской доступа, что и у указанного правила доступа, из списка управления доступом на уровне пользователей, связанного с текущим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
RemoveAccessRule(EventWaitHandleAccessRule) |
Осуществляет поиск правила управления доступом с тем же именем пользователя и значением AccessControlType ("разрешить" или "запретить"), что и указанного правила доступа, а также с совместимыми флагами наследования и распространения; если правило найдено, содержащиеся в указанном правиле доступа права удаляются. |
RemoveAccessRuleAll(AccessRule) |
Удаляет все правила доступа с тем же идентификатором безопасности, что и у указанного правила доступа, из списка управления доступом на уровне пользователей, связанного с текущим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
RemoveAccessRuleAll(EventWaitHandleAccessRule) |
Осуществляет поиск всех правил управления доступом с тем же именем пользователя и значением свойства AccessControlType ("разрешить" или "запретить"), что и у указанного правила, и удаляет найденные правила. |
RemoveAccessRuleSpecific(AccessRule) |
Удаляет все правила доступа, в точности совпадающие с указанным правилом доступа, из списка управления доступом на уровне пользователей, связанного с текущим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
RemoveAccessRuleSpecific(EventWaitHandleAccessRule) |
Осуществляет поиск правила управления доступом, в точности соответствующего указанному правилу, и удаляет найденное правило. |
RemoveAuditRule(AuditRule) |
Удаляет правила аудита с тем же идентификатором безопасности и маской доступа, что и у указанного правила аудита, из системного списка управления доступом, связанного с текущим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
RemoveAuditRule(EventWaitHandleAuditRule) |
Осуществляет поиск правила аудита с тем же именем пользователя, что и указанного правила доступа, а также с совместимыми флагами наследования и распространения; если совместимое правило найдено, содержащиеся в указанном правиле права удаляются. |
RemoveAuditRuleAll(AuditRule) |
Удаляет все правила аудита с тем же идентификатором безопасности, что и у указанного правила аудита, из системного списка управления доступом, связанного с текущим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
RemoveAuditRuleAll(EventWaitHandleAuditRule) |
Производит поиск всех правил аудита с тем же пользователем, что и у указанного правила, и удаляет найденные правила. |
RemoveAuditRuleSpecific(AuditRule) |
Удаляет все правила аудита, в точности совпадающие с указанным правилом аудита, из системного списка управления доступом, связанного с текущим объектом CommonObjectSecurity. (Унаследовано от CommonObjectSecurity) |
RemoveAuditRuleSpecific(EventWaitHandleAuditRule) |
Осуществляет поиск правила аудита, в точности соответствующего указанному правилу, и удаляет найденное правило. |
ResetAccessRule(AccessRule) |
Удаляет все правила доступа из списка управления доступом на уровне пользователей (DACL), связанного с текущим объектом CommonObjectSecurity, а затем добавляет указанное правило доступа. (Унаследовано от CommonObjectSecurity) |
ResetAccessRule(EventWaitHandleAccessRule) |
Удаляет все правила управления доступом с тем же именем пользователя, что и у указанного правила, вне зависимости от значения свойства AccessControlType, после чего добавляет указанное правило. |
SetAccessRule(AccessRule) |
Удаляет все правила доступа с тем же идентификатором и квалификатором безопасности, что и у указанного правила доступа, из списка управления доступом на уровне пользователей, связанного с текущим объектом CommonObjectSecurity, а затем добавляет указанное правило доступа. (Унаследовано от CommonObjectSecurity) |
SetAccessRule(EventWaitHandleAccessRule) |
Удаляет все правила управления доступом с тем же именем пользователя и значением свойства AccessControlType ("разрешить" или "запретить"), что и у указанного правила, после чего добавляет указанное правило. |
SetAccessRuleProtection(Boolean, Boolean) |
Задает или удаляет защиту правил доступа, связанных с этим объектом ObjectSecurity. Защищенные правила доступа не могут изменяться родительскими объектами через наследование. (Унаследовано от ObjectSecurity) |
SetAuditRule(AuditRule) |
Удаляет все правила аудита с тем же идентификатором и квалификатором безопасности, что и у указанного правила аудита, из системного списка управления доступом, связанного с текущим объектом CommonObjectSecurity, а затем добавляет указанное правило аудита. (Унаследовано от CommonObjectSecurity) |
SetAuditRule(EventWaitHandleAuditRule) |
Удаляет все правила аудита с тем же именем пользователя, что и у указанного правила, вне зависимости от значения свойства AuditFlags, после чего добавляет указанное правило. |
SetAuditRuleProtection(Boolean, Boolean) |
Задает или удаляет защиту правил аудита, связанных с этим объектом ObjectSecurity. Защищенные правила аудита не могут изменяться родительскими объектами через наследование. (Унаследовано от ObjectSecurity) |
SetGroup(IdentityReference) |
Задает основную группу для дескриптора безопасности, связанного с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
SetOwner(IdentityReference) |
Задает владельца для дескриптора безопасности, связанного с этим объектом ObjectSecurity. (Унаследовано от ObjectSecurity) |
SetSecurityDescriptorBinaryForm(Byte[]) |
Задает дескриптор безопасности для данного объекта ObjectSecurity из указанного массива байтовых значений. (Унаследовано от ObjectSecurity) |
SetSecurityDescriptorBinaryForm(Byte[], AccessControlSections) |
Задает указанные разделы дескриптора безопасности для данного объекта ObjectSecurity из указанного массива байтовых значений. (Унаследовано от ObjectSecurity) |
SetSecurityDescriptorSddlForm(String) |
Задает дескриптор безопасности для данного объекта ObjectSecurity из указанной строки языка определения дескрипторов безопасности (SDDL). (Унаследовано от ObjectSecurity) |
SetSecurityDescriptorSddlForm(String, AccessControlSections) |
Задает указанные разделы дескриптора безопасности для данного объекта ObjectSecurity из указанной строки языка определения дескрипторов безопасности (SDDL). (Унаследовано от ObjectSecurity) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
WriteLock() |
Блокирует доступ к этому объекту ObjectSecurity для записи. (Унаследовано от ObjectSecurity) |
WriteUnlock() |
Разблокирует этот объект ObjectSecurity для доступа для записи. (Унаследовано от ObjectSecurity) |