AuthzAccessCheck 関数 (authz.h)

AuthzAccessCheck 関数は、特定のセキュリティ記述子のセットに対してクライアントに付与できるアクセス ビットを決定します。 AUTHZ_ACCESS_REPLY構造体は、許可されたアクセス マスクとエラー状態の配列を返します。 必要に応じて、常に許可されるアクセス マスクをキャッシュでき、キャッシュされた値へのハンドルが返されます。

構文

AUTHZAPI BOOL AuthzAccessCheck(
  [in]            DWORD                              Flags,
  [in]            AUTHZ_CLIENT_CONTEXT_HANDLE        hAuthzClientContext,
  [in]            PAUTHZ_ACCESS_REQUEST              pRequest,
  [in, optional]  AUTHZ_AUDIT_EVENT_HANDLE           hAuditEvent,
  [in]            PSECURITY_DESCRIPTOR               pSecurityDescriptor,
  [in, optional]  PSECURITY_DESCRIPTOR               *OptionalSecurityDescriptorArray,
  [in, optional]  DWORD                              OptionalSecurityDescriptorCount,
  [in, out]       PAUTHZ_ACCESS_REPLY                pReply,
  [out, optional] PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE phAccessCheckResults
);

パラメーター

[in] Flags

セキュリティ記述子のコピー方法を指定する DWORD 値。 このパラメーターには、次の値のいずれかを指定できます。

Windows 8 および Windows Server 2012 以降では、リモート コンテキスト ハンドルでこの関数を呼び出すとき、上位 16 ビットはゼロである必要があります。

意味
0
phAccessCheckResultsNULL でない場合、セキュリティ記述子のディープ コピーは、phAccessCheckResults によって参照されるハンドルにコピーされます。
AUTHZ_ACCESS_CHECK_NO_DEEP_COPY_SD
1
セキュリティ記述子のディープ コピーは実行されません。 呼び出し元のアプリケーションは、phAccessCheckResultsAUTHZ_ACCESS_CHECK_RESULTS_HANDLE ハンドルのアドレスを渡す必要があります。 AuthzAccessCheck 関数は、AuthzCachedAccessCheck の後続の呼び出し中に有効なままにする必要があるセキュリティ記述子にこのハンドルを設定します

[in] hAuthzClientContext

クライアントを表す構造体へのハンドル。

Windows 8とWindows Server 2012以降、クライアント コンテキストはローカルまたはリモートにすることができます。

[in] pRequest

目的 のアクセス マスク、プリンシパル自己 セキュリティ識別子 (SID)、およびオブジェクト型リスト構造 (存在する場合) を指定するAUTHZ_ACCESS_REQUEST構造体へのポインター。

[in, optional] hAuditEvent

オブジェクト固有の監査情報を含む構造体。 このパラメーターの値が null でない場合は、監査が自動的に要求されます。 静的監査情報は、リソース マネージャー構造から読み取られます。

Windows 8 および Windows Server 2012 以降では、リモート コンテキスト ハンドルでこの関数を使用する場合、パラメーターの値は NULL である必要があります。

[in] pSecurityDescriptor

アクセス チェックに使用する SECURITY_DESCRIPTOR 構造体へのポインター。 オブジェクトの所有者 SID は、このセキュリティ記述子から選択されます。 このセキュリティ記述子の NULL 随意アクセス制御リスト (DACL) は、オブジェクト全体の NULL DACL を表します。 セキュリティ記述子に OWNER と DACL の情報が含まれていることを確認するか、エラー コード 87 または "無効なパラメーター" メッセージが生成されます。

重要なNULL DACL では、すべてのユーザーに対するすべての種類のアクセスが許可されます。そのため、 NULL DACL は使用しないでください。 DACL の作成の詳細については、「 DACL の作成」を参照してください。
 
このセキュリティ記述子の NULL システム アクセス制御リスト (SACL) は、空の SACL と同じように扱われます。

[in, optional] OptionalSecurityDescriptorArray

SECURITY_DESCRIPTOR構造体の配列。 これらのセキュリティ記述子の NULL アクセス制御リスト (ACL) は、空の ACL として扱われます。 オブジェクト全体の ACL は、すべての ACL の論理連結です。

[in, optional] OptionalSecurityDescriptorCount

プライマリ セキュリティ記述子を含まないセキュリティ記述子の数。

[in, out] pReply

アクセス チェックの結果を含むAUTHZ_ACCESS_REPLY構造体へのポインター。 AuthzAccessCheck 関数を呼び出す前に、アプリケーションは pReply によって参照されるAUTHZ_ACCESS_REPLY構造体の GrantedAccessMask メンバーと SaclEvaluationResults メンバーにメモリを割り当てる必要があります。

[out, optional] phAccessCheckResults

アクセス チェックのキャッシュされた結果へのハンドルを返すポインター。 このパラメーター値が null でない場合、このアクセスチェック呼び出しの結果はキャッシュされます。 これにより、MAXIMUM_ALLOWED チェックが作成されます。

Windows 8 および Windows Server 2012 以降では、リモート コンテキスト ハンドルでこの関数を使用する場合、パラメーターの値は NULL である必要があります。

戻り値

関数が成功した場合、関数は TRUE を返します。

関数が失敗すると、 FALSE が返されます。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

pSecurityDescriptor パラメーターが指すSECURITY_DESCRIPTOR構造体の DACL にコールバック アクセス制御エントリ (ACE) が含まれている場合、AuthzAccessCheckCallback コールバック関数が呼び出されます。

条件付き式で参照される場合、セキュリティ属性変数はクライアント コンテキストに存在する必要があります。それ以外の場合、それらを参照する条件式の用語は不明と評価されます。 詳細については、「 条件付き ACE のセキュリティ記述子定義言語」トピックを 参照してください。

詳細については、「 AccessCheck のしくみ 」および「 一元化された承認ポリシー の概要」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー authz.h
Library Authz.lib
[DLL] Authz.dll
再頒布可能パッケージ Windows XP の Windows Server 2003 管理ツール パック

こちらもご覧ください

AUTHZ_ACCESS_REPLY

AUTHZ_ACCESS_REQUEST

AuthzCachedAccessCheck

基本的なAccess Control関数

一元化された承認ポリシー

AccessCheck のしくみ

SECURITY_DESCRIPTOR

条件付き ACE のセキュリティ記述子定義言語