IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity メソッド (aclui.h)

ComputeEffectivePermissionWithSecondarySecurity メソッドは、オブジェクトの有効なアクセス許可を計算します。 セカンダリまたはカスタムのセキュリティ ポリシーの統合がサポートされています。 この追加のセキュリティ情報を提供するには、 ISecurityInformation4 インターフェイスを実装します。 このメソッドは複合 ID をサポートします。これは、プリンシパルのアクセス トークンにユーザーとデバイスの承認情報が含まれている場合です。

構文

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 関数を使用して有効なアクセス許可を計算している場合、デバイス SID は AuthzInitializeCompoundContext 関数を使用して pSid パラメーターと複合化される可能性があります。

[in, optional] pszServerName

オブジェクトが存在するサーバーの名前。 これは、 ISecurityInformation::GetObjectInformation メソッドから返された名前と同じです。

[in] pSecurityObjects

セキュリティ オブジェクトの配列。 この配列は、 ISecurityInformation4::GetSecondarySecurity メソッドから返されたものに加えて、アクセス制御エディターによって推測されたオブジェクトで構成されます。

[in] dwSecurityObjectCount

pSecurityObjects パラメーター内のセキュリティ オブジェクトの数と、pEffpermResultLists パラメーター内の結果リストの数。

[in, optional] pUserGroups

pSid パラメーターから初期化されたセキュリティ コンテキストを変更するために使用する必要がある追加のユーザー グループへのポインター。 AuthzAccessCheck 関数を使用して有効なアクセス許可を計算する場合は、SidClass パラメーターとして AuthzContextInfoGroupsSids を使用して AuthzModifySids 関数を呼び出すことによって変更を行うことができます。

[in, optional] pAuthzUserGroupsOperations

pUserGroups引数の各ユーザー グループについて、authz コンテキスト内のユーザー グループを変更する方法を指定する、AUTHZ_SID_OPERATION構造体の配列へのポインター。 この配列には、 pUserGroups パラメーターのグループ数と同じ数の要素が含まれます。

[in, optional] pDeviceGroups

pSid パラメーターから初期化されたセキュリティ コンテキスト、または pSid パラメーターと pDeviceSid パラメーターから初期化されたコンテキストを複合して作成されたセキュリティ コンテキストを変更するために使用する必要がある追加のデバイス グループへのポインター。 AuthzAccessCheck 関数を使用して有効なアクセス許可を計算する場合は、SidClass パラメーターとして AuthzContextInfoDeviceSids を使用して AuthzModifySids 関数を呼び出すことによって変更を行うことができます。

[in, optional] pAuthzDeviceGroupsOperations

pDeviceGroups 引数各デバイス グループに対して、authz コンテキスト内のデバイス グループを変更する方法を指定する、AUTHZ_SID_OPERATION列挙型の配列へのポインター。 この配列には、 pDeviceGroups パラメーターのグループ数と同じ数の要素が含まれます。

[in, optional] pAuthzUserClaims

pSid パラメーターから初期化されたセキュリティ コンテキストを変更するために使用する必要があるユーザー要求コンテキストを含むAUTHZ_SECURITY_ATTRIBUTES_INFORMATION構造体へのポインター。 AuthzAccessCheck 関数を使用して有効なアクセス許可を計算する場合は、ClaimClass パラメーターとして AuthzContextInfoUserClaims を使用して AuthzModifyClaims 関数を呼び出すことによって変更を行うことができます。

[in, optional] pAuthzUserClaimsOperations

ユーザー要求コンテキストに関連付けられている操作を指定する AUTHZ_SECURITY_ATTRIBUTE_OPERATION 列挙型へのポインター。

[in, optional] pAuthzDeviceClaims

pSid パラメーターから初期化されたセキュリティ コンテキスト、または pSid パラメーターと pDeviceSid パラメーターから初期化されたコンテキストを複合して作成されたセキュリティ コンテキストを変更するために使用する必要があるデバイス要求コンテキストへのポインター。 これは、pDeviceSid パラメーターが指定されていない場合でも、呼び出し元によって提供される場合があります。 AuthzAccessCheck 関数を使用して有効なアクセス許可を計算する場合は、ClaimClass パラメーターとして AuthzContextInfoDeviceClaims を使用して AuthzModifyClaims 関数を呼び出すことによって変更を行うことができます。

[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 メンバーは NULL GUID を指し、cObjectTypeListLength メンバーは 1、pGrantedAccessList メンバーは 1 つの DWORD である必要があります。

戻り値

関数が成功した場合、戻り値はS_OK。

関数が成功してもおおよその結果が返された場合、戻り値はS_FALSE。

関数が失敗した場合、戻り値はエラーを示す HRESULT です。 一般的なエラー コードの一覧については、「 共通 HRESULT 値」を参照してください。

注釈

id メンバーのSECURITY_OBJECT構造体がSECURITY_OBJECT_ID_CENTRAL_ACCESS_RULEに設定されている場合、ComputeEffectivePermissionWithSecondarySecurity メソッドは最初に pData2 メンバーを使用し、その後は pData メンバーを使用してアクセスを評価する必要があります。

呼び出し元が AuthzAccessCheck を使用して、有効なアクセス許可を決定することが予想されます。 可能であれば、AuthzInitializeRemoteResourceManager 関数を使用して、指定された pszServerName メンバーでリモート リソース マネージャーを初期化し、プリンシパルが実際にオブジェクトにアクセスする場合と同じ方法でグループとクレームが初期化されるようにする必要があります。 AuthzInitializeRemoteResourceManager が失敗した場合、実装は AuthzInitializeResourceManager 関数を使用してフォールバックし、S_FALSEを返しておおよその結果が返されることを示す可能性があります。

fEvaluated メンバーが TRUE に設定されているセカンダリ セキュリティ オブジェクトごとに、アクセス制御エディターは pwszName メンバーを使用してそのオブジェクトによって制限されたアクセス許可とプロパティを表示します。

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー aclui.h

こちらもご覧ください

AUTHZ_SECURITY_ATTRIBUTE_OPERATION

AuthzInitializeRemoteResourceManager

IEffectivePermission2

ISecurityInformation4::GetSecondarySecurity

SECURITY_OBJECT