安全性原則管理概觀

重要事項重要事項

在 .NET Framework 4 版 中,Common Language Runtime (CLR) 不會為電腦提供安全性原則。Microsoft 建議您使用 Windows 軟體限制原則做為 CLR 安全性原則的取代項目。本主題中的資訊適用於 .NET Framework 3.5 (含) 以前版本,而不適用於 4 (含) 以後版本。如需這項變更和其他變更的詳細資訊,請參閱 .NET Framework 4 中的安全性變更

.Net Framework 安全系統是由一組稱為安全性原則的可設定規則來管理。 這項原則可讓使用者或管理員調整設定,決定允許存取的資源程式碼,以及最後決定允許執行的程式碼。

例如,假設您是企業環境中的管理員,而且不信任來自某家公司的軟體。 或許該公司所生產的軟體對某些員工來說很有趣,但是卻會導致網路交通量增加,或造成工作站不穩定。 您可以設定企業層級的安全性原則,限制具有特定加密強式名稱 (Cryptographic Strong Name) (程式的唯一識別項) 的軟體對電腦資源的存取權限。 您也可以設定原則,使這個發行者 (Publisher) 的軟體無法執行。

這個主題將會提供安全性原則管理的概觀。 如需詳細資訊,請參閱安全性原則管理

辨識項、程式碼群組和使用權限集合

以 Common Language Runtime 為目標的程式碼是部署在稱為組件 (Assembly) 的單位中。 在載入時間 (Load Time),Runtime 會檢查每一個組件的辨識項 (Evidence),這個辨識項會辨識有關組件的資訊 (例如程式碼作者的數位簽章和程式碼來源的位置)。 以這個辨識項為基礎,Common Language Runtime 安全管理員便可根據安全性原則,將組件對應至程式碼群組。 定義程式碼群組的目的是要測試特定形式的辨識項,並建立它們和使用權限集合的關聯。 屬於程式碼群組的組件會收到相關聯使用權限集合所定義的使用權限。 如需辨識項、程式碼群組和使用權限集合的詳細資訊,請參閱安全性原則模型

使用權限

使用權限就是代表受保護 (Protected) 資源存取權限的物件。 使用權限可以設定,而且一個使用權限物件可具有多種形式。 例如,FileIOPermission 即代表在本機硬碟上存取、建立、讀取、寫入或修改檔案的權限。 有意義的使用權限必須包含它所代表存取類型的特定資訊。 您可以設定 FileIOPermission 來代表讀取某個特定檔案、讀寫某個特定檔案,或讀取整個目錄中檔案的權限。 使用權限所代表的權限和組件所收到的權限都可以完全由電腦管理員來設定。 雖然使用權限物件和其他任何物件一樣,都可以由應用程式來建構和設定,但是只有安全性原則可將使用權限授與應用程式。 最後仍由管理員控制使用權限授權。 如需常用的使用權限清單,請參閱程式碼存取使用權限

安全性原則層級

在安全模型中定義了四個安全性原則層級,分別對應至不同的管理和裝載案例。 下表會描述每一個層級。 企業原則層級是最高層級,應用程式定義域層級是最低層級。

原則層級

說明

企業原則

由設定企業定義域原則的企業管理員定義

電腦原則

由設定一部電腦原則的電腦管理員定義

使用者原則

由設定單一登入帳戶原則的使用者定義

應用程式定義域原則

由設定載入時間原則的執行階段主應用程式 (裝載 Common Language Runtime 的任何應用程式) 定義。 這個層級無法加以管理

每一個原則層級都是由程式碼群組的階層架構所組成。 每一個原則層級的管理員都可以建立自己的程式碼群組和關聯的使用權限集合。 在載入時間,程式碼存取安全系統會檢查所有原則層級,產生的使用權限授權是每一個層級中所有允許的使用權限的交集。 較低原則層級的管理員不能減弱較高層級所做的決定,但是可以依照需要增強原則。 預設安全性原則位於電腦原則層級。

預設安全性設定如下:

  • 使用者和企業層級設定為不受限制

  • 電腦層級包含特定的原則設定和限制

  • 全部三個層級所定義的設定即構成預設值

請注意,不受限制的使用者和企業層級並不會導致將不受限制的使用權限授與組件。 由於電腦層級會定義幾項限制,而且會將所有的三個層級視為整體,因此產生的使用權限授權並非不受限制的使用權限。 如需詳細資訊,請參閱安全性原則模型

將程式碼群組對應至使用權限集合

您管理原則的方式是,將程式碼群組對應至您所管理原則層級上的使用權限集合。

程式碼群組包含成員資格條件、使用權限集合關聯和程式碼群組屬性 (Attribute)。 組件提供給執行階段的辨識項會與您為程式碼群組所指定的成員資格條件進行比較。 如果組件提供的辨識項符合成員資格條件,就會允許它進入程式碼群組。 管理員會藉由指定成員資格條件以及將使用權限集合指派給程式碼群組,來辨識組件並將組件分成不同的程式碼群組類別。 或者,也可以使用程式碼群組屬性來指定不考慮目前層級以下的任何原則層級,或是在指派使用權限時,除了目前的程式碼群組以外,不考慮其他的程式碼群組。

下列類型的內建辨識項可當做成員資格條件:

  • 應用程式的安裝目錄

  • 組件的加密雜湊 (Cryptographic Hash)

  • 組件發行者的數位簽章

  • 組件來源的網站

  • 組件的加密強式名稱

  • 組的來源的 URL

  • 組件來源的區域

您可以根據這些成員資格條件的任何組合,減少或增加組件的使用權限。 由於可以建立自訂的成員資格條件,因此上述清單並不代表全部。 如需詳細資訊,請參閱辨識項

請參閱

概念

程式碼存取安全性

其他資源

安全性原則的最佳作法

設定安全性原則

安全性原則管理