Функция AccessCheckByTypeResultListAndAuditAlarmByHandleA (winbase.h)
Функция AccessCheckByTypeResultListAndAuditAlarmByHandle определяет, предоставляет ли дескриптор безопасности указанный набор прав доступа клиенту, олицетворение которого выполняет вызывающий поток. Разница между этой функцией и AccessCheckByTypeResultListAndAuditAlarm заключается в том, что эта функция позволяет вызывающму потоку выполнять проверка доступа перед олицетворение клиента.
Функция может проверка доступ к иерархии объектов, таких как объект, его наборы свойств и свойства. Функция сообщает о правах доступа, предоставленных или запрещенных каждому типу объектов в иерархии. Если дескриптор безопасности содержит системный список управления доступом (SACL) с записями управления доступом (ACE), которые применяются к клиенту, функция создает все необходимые сообщения аудита в журнале событий безопасности. Будильники в настоящее время не поддерживаются.
Синтаксис
BOOL AccessCheckByTypeResultListAndAuditAlarmByHandleA(
[in] LPCSTR SubsystemName,
[in] LPVOID HandleId,
[in] HANDLE ClientToken,
[in] LPCSTR ObjectTypeName,
[in, optional] LPCSTR ObjectName,
[in] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in, optional] PSID PrincipalSelfSid,
[in] DWORD DesiredAccess,
[in] AUDIT_EVENT_TYPE AuditType,
[in] DWORD Flags,
[in, out, optional] POBJECT_TYPE_LIST ObjectTypeList,
[in] DWORD ObjectTypeListLength,
[in] PGENERIC_MAPPING GenericMapping,
[in] BOOL ObjectCreation,
[out] LPDWORD GrantedAccess,
[out] LPDWORD AccessStatusList,
[out] LPBOOL pfGenerateOnClose
);
Параметры
[in] SubsystemName
Указатель на строку, завершающуюся значением NULL, которая указывает имя подсистемы, вызывающей функцию. Эта строка отображается в любом сообщении аудита, которое создает функция.
[in] HandleId
Указатель на уникальное значение, представляющее дескриптор клиента для объекта . Если доступ запрещен, система игнорирует это значение.
[in] ClientToken
Дескриптор объекта токена, который представляет клиента, запросив операцию. Этот дескриптор необходимо получить через уровень сеанса связи, например локальный именованный канал, чтобы предотвратить возможные нарушения политики безопасности. Вызывающий объект должен иметь TOKEN_QUERY доступ к указанному токену.
[in] ObjectTypeName
Указатель на строку, завершающуюся нулевым значением, которая указывает тип создаваемого объекта или доступа к ней. Эта строка отображается в любом сообщении аудита, которое создает функция.
[in, optional] ObjectName
Указатель на строку, завершающуюся значением NULL, которая указывает имя создаваемого объекта или доступа к которому осуществляется доступ. Эта строка отображается в любом сообщении аудита, которое создает функция.
[in] SecurityDescriptor
Указатель на SECURITY_DESCRIPTOR структуру, для которой проверяется доступ.
[in, optional] PrincipalSelfSid
Указатель на ИД безопасности. Если дескриптор безопасности связан с объектом, представляющим субъект (например, объект пользователя), параметр PrincipalSelfSid должен быть идентификатором безопасности объекта. При оценке доступа этот идентификатор безопасности логически заменяет идентификатор безопасности в любом ACE, содержающем известный идентификатор безопасности PRINCIPAL_SELF (S-1-5-10). Сведения об известных идентификаторах безопасности см. в разделе Известные идентификаторы безопасности.
Присвойте этому параметру значение NULL , если защищенный объект не представляет участника.
[in] DesiredAccess
Маска доступа, указывающая права доступа для проверка. Эта маска должна быть сопоставлена функцией MapGenericMask , чтобы она не содержала универсальных прав доступа.
Если этот параметр MAXIMUM_ALLOWED, функция задает маску доступа в GrantedAccess , чтобы указать максимальные права доступа, которые дескриптор безопасности разрешает клиенту.
[in] AuditType
Тип создаваемого аудита. Это может быть одно из значений из типа перечисления AUDIT_EVENT_TYPE .
[in] Flags
Флаг, который управляет поведением функции, если вызывающий процесс не имеет привилегии SE_AUDIT_NAME. Если установлен флаг AUDIT_ALLOW_NO_PRIVILEGE, функция выполняет проверка доступа, не создавая сообщения аудита, если привилегия не включена. Если этот параметр равен нулю, функция завершается ошибкой, если привилегия не включена.
[in, out, optional] ObjectTypeList
Указатель на массив OBJECT_TYPE_LIST структур, определяющих иерархию типов объектов, к которым проверка доступ. Каждый элемент в массиве задает GUID, идентифицирующий тип объекта, и значение, указывающее уровень типа объекта в иерархии типов объектов. Массив не должен содержать два элемента с одинаковым ИДЕНТИФИКАТОРом GUID.
Массив должен содержать по крайней мере один элемент. Первый элемент в массиве должен находиться на нулевом уровне и идентифицировать сам объект. Массив может иметь только один нулевой элемент уровня. Второй элемент — это подобъект, например набор свойств, на уровне 1. После каждой записи уровня 1 находятся подчиненные записи для подобъектов уровня 2–4. Таким образом, уровни для элементов в массиве могут быть {0, 1, 2, 2, 1, 2, 3}. Если список типов объектов не по порядку, AccessCheckByTypeResultListAndAuditAlarmByHandle завершается ошибкой, а GetLastError возвращает ERROR_INVALID_PARAMETER.
[in] ObjectTypeListLength
Количество элементов в массиве ObjectTypeList .
[in] GenericMapping
Указатель на структуру GENERIC_MAPPING , связанную с объектом, для которого проверяется доступ.
[in] ObjectCreation
Флаг, определяющий, будет ли вызывающее приложение создавать новый объект при предоставлении доступа. Значение TRUE указывает, что приложение создаст новый объект. Значение FALSE указывает, что приложение откроет существующий объект.
[out] GrantedAccess
Указатель на массив масок доступа. Функция задает каждую маску доступа для указания прав доступа, предоставленных соответствующему элементу в списке типов объектов. Если функция завершается сбоем, она не устанавливает маски доступа.
[out] AccessStatusList
Указатель на массив кодов состояния для соответствующих элементов в списке типов объектов. Функция задает для элемента нулевое значение, чтобы указать успешное выполнение, или ненулевое значение для указания конкретной ошибки во время проверка доступа. Если функция завершается сбоем, она не задает ни один из элементов в массиве.
[out] pfGenerateOnClose
Указатель на флаг, установленный подпрограммой создания аудита при возврате функции. Передайте этот флаг функции ObjectCloseAuditAlarm при закрытии дескриптора объекта.
Возвращаемое значение
Если функция выполняется успешно, функция возвращает ненулевое значение.
Если функция завершается сбоем, она возвращает ноль. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Дополнительные сведения см. в статье Общие сведения о работе AccessCheck .
Как и AccessCheckByTypeResultListAndAuditAlarm, функция AccessCheckByTypeResultListAndAuditAlarmByHandle представляет собой сочетание функций AccessCheckByTypeResultList и AccessCheckAndAuditAlarm . Однако accessCheckByTypeResultListAndAuditAlarmByHandle также требует дескриптора маркера клиента для предоставления сведений о безопасности клиента.
Массив ObjectTypeList не обязательно представляет весь определенный объект. Скорее, он представляет подмножество объекта, к которому проверка доступ. Например, чтобы проверка доступ к двум свойствам в наборе свойств, укажите список типов объектов с четырьмя элементами: сам объект на нулевом уровне, свойство, заданное на уровне 1, и два свойства на уровне 2.
Функция AccessCheckByTypeResultListAndAuditAlarmByHandle оценивает ACE, которые применяются к самому объекту и объектам ACE для типов объектов, перечисленных в массиве ObjectTypeList . Функция игнорирует объекты ACE для типов объектов, не перечисленных в массиве ObjectTypeList .
Дополнительные сведения о том, как иерархия ACE управляет доступом к объекту и его подобъектам, см. в разделе ACE для управления доступом к свойствам объекта.
Чтобы создавать сообщения аудита в журнале событий безопасности, вызывающий процесс должен иметь разрешение SE_AUDIT_NAME. Система проверяет наличие этих привилегий в основном маркере вызывающего процесса, а не в маркере олицетворения потока. Если параметр Flags содержит флаг AUDIT_ALLOW_NO_PRIVILEGE, функция выполняет проверка доступа без создания сообщений аудита, если эта привилегия не включена.
Функция AccessCheckByTypeResultListAndAuditAlarmByHandle завершается ошибкой , если вызывающий поток не олицетворяет клиента.
Если дескриптор безопасности не содержит идентификаторы безопасности владельца и группы, accessCheckByTypeResultListAndAuditAlarmByHandle завершается сбоем с ERROR_INVALID_SECURITY_DESCR.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |
См. также раздел
AccessCheckByTypeResultListAndAuditAlarm
контроль доступа клиента или сервера
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по