摘要:安全防護措施方針(Security Policy Management)
自.Net Framework 4.0開始,Common Language Runtime停止提供Security Policy。Microsoft建議使用Windows Software Restriction Policies取代CLR的Security Policy。
Security policy是一組可以進行組態設定的規則,CLR透過前述的規則決定將哪一些權限授予程式碼。程式碼本身可以透過自己的組件檔進行識別,組件檔可以是執行檔(.exe)或者是動態鏈結函式庫(.dll)。執行時期透過檢視組件的可識別特徵(例如網站、程式碼來源的所屬位置[1])以決定程式碼可以存取的資源。前述的特徵皆被定義在類別System.Security.Policy.Evidence[2]之中,Evidence類別本身也和自己所屬(同時也是被授與權限)的組件檔產生關聯。就一個組件檔而言,典型的Evidence類別可以是網址[3]、程式碼來源處[4]、強式名稱[5]與雜湊[6]。在執行程式碼的期間,執行時期透過Evidence類別確保程式碼僅能存取被授權存取的資源。
Security policy定義數種程式碼群組,並且將每一個程式碼群組和一組權限的集合建立關聯。資訊安全防護系統使用Evidence類別決定一個組件檔應該屬於哪一個程式碼群組。當所有的Evidence都已經一一確認之後,一個組件檔將會與一個或者多個程式碼群組建立關聯,而且整個結果將是所有整個權限的集合與所有對應的程式碼群組建立關聯。
就預設的情形而言,組件檔存在的位置與執行組件檔的位置相同之時,前述的位置就是MyComputer zone[7]。MyComputer zone的evidence類別將程式碼放置在My_Computer_Zone程式碼群組,並且授予完全信任的的權限(full-trust permission)。完全信任的的權限集合略過資訊安全防護措施的檢查,並且針對程式碼提供所有受保護的資源的存取權。因此必須注意下列重點,你所安裝的程式必須源自於可以完全信任的來源。在.Net Framework 3.5 SP1中,本地端電腦享有的完全信任的權限被延伸至區域網路內的組件。所以再次強調,你所安裝的程式必須源自於可以完全信任的區域網路。安全防護措施方針管理員可以將區域網路中取得完全信任的應用程式恢復至先前僅取得部分信任的狀態。
雖然預設的資訊安全防護措施適用於大部分的情境,管理人員依舊可以針對組織的特定需求客製化安全防護措施方針。執行時期依據安全防護措施方針授予組件和應用程式適當的權限。[8]
[1]SecurityZone Enumeration
http://msdn.microsoft.com/en-us/library/vstudio/system.security.securityzone(v=vs.100).aspx
[2]Evidence Class
http://msdn.microsoft.com/en-us/library/vstudio/system.security.policy.evidence(v=vs.100).aspx
[3]Url Class
http://msdn.microsoft.com/en-us/library/vstudio/system.security.policy.url(v=vs.100).aspx
[4]Zone Class
http://msdn.microsoft.com/en-us/library/vstudio/system.security.policy.zone(v=vs.100).aspx
[5]StrongName Class
http://msdn.microsoft.com/en-us/library/vstudio/system.security.policy.strongname(v=vs.100).aspx
[6]Hash Class
http://msdn.microsoft.com/en-us/library/vstudio/system.security.policy.hash(v=vs.100).aspx
[7]SecurityZone Enumeration
http://msdn.microsoft.com/en-us/library/vstudio/system.security.securityzone(v=vs.100).aspx
[8]Security Policy Management
http://msdn.microsoft.com/en-us/library/vstudio/c1k0eed6(v=vs.100).aspx