アクセス制御エントリ
アクセス制御エントリ (ACE) は、特定のセキュリティ識別子 (SID) に関連付けられているアクセス権を記述します。 OS は ACE を評価し、資格情報に基づいて特定のプログラムに付与された有効なアクセス権を計算します。 たとえば、ユーザーがコンピューターにサインオンしてプログラムを実行すると、そのプログラムではその特定のユーザーのアカウントに関連付けられている資格情報が使用されます。
プログラムがオブジェクトを開こうとすると、Windows はそのプログラムに関連付けられている資格情報を、そのオブジェクトに関連付けられているセキュリティ コントロールと比較します。 次に、セキュリティ参照モニターが ACE 情報を使用して、プログラムがその特定のオブジェクトにアクセスするのを許可するか、拒否するかを判断します。 ACE はセキュリティ サブシステムの動作を決定するといえます。
次の図は、アクセス制御エントリを示しています。
セキュリティ サブシステムでは、次の種類を含む複数の種類の ACES が使用されます。 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 が特定のサーバーとそれが偽装しているエンティティに関連付けられていることを示します。
ACCESS_XXX 型は、オブジェクトへのプログラムによるアクセスを制御するために使用されます。 SYSTEM_XXX 型は、オブジェクトへのアクセス時のセキュリティ サブシステムの監査とアラームの動作を制御するために使用されます。 セキュリティ サブシステムの実際の動作は、オブジェクトに関連付けられている一部またはすべての ACE の情報を組み合わせることで計算されます。
ドライバは、RtlAddAccessAllowedAce ルーチンを使用して、ACCESS_ALLOWED_ACE_TYPE の ACE を構成できます。 WDK には他のサポート ルーチンが用意されていないため、他の種類の ACE エントリを追加する場合は、ドライバーの作成者が独自の関数を構築する必要があります。