Метод IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity (aclui.h)
Метод ComputeEffectivePermissionWithSecondarySecurity вычисляет действующие разрешения для объекта . Он поддерживает интеграцию дополнительных или пользовательских политик безопасности. Вы можете предоставить эти дополнительные сведения о безопасности, реализовав интерфейс ISecurityInformation4 . Этот метод поддерживает составное удостоверение, когда маркер доступа субъекта содержит сведения об авторизации пользователя и устройства.
Синтаксис
HRESULT ComputeEffectivePermissionWithSecondarySecurity(
[in] PSID pSid,
[in, optional] PSID pDeviceSid,
[in, optional] PCWSTR pszServerName,
[in] PSECURITY_OBJECT pSecurityObjects,
[in] DWORD dwSecurityObjectCount,
[in, optional] PTOKEN_GROUPS pUserGroups,
[in, optional] PAUTHZ_SID_OPERATION pAuthzUserGroupsOperations,
[in, optional] PTOKEN_GROUPS pDeviceGroups,
[in, optional] PAUTHZ_SID_OPERATION pAuthzDeviceGroupsOperations,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzUserClaims,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION pAuthzUserClaimsOperations,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzDeviceClaims,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION pAuthzDeviceClaimsOperations,
[in, out] PEFFPERM_RESULT_LIST pEffpermResultLists
);
Параметры
[in] pSid
Указатель на структуру SID , представляющую субъект безопасности, для которого определяется действующее разрешение.
[in, optional] pDeviceSid
Указатель на структуру SID , представляющую устройство, с которого субъект обращается к объекту. Если значение не равно NULL и для вычисления действующих разрешений используется функция AuthzAccessCheck , то идентификатор безопасности устройства может быть обучен параметром pSid с помощью функции AuthzInitializeCompoundContext .
[in, optional] pszServerName
Имя сервера, на котором находится объект. Это то же имя, которое было возвращено методом ISecurityInformation::GetObjectInformation .
[in] pSecurityObjects
Массив объектов безопасности. Этот массив состоит из объектов, которые были выведены редактором управления доступом в дополнение к объектам, возвращенным методом ISecurityInformation4::GetSecondarySecurity .
[in] dwSecurityObjectCount
Количество объектов безопасности в параметре pSecurityObjects и количество списков результатов в параметре pEffpermResultLists .
[in, optional] pUserGroups
Указатель на дополнительные группы пользователей, которые следует использовать для изменения контекста безопасности, инициализированного с помощью параметра pSid . Если вы используете функцию AuthzAccessCheck для вычисления действующих разрешений, то изменение может быть выполнено путем вызова функции AuthzModifySids с использованием AuthzContextInfoGroupsSids в качестве параметра SidClass .
[in, optional] pAuthzUserGroupsOperations
Указатель на массив AUTHZ_SID_OPERATION структур, указывающих способ изменения групп пользователей в контексте authz для каждой группы пользователей в аргументе pUserGroups . Этот массив содержит столько элементов, сколько количество групп в параметре pUserGroups .
[in, optional] pDeviceGroups
Указатель на дополнительные группы устройств, которые следует использовать для изменения контекста безопасности, который был инициализирован с помощью параметра pSid , или тот, который был создан путем соединения контекстов, инициализированных из параметров pSid и pDeviceSid . Если для вычисления действующих разрешений используется функция AuthzAccessCheck , то изменение может быть выполнено путем вызова функции AuthzModifySids с использованием AuthzContextInfoDeviceSids в качестве параметра SidClass .
[in, optional] pAuthzDeviceGroupsOperations
Указатель на массив AUTHZ_SID_OPERATION типов перечисления, указывающих, как группы устройств в контексте authz должны изменяться для каждой группы устройств в аргументе pDeviceGroups . Этот массив содержит столько элементов, сколько групп в параметре pDeviceGroups .
[in, optional] pAuthzUserClaims
Указатель на структуру AUTHZ_SECURITY_ATTRIBUTES_INFORMATION , содержащую контекст утверждений пользователя, который следует использовать для изменения контекста безопасности, инициализированного с помощью параметра pSid . Если вы используете функцию AuthzAccessCheck для вычисления действующих разрешений, то изменение может быть выполнено путем вызова функции AuthzModifyClaims с использованием AuthzContextInfoUserClaims в качестве параметра ClaimClass .
[in, optional] pAuthzUserClaimsOperations
Указатель на тип перечисления AUTHZ_SECURITY_ATTRIBUTE_OPERATION , указывающий операции, связанные с контекстом утверждений пользователя.
[in, optional] pAuthzDeviceClaims
Указатель на контекст утверждений устройства, который следует использовать для изменения контекста безопасности, инициализированного из параметра pSid , или контекста, созданного путем соединения контекстов, инициализированных из параметров pSid и pDeviceSid . Его может предоставить вызывающий объект, даже если параметр pDeviceSid не задан. Если вы используете функцию AuthzAccessCheck для вычисления действующих разрешений, то изменение может быть выполнено путем вызова функции AuthzModifyClaims с использованием AuthzContextInfoDeviceClaims в качестве параметра ClaimClass .
[in, optional] pAuthzDeviceClaimsOperations
Указатель на тип перечисления AUTHZ_SECURITY_ATTRIBUTE_OPERATION , указывающий операции, связанные с контекстом утверждений устройства.
[in, out] pEffpermResultLists
Указатель на массив действующих результатов разрешений типа EFFPERM_RESULT_LIST. Этот массив имеет длину элементов dwSecurityObjectCount . Массив инициализируется вызывающим объектом, и реализация должна задать все поля каждого элемента в массиве, указывая, какой доступ был предоставлен соответствующим объектом безопасности.
Если был рассмотрен объект безопасности, для элемента fEvaluated должно быть задано значение TRUE. В этом случае элементы pObjectTypeList и pGrantedAccessList должны быть длинными элементами cObjectTypeListLength . Элемент pObjectTypeList должен указывать на память, принадлежающую диспетчеру ресурсов, и должен оставаться действительной до завершения работы функции EditSecurity . Член pGrantedAccessList освобождается вызывающим с помощью функции LocalFree . Если диспетчер ресурсов не поддерживает объекты ACE, то элемент pObjectTypeList должен указывать на GUID NULL , элемент cObjectTypeListLength должен иметь значение 1, а элемент pGrantedAccessList должен быть одним DWORD.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет S_OK.
Если функция прошла успешно, но вернула приблизительный результат, возвращаемое значение будет S_FALSE.
Если функция завершается сбоем, возвращаемым значением является HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
Комментарии
Если для элемента Id, для структуры SECURITY_OBJECT задано значение SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE, метод ComputeEffectivePermissionWithSecondarySecurity должен сначала использовать элемент pData2, а затем оценивать доступ с помощью элемента pData.
Ожидается, что вызывающий объект будет использовать AuthzAccessCheck для определения действующих разрешений. По возможности реализация должна инициализировать удаленный диспетчер ресурсов в предоставленном элементе pszServerName , используя функцию AuthzInitializeRemoteResourceManager , чтобы обеспечить инициализацию групп и утверждений так же, как при действительном обращении субъекта к объекту. Если AuthzInitializeRemoteResourceManager завершается сбоем, реализация может вернуться к использованию функции AuthzInitializeResourceManager и вернуть S_FALSE, чтобы указать, что возвращаются приблизительные результаты.
Для каждого из вторичных объектов безопасности, элемент которого fEvaluated имеет значение TRUE, редактор управления доступом будет отображать, какие разрешения и свойства были ограничены этим объектом с помощью члена pwszName .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Целевая платформа | Windows |
Header | aclui.h |
См. также раздел
AUTHZ_SECURITY_ATTRIBUTE_OPERATION
AuthzInitializeRemoteResourceManager