Freigeben über


IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity-Methode (aclui.h)

Die ComputeEffectivePermissionWithSecondarySecurity-Methode berechnet die effektiven Berechtigungen für ein Objekt. Es unterstützt die Integration sekundärer oder benutzerdefinierter Sicherheitsrichtlinien. Sie können diese zusätzlichen Sicherheitsinformationen angeben, indem Sie die ISecurityInformation4-Schnittstelle implementieren. Diese Methode unterstützt zusammengesetzte Identitäten, wenn das Zugriffstoken eines Prinzipals Benutzer- und Geräteautorisierungsinformationen enthält.

Syntax

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

Parameter

[in] pSid

Ein Zeiger auf eine SID-Struktur , die den Sicherheitsprinzipal darstellt, dessen effektive Berechtigung bestimmt wird.

[in, optional] pDeviceSid

Ein Zeiger auf eine SID-Struktur , die das Gerät darstellt, von dem aus der Prinzipal auf das Objekt zugreift. Wenn dies nicht NULL ist und Sie die AuthzAccessCheck-Funktion verwenden, um die effektiven Berechtigungen zu berechnen, kann die Geräte-SID mithilfe der AuthzInitializeCompoundContext-Funktion mit dem Parameter pSid zusammengesetzt werden.

[in, optional] pszServerName

Der Name des Servers, auf dem sich das Objekt befindet. Dies ist derselbe Name, der von der ISecurityInformation::GetObjectInformation-Methode zurückgegeben wurde.

[in] pSecurityObjects

Ein Array von Sicherheitsobjekten. Dieses Array besteht aus Objekten, die vom Zugriffssteuerungs-Editor abgeleitet wurden, zusätzlich zu den Objekten, die von der ISecurityInformation4::GetSecondarySecurity-Methode zurückgegeben wurden.

[in] dwSecurityObjectCount

Die Anzahl der Sicherheitsobjekte im pSecurityObjects-Parameter und die Anzahl der Ergebnisse, die im pEffpermResultLists-Parameter aufgeführt sind.

[in, optional] pUserGroups

Ein Zeiger auf zusätzliche Benutzergruppen, die zum Ändern des Sicherheitskontexts verwendet werden sollen, der aus dem pSid-Parameter initialisiert wurde. Wenn Sie die AuthzAccessCheck-Funktion verwenden, um die effektiven Berechtigungen zu berechnen, kann die Änderung durch Aufrufen der AuthzModifySids-Funktion mithilfe von AuthzContextInfoGroupsSids als SidClass-Parameter erfolgen.

[in, optional] pAuthzUserGroupsOperations

Zeiger auf ein Array von AUTHZ_SID_OPERATION Strukturen, die angeben, wie die Benutzergruppen im authz-Kontext für jede Benutzergruppe im pUserGroups-Argument geändert werden müssen. Dieses Array enthält so viele Elemente wie die Anzahl von Gruppen im pUserGroups-Parameter .

[in, optional] pDeviceGroups

Ein Zeiger auf zusätzliche Gerätegruppen, die verwendet werden sollen, um den Sicherheitskontext zu ändern, der aus dem pSid-Parameter initialisiert wurde, oder einen, der durch Das Anfügen der Kontexte erstellt wurde, die aus den Parametern pSid und pDeviceSid initialisiert wurden. Wenn Sie die AuthzAccessCheck-Funktion verwenden, um die effektiven Berechtigungen zu berechnen, kann die Änderung durch Aufrufen der AuthzModifySids-Funktion mithilfe von AuthzContextInfoDeviceSids als SidClass-Parameter erfolgen.

[in, optional] pAuthzDeviceGroupsOperations

Zeiger auf ein Array von AUTHZ_SID_OPERATION Enumerationstypen, die angeben, wie die Gerätegruppen im authz-Kontext für jede Gerätegruppe im Argument pDeviceGroups geändert werden müssen. Dieses Array enthält so viele Elemente wie die Anzahl von Gruppen im pDeviceGroups-Parameter .

[in, optional] pAuthzUserClaims

Zeiger auf eine AUTHZ_SECURITY_ATTRIBUTES_INFORMATION-Struktur , die den Benutzeranspruchskontext enthält, der verwendet werden soll, um den Sicherheitskontext zu ändern, der aus dem pSid-Parameter initialisiert wurde. Wenn Sie die AuthzAccessCheck-Funktion verwenden, um die effektiven Berechtigungen zu berechnen, kann die Änderung durch Aufrufen der AuthzModifyClaims-Funktion mithilfe von AuthzContextInfoUserClaims als ClaimClass-Parameter erfolgen.

[in, optional] pAuthzUserClaimsOperations

Zeiger auf einen AUTHZ_SECURITY_ATTRIBUTE_OPERATION Enumerationstyp, der die Vorgänge angibt, die dem Benutzeranspruchskontext zugeordnet sind.

[in, optional] pAuthzDeviceClaims

Ein Zeiger auf den Geräteanspruchskontext, der verwendet werden soll, um den Sicherheitskontext zu ändern, der aus dem pSid-Parameter initialisiert wurde, oder einer, der durch Das Compoundieren der Kontexte erstellt wurde, die aus den Parametern pSid und pDeviceSid initialisiert wurden. Dies kann vom Aufrufer bereitgestellt werden, auch wenn der pDeviceSid-Parameter nicht ist. Wenn Sie die AuthzAccessCheck-Funktion verwenden, um die effektiven Berechtigungen zu berechnen, kann die Änderung durch Aufrufen der AuthzModifyClaims-Funktion mithilfe von AuthzContextInfoDeviceClaims als ClaimClass-Parameter erfolgen.

[in, optional] pAuthzDeviceClaimsOperations

Zeiger auf einen AUTHZ_SECURITY_ATTRIBUTE_OPERATION Enumerationstyp, der die Vorgänge angibt, die dem Geräteanspruchskontext zugeordnet sind.

[in, out] pEffpermResultLists

Ein Zeiger auf ein Array der effektiven Berechtigungsergebnisse vom Typ EFFPERM_RESULT_LIST. Dieses Array ist dwSecurityObjectCount-Elemente lang. Das Array wird vom Aufrufer initialisiert, und von der Implementierung wird erwartet, dass alle Felder der einzelnen Member im Array festgelegt werden, was angibt, welcher Zugriff vom entsprechenden Sicherheitsobjekt gewährt wurde.

Wenn ein Sicherheitsobjekt in Betracht gezogen wurde, sollte das fEvaluierte Element auf TRUE festgelegt werden. In diesem Fall sollten die Elemente pObjectTypeList und pGrantedAccessList lang cObjectTypeListLength sein. Das pObjectTypeList-Element muss auf den Speicher verweisen, der sich im Besitz des Ressourcen-Managers befindet, und muss gültig bleiben, bis die EditSecurity-Funktion beendet wird. Das pGrantedAccessList-Element wird vom Aufrufer mithilfe der LocalFree-Funktion freigegeben. Wenn der Ressourcen-Manager keine Objekt-ACEs unterstützt, sollte das pObjectTypeList-Element auf die NULL-GUID , das cObjectTypeListLength-Element 1 und das pGrantedAccessList-Element ein einzelnes DWORD sein.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert S_OK.

Wenn die Funktion erfolgreich ist, aber ein ungefähres Ergebnis zurückgegeben hat, wird der Rückgabewert S_FALSE.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein HRESULT, das den Fehler angibt. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.

Hinweise

Wenn das Id-Element der SECURITY_OBJECT-Struktur auf SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE festgelegt ist, sollte die ComputeEffectivePermissionWithSecondarySecurity-Methode zuerst den pData2-Member verwenden und dann erst den Zugriff mithilfe des pData-Elements auswerten.

Es wird erwartet, dass der Aufrufer AuthzAccessCheck verwendet, um die effektiven Berechtigungen zu bestimmen. Wenn möglich, sollte die Implementierung einen Remoteressourcen-Manager auf dem angegebenen pszServerName-Member initialisieren, wobei die AuthzInitializeRemoteResourceManager-Funktion verwendet wird, um sicherzustellen, dass die Gruppen und Ansprüche auf die gleiche Weise initialisiert werden, wie der Prinzipal tatsächlich auf das Objekt zugreift. Wenn AuthzInitializeRemoteResourceManager fehlschlägt, kann die Implementierung auf die Verwendung der AuthzInitializeResourceManager-Funktion zurückgreifen und S_FALSE zurückgeben, um anzugeben, dass ungefähre Ergebnisse zurückgegeben werden.

Für jedes sekundäre Sicherheitsobjekt, dessen fEvaluated-Member auf TRUE festgelegt ist, zeigt der Zugriffssteuerungs-Editor mithilfe des pwszName-Elements an, welche Berechtigungen und Eigenschaften von diesem Objekt eingeschränkt wurden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile aclui.h

Weitere Informationen

AUTHZ_SECURITY_ATTRIBUTE_OPERATION

AuthzInitializeRemoteResourceManager

IEffectivePermission2

ISecurityInformation4::GetSecondarySecurity

SECURITY_OBJECT