強制完整性控制
強制完整性控制 (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_UP、 SYSTEM_MANDATORY_LABEL_NO_READ_UP和 SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP。 根據預設,系統會建立具有存取遮罩 SYSTEM_MANDATORY_LABEL_NO_WRITE_UP的每個物件。
每個存取令牌也會指定建立令牌時,由本地安全機構 (LSA) 設定的強制原則。 此原則是由 與令牌相關聯的TOKEN_MANDATORY_POLICY 結構所指定。 呼叫 GetTokenInformation 函式,並將 TokenInformationClass 參數的值設定為 TokenMandatoryPolicy,即可查詢此結構。