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