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


Метод 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

IEffectivePermission2

ISecurityInformation4::GetSecondarySecurity

SECURITY_OBJECT