微軟Azure安全功能如何實(shí)現(xiàn)PaaS的安全性
正如我在之前的文章中所討論的那樣,應(yīng)用程序安全專業(yè)知識(shí)是PaaS安全性的關(guān)鍵之所在。對(duì)于使用PaaS環(huán)境的企業(yè)來說,投資于教育與軟件開發(fā)生命周期過程是極其重要的。但是,總的來說企業(yè)在應(yīng)用程序安全方面的投資一直是緩慢的。
因此,對(duì)于PaaS環(huán)境的安全專業(yè)人士來說,挑戰(zhàn)如下:雖然已為應(yīng)用程序安全性投入大量資金,但是哪一種短期措施可作為PaaS安全性的權(quán)宜之計(jì)?例如,在Azure的支持下,微軟公司的無數(shù)以開發(fā)為重點(diǎn)的安全資源發(fā)揮了巨大效應(yīng),但如果應(yīng)用程序已經(jīng)編寫完成,那又該如何呢?可能未必有時(shí)間將SDL或威脅模型納入特定的應(yīng)用程序。
處于該位置的公司應(yīng)當(dāng)知道的有兩件事:首先,Azure環(huán)境本身提供了一些非常強(qiáng)大的安全功能,以保護(hù)相關(guān)應(yīng)用程序,這些功能包括諸如網(wǎng)絡(luò)級(jí)控制、物理安全、托管強(qiáng)化等措施。但是這些保護(hù)只完成了一半的任務(wù);無論做好了如何完備的保護(hù),任何環(huán)境仍然可能因?yàn)槲唇鉀Q的應(yīng)用程序而受到攻擊。幸運(yùn)的是,一旦所開發(fā)的程序在應(yīng)用程序?qū)釉黾恿艘恍┍Wo(hù)措施,那么就有一些我們可以依賴的功能。
這些權(quán)宜之計(jì)并不是唯一適用的應(yīng)用程序安全措施——它們不包括你應(yīng)該做的事(如SSL),他們并不是普遍適用于每一個(gè)用例。但是,這些微軟公司的Azure安全功能并不能幫助安全專家了解更多信息,因?yàn)樗麄兛上鄬?duì)快速實(shí)施,要求盡可能少的代碼更改,并可多次復(fù)用于現(xiàn)有應(yīng)用程序而無需大量的業(yè)務(wù)邏輯復(fù)檢。
Microsoft公司Azure安全:部分信任
Windows Azure可能會(huì)作為非管理員用戶在本地操作系統(tǒng)上通過運(yùn)行用戶供應(yīng)代碼來提供某種針對(duì)顛覆應(yīng)用程序攻擊的隔離措施(從調(diào)用者的角度來看,這幾乎是完全透明的)。但是,企業(yè)組織可以通過采用“部分信任”而非“完全信任”以便于進(jìn)一步限制對(duì)某個(gè)角色的訪問權(quán)限。
那些熟悉傳統(tǒng).NET上下文安全模式的人會(huì)認(rèn)出這一概念,但是這個(gè)想法也通過限制應(yīng)用程序本身功能而限制應(yīng)用程序本身中安全故障所造成的影響。如同一些網(wǎng)絡(luò)服務(wù)器和應(yīng)用程序使用一個(gè)“受限”文件系統(tǒng)或受限權(quán)限模式一樣,部分信任的概念也與之類似。微軟公司提供了部分信任下的完整功能列表,以及如何在Visual Studio中啟用該功能的說明。
但有一個(gè)需要注意的地方。雖然使用部分信任是從事小型應(yīng)用程序/服務(wù)的一條康莊大道,但是大型或復(fù)制應(yīng)用程序/服務(wù)(例如從一個(gè)現(xiàn)有.NET應(yīng)用程序的直接端口)可能需要完全信任的權(quán)限以實(shí)現(xiàn)正常功能。
Microsoft公司Azure安全:AntiXSS
在應(yīng)用程序上下文(更確切地說,是一個(gè)網(wǎng)絡(luò)應(yīng)用程序上下文)中發(fā)生的眾多問題都源于惡意輸入;換而言之,用戶提供的輸入是一種常見的攻擊途徑,除非輸入受到限制或作為應(yīng)用程序處理的一部分進(jìn)行驗(yàn)證才會(huì)免除這個(gè)可能性。這并不容易實(shí)現(xiàn);一般而言,需要花費(fèi)相當(dāng)?shù)呐?和培訓(xùn))以獲知開發(fā)人員的業(yè)務(wù)邏輯從而明白應(yīng)當(dāng)過濾什么,為什么要過濾以及如何測(cè)試過濾措施是全面有效的。
正因?yàn)槿绱?,微軟公司免費(fèi)提供了網(wǎng)絡(luò)保護(hù)庫(WPL)以提供一個(gè)輸入驗(yàn)證封裝庫,以便于開發(fā)人員使用來解決部分類似問題。WPL中的AntiXSS庫提供了相關(guān)功能,以便于開發(fā)人員可以集成編碼用戶輸入,從而減少惡意攻擊顛覆輸入域從而對(duì)應(yīng)用程序行為造成負(fù)面影響的可能性。
Microsoft公司Azure安全:使用診斷
能夠防止攻擊的下一個(gè)有效措施在于有辦法知道它是否發(fā)生。在傳統(tǒng)內(nèi)部應(yīng)用程序部署場(chǎng)景中,安全專業(yè)人士可以實(shí)施強(qiáng)化記錄和檢測(cè)控制措施以應(yīng)對(duì)應(yīng)用程序級(jí)安全風(fēng)險(xiǎn)。同樣的策略也可應(yīng)用于Azure。具體來說,可配置Azure的診斷功能以提供額外的安全相關(guān)信息,即不僅僅是儀器已經(jīng)存在于應(yīng)用程序本身。IIS日志、基礎(chǔ)設(shè)施日志以及其他日志記錄可以是一種留意應(yīng)用程序的方法,即一旦運(yùn)行就無需進(jìn)行工作量巨大的規(guī)劃、編碼以及重新測(cè)試。
顯而易見,這些措施不是針對(duì)PaaS安全問題的全面答案。理想情況下,該組織的目的是一個(gè)長(zhǎng)期、復(fù)雜、以生命周期為重點(diǎn)的方法學(xué),其中包括通過SDLC和流程變更事項(xiàng)應(yīng)用程序安全性。但在短期內(nèi),當(dāng)很難實(shí)現(xiàn)代碼改變和難以立即上馬時(shí),這些簡(jiǎn)單易行的步驟可能會(huì)幫上忙。