必須の整合性制御

必須整合性制御 (MIC) は、セキュリティ保護可能なオブジェクトへのアクセスを制御するためのメカニズムを提供します。 このメカニズムは、随意アクセス制御に加え、オブジェクトの 随意アクセス制御リスト (DACL) に対するアクセス チェックが評価される前にアクセスを評価します。

MIC では、整合性レベルと必須ポリシーを使用してアクセスを評価します。 セキュリティ プリンシパル とセキュリティ保護可能なオブジェクトには、保護またはアクセスのレベルを決定する整合性レベルが割り当てられます。 たとえば、整合性レベルが低いプリンシパルは、そのオブジェクトの DACL でプリンシパルへの書き込みアクセスが許可されている場合でも、中程度の整合性レベルのオブジェクトに書き込むことはできません。

Windows では、低、中、高、システムの 4 つの整合性レベルが定義されています。 標準ユーザーは中レベルを受け取り、昇格されたユーザーは高値を受け取ります。 起動したプロセスと、作成したオブジェクトは、実行可能ファイルのレベルが低い場合は整合性レベル (中または高) または低を受け取ります。システム サービスは、システムの整合性を受け取ります。 整合性ラベルがないオブジェクトは、オペレーティング システムによってメディアとして扱われます。これにより、整合性の低いコードがラベル付けされていないオブジェクトを変更できなくなります。 さらに、Windows では、整合性レベルが低い状態で実行されているプロセスが、アプリ コンテナーに関連付けられているプロセスへのアクセスを取得できないようにします。

整合性ラベル

整合性ラベルは、セキュリティ保護可能なオブジェクトとセキュリティ プリンシパルの整合性レベルを指定します。 整合性ラベルは、 整合性 SID によって表されます。 セキュリティ保護可能なオブジェクトの整合性 SID は、 そのシステム アクセス制御リスト (SACL) に格納されます。 SACL には、整合性 SID を含むSYSTEM_MANDATORY_LABEL_ACEアクセス制御エントリ (ACE) が含まれています。 整合性 SID を持たないオブジェクトは、中程度の整合性を持つかのように扱われます。

セキュリティ プリンシパルの整合性 SID は、そのアクセス トークンに格納されます。 アクセス トークンには、1 つ以上の整合性 SID が含まれる場合があります。

定義された整合性 SID の詳細については、「 既知の SID」を参照してください。

プロセス作成

ユーザーが実行可能ファイルを起動しようとすると、ユーザー整合性レベルとファイル整合性レベルの最小値を使用して新しいプロセスが作成されます。 つまり、新しいプロセスは実行可能ファイルよりも高い整合性で実行されることはありません。 管理者ユーザーが低整合性プログラムを実行した場合、新しいプロセスのトークンは低整合性レベルで機能します。 これは、信頼できないコードを起動するユーザーを、そのコードによって実行される悪意のある行為から保護するのに役立ちます。 一般的なユーザー整合性レベルのユーザー データは、この新しいプロセスに対して書き込み保護されます。

必須ポリシー

セキュリティ保護可能なオブジェクトの SACL の SYSTEM_MANDATORY_LABEL_ACE ACE には、オブジェクトより低い整合性レベルのプリンシパルに付与されるアクセス権を指定するアクセス マスクが含まれています。 このアクセス マスクに定義されている値は、 SYSTEM_MANDATORY_LABEL_NO_WRITE_UPSYSTEM_MANDATORY_LABEL_NO_READ_UPおよびSYSTEM_MANDATORY_LABEL_NO_EXECUTE_UPです。 既定では、アクセス マスク がSYSTEM_MANDATORY_LABEL_NO_WRITE_UPのすべてのオブジェクトが作成されます。

また、すべてのアクセス トークンは、トークンの作成時に ローカル セキュリティ機関 (LSA) によって設定される必須ポリシーも指定します。 このポリシーは、トークンに関連付けられている TOKEN_MANDATORY_POLICY 構造体によって指定されます。 この構造体を照会するには、TokenInformationClass パラメーターの値を TokenMandatoryPolicy に設定して GetTokenInformation 関数を呼び出します。