次の方法で共有


プライベート オブジェクトへのアクセスの確認

保護されたサーバー アプリケーションは、クライアントが保護されたプライベート オブジェクトにアクセスできるようにする前に、クライアントのアクセス権をチェックする必要があります。 これを行うために、サーバーは 偽装トークン、セキュリティ記述子、および要求されたアクセス権のセットを AccessCheck に渡します。 セキュリティ記述子の DACL のアクセス制御エントリ (ACE) は、さまざまなトラスティに対して許可または拒否されるアクセス権を指定します。 AccessCheck 関数は、各 ACE のトラスティを、偽装トークンで識別されたトラスティと比較します。 アクセスの許可または拒否に使用されるアルゴリズムの説明については、「 オブジェクトへのアクセスを DACLs が制御する方法」を参照してください。

AccessCheckAndAuditAlarm 関数は、同様のアクセス チェックを実行します。 さらに、セキュリティ記述子の SACL に応じて、セキュリティ イベント ログに監査レコードが生成されます。

AccessCheckByType 関数と AccessCheckByTypeAndAuditAlarm 関数は、AccessCheck 関数と AccessCheckAndAuditAlarm 関数と似ていますが、プロパティ セットやプロパティなど、オブジェクトのサブオブジェクトにチェックアクセスできる点が例外です。 AccessCheckByTypeResultList 関数と AccessCheckByTypeResultListAndAuditAlarm 関数も AccessCheck に似ていますが、オブジェクトのプロパティとプロパティ セットの階層内の各サブオブジェクトに対してアクセスチェック結果が提供される点が除きます。 これらの関数は 、OBJECT_TYPE_LIST 構造を使用して、アクセスがチェックされるオブジェクトの階層を記述します。 監査メッセージを生成する関数は、 AUDIT_EVENT_TYPE 列挙型を使用して、チェック対象のオブジェクトがディレクトリ サービス オブジェクトかどうかを示します。 オブジェクトとそのサブオブジェクトの階層の詳細については、「オブジェクトの プロパティへのアクセスを制御する ACE」を参照してください。

AccessCheck 関数と AccessCheckAndAuditAlarm 関数に渡される要求されたアクセス権には、汎用アクセス権を含めてはなりません。 サーバーは MapGenericMask 関数を使用して、 GENERIC_MAPPING構造体で 指定されたマッピングに従って、汎用アクセス権を対応する特定の標準権限に変換できます。

AreAllAccessesGranted 関数と AreAnyAccessesGranted 関数は、要求されたアクセス マスクと、許可されたアクセス マスクを比較します。

AccessCheck 関数を使用するサンプル コードについては、「C++ での ACL を使用したクライアント アクセスの検証」を参照してください。

ConvertToAutoInheritPrivateObjectSecurity 関数は、継承可能な ACE の自動伝達を可能にする形式でセキュリティ記述子を作成して返します。 このセキュリティ記述子には、現在のセキュリティ記述子に継承され、非継承されたすべての ACE が含まれており、 自己相対 形式です。 ConvertToAutoInheritPrivateObjectSecurity 関数は、現在のセキュリティ記述子のすべての ACE と、その親セキュリティ記述子のすべての ACE を比較することによって、ACE を継承するか非継承するかを決定します。 ACE の 2 つのグループ間に 1 対 1 の対応が存在しない場合があります。 たとえば、読み取り/書き込みアクセス許可を許可する ACE は、読み取りアクセス許可を許可する ACE と書き込みアクセス許可を許可する ACE の 2 つの ACE と同じにすることができます。 現在のセキュリティ記述子が親である場合、親セキュリティ記述子を指定することはできません。