[摘 要] 本文介紹了站點安全性,及幾種應用于站點安全性的策略,最后提出COM+應用程序的安全類型,著重闡述了Com+基于角色的安全機制來確保應用程序的安全。
[關鍵詞] COM+ 角色 安全
Web應用程序的高速增長直接導致了相關安全事件的增加,維護基于Internet的站點的安全是一個復雜的過程。站點安全性包括身份驗證和授權。身份驗證是通過檢查用戶的憑據(如用戶名和密碼)并根據某個權限驗證這些憑據,找到和驗證用戶標識的過程。授權是確定是否允許用戶執行其請求的操作的過程。
一、站點安全性
Windows操作系統、分布式COM(DCOM),IIS,Asp.NET以及.NET Framework提供了各種機制是用戶能夠利用COM+應用程序來對用戶或.NET Framework程序集執行身份驗證,并確保對資源的授權訪問。
1.軟件限制策略。軟件限制策略是使計算機遠離未知的代碼。不信任的代碼只能運行在一個受限制的環境里面,這個環境為沙箱(sandbox)。在沙箱里面它無法對安全敏感的任何信息進行訪問。
2.IIS安全提供了三種身份驗證機制。IIS安全提供了基本身份驗證,Digest身份驗證和集成Windows身份驗證。基本身份驗證要求訪問web時要求輸入windows的用戶名和密碼;Digest身份驗證萬維網聯盟采用的一個補救措施,針對基本驗證的弱點進行了修正;集成Windows身份驗證針對計算機,不在網絡上傳送用戶名和密碼。
3.ASP.NET安全性。ASP.NET支持兩種新型身份驗證機制。一是窗體身份驗證:通過使用HTTP客戶端重定向,未經身份驗證的請求被重新定向到一個HTML窗體。一是Passport身份驗證:Password是由Microdoft提供的一種集中身份驗證服務,它為成員Web站點提供了一種單一登陸和核心配置服務。
二、基于角色的安全
基于角色的安全是一個由COM+提供的自動服務,它能夠為COM+應用程序構造并且實施一個訪問控制策略。因有靈活、可拓展的安全配置模型,在組件內實施安全控制時,基于角色的安全機制提供了諸多好處。
1.角色。角色就是一個擁有相同權限的成員組,成員的權限是以角色為基礎的。角色的好處在于只管角色的權限,而不處理所屬角色成員的權限。
2.COM+基于角色的安全。在COM+基于角色的安全中,配置COM+應用程序時,向角色中添加賬戶或者從角色中刪除賬戶,不會涉及代碼的修改。
3.授權客戶端使用角色。利用角色建立一個安全策略可以指定讓誰進入,以何種權限進入,并且可以訪問哪些資源。在開發com+應用程序時,利用角色可很好的分配權限。配置時,只要把現實的用戶和組添加到角色中就行了。
4.聲明安全。使用聲明性基于角色的安全,可使用“組件服務”管理工具或者管理對象模型的方式聲明角色,并將它們指派給應用程序資源。在什么地方以及以何種方式來設置聲明安全,會決定在什么地方為你的應用程序劃定安全邊界。進行商業代碼的開發時,要考慮安全性,否則以后再添加安全代碼,是一個很費力的事。通過角色,我們就可以有效的保護某些組件和接口。
5.編程方式實現安全。通過編寫API代碼來實現角色安全。通過編程方式檢查安全程序是否啟動,并且一個調用方或者一個具體的用戶是否處在一個指定的角色里。
三、實現COM+基于角色的安全
COM+允許在兩個級別上啟用安全:應用程序級別和類級別。使用ApplicationAccessControl特性,可以設置應用程序級別的安全。使用ComponentAccessControl可以為應用程序里的每個類設置組件級別的安全。因此可以使用這個特性來配置身份驗證和模擬設置。
1.啟用應用程序安全。啟動應用程序級安全,可以在“組件管理”工具中,“屬性”對話框、“安全性”選項卡上的設置。也可使用ApplicationAccessControl特性通過編程實現。
2.使用SecurityRole和SecureMethod 特性創建角色。應用程序啟用了安全后,應該創建角色。通過使用SecurityRole和SecureMethod 特性創建角色。(1)SecurityRole特性可以創建角色,并將角色指派給應用程序、組件、接口或方法。(2)SecureMethod特性可以實現通過相關接口來調用方法時執行訪問檢查。SecurityRole特性指派角色給應用程序或組件。應用SecurityRole特性確保了該角色存在于應用程序配置中,并且與其目標組件關聯起來。
3.使用IsCallerInRole和IsSecurityEnabled來實現基于角色的安全。利用api調用來解決,NET Enterprise Services不僅提供了CountextUtil類和IsCallerInRole方法和IsSecurityEnabled屬性,還提供了,該類提供了關于用戶角色成員標識的信息,并提供對調用鏈信息的訪問。SecurityCallContext類有IsCallerInRole方法和IsSecurityEnabled屬性。IsCallerInRole方法可以確定當前的調用者是否是具有權限角色的成員,如果是返回true,否則返回1。如果沒對當前對象啟用安全檢查則始終返回true。IsSecurityEnabled屬性可以確定對對象基于角色的訪問檢查是否被啟用。
四、小結
Com+安全選項和概念是安全部署應用程序的基礎。基于角色的安全為保證com+應用程序的安全提供了最為靈活和最為細致的機制。
參考文獻:
[1]孫三才 張智凱 許薰尹編著:C#與.net Framework實戰演練.中國鐵道出版社
[2]劉 廷 劉 帆編著:ASP.NET開發實例完全剖析.中國電力出版社