強制完整性控制

強制完整性控制 (MIC) 提供機制來控制安全性物件存取。 這項機制除了任意存取控制之外,還會評估存取權,再評估對物件的 任意存取控制清單 進行存取檢查, (DACL) 。

MIC 會使用完整性層級和強制原則來評估存取權。 安全性主體 和安全性實體物件會指派完整性層級,以決定其保護或存取層級。 例如,具有低完整性層級的主體無法寫入具有中完整性層級的物件,即使該物件的 DACL 允許對主體的寫入存取。

Windows 定義四種完整性層級:低、中、高和系統。 標準使用者會收到中等、提高許可權的使用者收到高。 您啟動的程式和您建立的物件會接收您的完整性層級, (中或高) 或低,如果可執行檔的層級很低;系統服務會收到系統完整性。 作業系統會將缺少完整性標籤的物件視為中型物件;這可防止低完整性程式碼修改未標記的物件。 此外,Windows 可確保以低完整性層級執行的進程無法存取與應用程式容器相關聯的進程。

完整性標籤

完整性標籤會指定安全性實體物件和安全性主體的完整性層級。 完整性標籤會以 完整性 SID表示。 安全性實體物件的完整性 SID 會儲存在其 系統存取控制清單中 , (SACL) 。 SACL 包含SYSTEM_MANDATORY_LABEL_ACE存取控制專案 (ACE) ,進而包含完整性 SID。 沒有完整性 SID 的任何物件都會被視為具有中型完整性。

安全性主體的完整性 SID 會儲存在其存取權杖中。 存取權杖可能包含一或多個完整性 SID。

如需已定義完整性 SID 的詳細資訊,請參閱 已知的 SID

處理序建立

當使用者嘗試啟動可執行檔時,會以使用者完整性層級下限和檔案完整性層級建立新的進程。 這表示新進程永遠不會以比可執行檔更高的完整性來執行。 如果系統管理員使用者執行低完整性程式,則新進程函式的權杖具有低完整性層級。 這有助於保護啟動不受信任程式碼的使用者免于該程式碼所執行的惡意行為。 在一般使用者完整性層級的使用者資料會受到寫入保護,以防止這個新的進程。

強制原則

安全性實體物件 SACL 中的 SYSTEM_MANDATORY_LABEL_ACE ACE 包含存取遮罩,指定授與低於物件完整性層級的主體存取權。 針對此存取遮罩定義的值是 SYSTEM_MANDATORY_LABEL_NO_WRITE_UPSYSTEM_MANDATORY_LABEL_NO_READ_UPSYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP。 根據預設,系統會建立每個具有 存取遮罩SYSTEM_MANDATORY_LABEL_NO_WRITE_UP的物件。

每個存取權杖也會指定建立權杖時, 由本機安全性授權單位 (LSA) 所設定的必要原則。 此原則是由與權杖相關聯的 TOKEN_MANDATORY_POLICY 結構所指定。 呼叫 GetTokenInformation 函式,並將 TokenInformationClass 參數的值設定為 TokenMandatoryPolicy,即可查詢此結構。