アクセス制御エントリ

アクセス制御エントリ (ACE) は、特定の SID に関連付けられているアクセス権を記述します。 アクセス制御エントリは、その資格情報に基づいて特定のプログラムに付与する有効なアクセス権を計算するために、オペレーティング システムによって評価されます。 たとえば、ユーザーがコンピューターにログオンしてプログラムを実行すると、そのプログラムではその特定のユーザーのアカウントに関連付けられている資格情報が使用されます。

そのため、プログラムがオブジェクトを開こうとすると、Windows はそのプログラムに関連付けられている資格情報を、そのオブジェクトに関連付けられているセキュリティ コントロールと比較します。 次に、セキュリティ参照モニターが ACE 情報を使用して、プログラムがその特定のオブジェクトにアクセスするのを許可するか、拒否するかを判断します。 したがって、ACE はセキュリティ サブシステムの動作を決定するといえます。

次の図は、アクセス制御エントリを示しています。

diagram illustrating the access control entry.

セキュリティ サブシステムでは、5 種類の ACE が使用されます。 ACE 構造体の Type メンバーによって、その ACE を解釈する方法を指定します。 定義されている種類は次のとおりです。

  • ACCESS_ALLOWED_ACE_TYPE — この種類は、ACE が特定の SID に付与されるアクセス権を指定していることを示します。

  • ACCESS_DENIED_ACE_TYPE — この種類は、ACE が特定の SID に対して拒否されるアクセス権を指定していることを示します。

  • SYSTEM_AUDIT_ACE_TYPE — この種類は、ACE が監査動作を指定していることを示します。

  • SYSTEM_ALARM_ACE_TYPE — この種類は、ACE がアラーム動作を指定していることを示します。

  • ACCESS_ALLOWED_COMPOUND_ACE_TYPE — この種類は、ACE が特定のサーバーとそれが偽装しているエンティティに関連付けられていることを示します。

このように、3 つの種類はオブジェクトへのプログラムによるアクセスを制御するために使用され、他の 2 つはオブジェクトにアクセスする際のセキュリティ サブシステムの監査とアラームの動作を制御するために使用されます。 セキュリティ サブシステムの実際の動作は、オブジェクトに関連付けられている一部またはすべての ACE の情報を組み合わせることで計算されることに注意してください。

ドライバーは、ルーチン RtlAddAccessAllowedAce を使用して ACCESS_ALLOWED_ACE_TYPE のアクセス制御エントリを構築できます。 WDK には他のサポート ルーチンが用意されていないため、他の種類の ACE エントリを追加する場合は、ドライバーの作成者が独自の関数を構築する必要があります。