Método IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity (aclui.h)

El método ComputeEffectivePermissionWithSecondarySecurity calcula los permisos efectivos de un objeto. Admite la integración de directivas de seguridad secundarias o personalizadas. Puede optar por proporcionar esta información de seguridad adicional mediante la implementación de la interfaz ISecurityInformation4 . Este método admite la identidad compuesta, que es cuando el token de acceso de una entidad de seguridad contiene información de autorización de usuario y dispositivo.

Sintaxis

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
);

Parámetros

[in] pSid

Puntero a una estructura de SID que representa la entidad de seguridad cuyo permiso efectivo se determina.

[in, optional] pDeviceSid

Puntero a una estructura de SID que representa el dispositivo desde el que la entidad de seguridad tiene acceso al objeto. Si no es NULL y usa la función AuthzAccessCheck para calcular los permisos efectivos, el SID del dispositivo puede estar compuesto con el parámetro pSid mediante la función AuthzInitializeCompoundContext .

[in, optional] pszServerName

Nombre del servidor en el que reside el objeto. Este es el mismo nombre que se devolvió desde el método ISecurityInformation::GetObjectInformation .

[in] pSecurityObjects

Matriz de objetos de seguridad. Esta matriz se compone de objetos que se han deducido por el editor de control de acceso, además de los devueltos por el método ISecurityInformation4::GetSecondarySecurity .

[in] dwSecurityObjectCount

Número de objetos de seguridad en el parámetro pSecurityObjects y el número de listas de resultados en el parámetro pEffpermResultLists .

[in, optional] pUserGroups

Puntero a grupos de usuarios adicionales que se deben usar para modificar el contexto de seguridad que se inicializó desde el parámetro pSid . Si usa la función AuthzAccessCheck para calcular los permisos efectivos, la modificación se puede realizar llamando a la función AuthzModifySids mediante AuthzContextInfoGroupsSids como parámetro SidClass .

[in, optional] pAuthzUserGroupsOperations

Puntero a una matriz de estructuras de AUTHZ_SID_OPERATION que especifican cómo se deben modificar los grupos de usuarios en el contexto de authz para cada grupo de usuarios en el argumento pUserGroups . Esta matriz contiene tantos elementos como el número de grupos en el parámetro pUserGroups .

[in, optional] pDeviceGroups

Puntero a grupos de dispositivos adicionales que se deben usar para modificar el contexto de seguridad que se inicializó desde el parámetro pSid o uno creado mediante la combinación de los contextos inicializados a partir de los parámetros pSid y pDeviceSid . Si usa la función AuthzAccessCheck para calcular los permisos efectivos, la modificación se puede realizar llamando a la función AuthzModifySids mediante AuthzContextInfoDeviceSids como parámetro SidClass .

[in, optional] pAuthzDeviceGroupsOperations

Puntero a una matriz de AUTHZ_SID_OPERATION tipos de enumeración que especifican cómo se deben modificar los grupos de dispositivos en el contexto de authz para cada grupo de dispositivos del argumento pDeviceGroups . Esta matriz contiene tantos elementos como el número de grupos en el parámetro pDeviceGroups .

[in, optional] pAuthzUserClaims

Puntero a una estructura de AUTHZ_SECURITY_ATTRIBUTES_INFORMATION que contiene el contexto de notificaciones de usuario que se debe usar para modificar el contexto de seguridad que se inicializó a partir del parámetro pSid . Si usa la función AuthzAccessCheck para calcular los permisos efectivos, la modificación se puede realizar llamando a la función AuthzModifyClaims mediante AuthzContextInfoUserClaims como parámetro ClaimClass .

[in, optional] pAuthzUserClaimsOperations

Puntero a un tipo de enumeración AUTHZ_SECURITY_ATTRIBUTE_OPERATION que especifica las operaciones asociadas al contexto de notificaciones del usuario.

[in, optional] pAuthzDeviceClaims

Puntero al contexto de notificaciones del dispositivo que se debe usar para modificar el contexto de seguridad que se inicializó desde el parámetro pSid o uno creado mediante la combinación de los contextos inicializados a partir de los parámetros pSid y pDeviceSid . Esto puede ser proporcionado por el autor de la llamada, incluso si el parámetro pDeviceSid no es . Si usa la función AuthzAccessCheck para calcular los permisos efectivos, la modificación se puede realizar llamando a la función AuthzModifyClaims mediante AuthzContextInfoDeviceClaims como parámetro ClaimClass .

[in, optional] pAuthzDeviceClaimsOperations

Puntero a un tipo de enumeración AUTHZ_SECURITY_ATTRIBUTE_OPERATION que especifica las operaciones asociadas al contexto de notificaciones del dispositivo.

[in, out] pEffpermResultLists

Puntero a una matriz de los resultados de permisos efectivos del tipo EFFPERM_RESULT_LIST. Esta matriz es los elementos dwSecurityObjectCount largos. El autor de la llamada inicializa la matriz y se espera que la implementación establezca todos los campos de cada miembro de la matriz, lo que indica qué acceso concedió el objeto de seguridad correspondiente.

Si se ha considerado un objeto de seguridad, el miembro fEvaluated debe establecerse en TRUE. En este caso, los miembros pObjectTypeList y pGrantedAccessList deben ser elementos cObjectTypeListLength long. El miembro pObjectTypeList debe apuntar a la memoria que pertenece al administrador de recursos y debe permanecer válido hasta que se cierre la función EditSecurity . El autor de la llamada libera el miembro pGrantedAccessList mediante la función LocalFree . Si el administrador de recursos no admite acees de objeto, el miembro pObjectTypeList debe apuntar al GUID NULL , el miembro cObjectTypeListLength debe ser 1 y el miembro pGrantedAccessList debe ser un único DWORD.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto se S_OK.

Si la función se ejecuta correctamente pero devuelve un resultado aproximado, el valor devuelto es S_FALSE.

Si se produce un error en la función, el valor devuelto es un VALOR HRESULT que indica el error. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

Comentarios

Cuando el miembro Id de la estructura SECURITY_OBJECT se establece en SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE, el método ComputeEffectivePermissionWithSecondarySecurity debe usar primero el miembro pData2 y, a continuación, evaluar el acceso mediante el miembro pData .

Se espera que el autor de la llamada use AuthzAccessCheck para determinar los permisos efectivos. Cuando sea posible, la implementación debe inicializar un administrador de recursos remoto en el miembro pszServerName proporcionado, mediante la función AuthzInitializeRemoteResourceManager para asegurarse de que los grupos y las notificaciones se inicializan de la misma manera que cuando la entidad de seguridad accede realmente al objeto. Si se produce un error en AuthzInitializeRemoteResourceManager , la implementación puede revertir al uso de la función AuthzInitializeResourceManager y devolver S_FALSE para indicar que se devuelven los resultados aproximados.

Para cada uno de los objetos de seguridad secundarios cuyo miembro fEvaluated está establecido en TRUE, el editor de control de acceso mostrará qué permisos y propiedades estaban limitados por ese objeto mediante el miembro pwszName .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado aclui.h

Consulte también

AUTHZ_SECURITY_ATTRIBUTE_OPERATION

AuthzInitializeRemoteResourceManager

IEffectivePermission2

ISecurityInformation4::GetSecondarySecurity

SECURITY_OBJECT