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