參考本文中的信息,可以:
了解云中的托管應(yīng)用程序的安全優(yōu)勢
評估平臺即服務(wù)(PaaS)相比其他云服務(wù)模型的安全優(yōu)勢
將安全重心從以網(wǎng)絡(luò)為中心的方案轉(zhuǎn)換為以標識為中心的外圍安全方案
實施一般的PaaS安全最佳實踐建議
開發(fā)適用于云的應(yīng)用程序時,在軟件開發(fā)生命周期的每個階段應(yīng)考慮的安全問題和控制措施是一般的指導(dǎo)。
云的安全優(yōu)勢
請務(wù)必了解你與Microsoft之間的責任分工。在本地,擁有整個堆棧,但遷移到云后,某些責任將轉(zhuǎn)移到Microsoft。
轉(zhuǎn)移到云中可帶來一定的安全優(yōu)勢。在本地環(huán)境中,組織的可用資源可能有限,無法盡責在安全措施上投資,使得攻擊者能夠利用所有層中的漏洞。
組織可以使用提供商的基于云的安全功能和云智能來改善其威脅檢測和響應(yīng)時間。通過將責任轉(zhuǎn)移到云提供商,組織可以擴大安全覆蓋范圍,為其他優(yōu)先業(yè)務(wù)重新調(diào)配安全資源與預(yù)算。
PaaS云服務(wù)模型的安全優(yōu)勢
讓我們來了解一下Azure PaaS部署相比本地部署的安全優(yōu)勢。
PaaS的安全優(yōu)勢
從堆棧的底部(即物理基礎(chǔ)結(jié)構(gòu))開始,Microsoft可以消除常見的風(fēng)險和管理責任。由于Microsoft云受到Microsoft的持續(xù)監(jiān)視,因此很難攻破。攻擊者將Microsoft云當作攻擊目標是不會得逞的。他們往往會改換目標,除非他們有大量的金錢和資源。
在堆棧的中間,PaaS部署與本地之間沒有差別。在應(yīng)用程序?qū)雍蛶襞c訪問管理層,面臨的風(fēng)險是類似的。本文的后續(xù)步驟部分將提供有關(guān)消除或盡量避免這些風(fēng)險的最佳實踐指導(dǎo)。
堆棧的頂層(即數(shù)據(jù)監(jiān)管和權(quán)限管理)存在一種風(fēng)險,不過可以使用密鑰管理來緩解。(最佳實踐中介紹了密鑰管理。)盡管密鑰管理是一個附加的責任,但你不再需要管理PaaS部署中的某些區(qū)域,因此可將資源轉(zhuǎn)移到密鑰管理。
Azure平臺還使用各種基于網(wǎng)絡(luò)的技術(shù)提供強大的DDoS保護。但是,根據(jù)鏈路和數(shù)據(jù)中心的不同,所有類型的基于網(wǎng)絡(luò)的DDoS保護方法都有自身的限制。為了幫助避免大規(guī)模DDoS攻擊造成的影響,可以利用Azure的核心云功能快速自動擴展,以防御DDoS攻擊。在建議的實踐文章中,我們將更詳細地介紹如何采取這種措施。
革新防御者的思維方式
PaaS部署為整體安全方案帶來了變革。事必躬親的局面現(xiàn)在可以改為與Microsoft分擔責任。
PaaS與傳統(tǒng)本地部署之間的另一個重大差別在于,前者為主要安全邊界的界定因素提供了全新的視野。一直以來,主要的本地安全邊界就是網(wǎng)絡(luò),大多數(shù)本地安全設(shè)計都使用網(wǎng)絡(luò)作為主要安全樞紐。在PaaS部署中,可將標識視為主要安全邊界,從而改善安全性。
采用標識用作主要安全邊界的策略
在云計算的五大基本特征中,一個特征就是網(wǎng)絡(luò)訪問范圍廣泛,這使得以網(wǎng)絡(luò)為中心的理念顯得有點毫不相干。許多云計算解決方案的目標是不管用戶身居何處,都能允許他們訪問資源。對于大多數(shù)用戶而言,他們的位置就是Internet上的某個節(jié)點。
下圖演示了安全邊界從網(wǎng)絡(luò)邊界演進成標識邊界的過程。安全性越來越少地與如何保護網(wǎng)絡(luò)相關(guān),而更多地與如何保護數(shù)據(jù),以及如何管理應(yīng)用和用戶的安全性相關(guān)。兩者的關(guān)鍵差別在于如何為公司的重要資產(chǎn)提供更多的安全保障。
標識用作新的安全邊界
最初,Azure PaaS服務(wù)(例如Web角色和Azure SQL)提供的傳統(tǒng)網(wǎng)絡(luò)邊界防護措施很少,或者根本不提供。開發(fā)人員已認識到,設(shè)計元素的目的就是在Internet上公開(Web角色),而身份驗證可提供新的邊界(例如BLOB或Azure SQL)。
新式安全措施假設(shè)入侵者會突破網(wǎng)絡(luò)邊界。因此,新式防護措施已轉(zhuǎn)移到標識。組織必須使用強身份驗證和授權(quán)保護機制建立基于標識的安全邊界(最佳實踐)。
網(wǎng)絡(luò)邊界的原理和模式早在幾十年前就已建立。相比之下,行業(yè)在使用標識作為主要安全邊界的經(jīng)驗相對缺乏。正因如此,我們累積了足夠的經(jīng)驗,樂于提供已在現(xiàn)場得到證實的、適用于幾乎所有PaaS服務(wù)的一些普通建議。
下面是管理標識邊界的最佳做法。
最佳做法:保護密鑰和憑據(jù)以保護PaaS部署。
詳細信息:丟失密鑰和憑據(jù)是一個常見問題。可以使用集中式解決方案,將密鑰和機密存儲在硬件安全模塊(HSM)中。Azure Key Vault通過使用受HSM保護的密鑰對身份驗證密鑰、存儲帳戶密鑰、數(shù)據(jù)加密密鑰、.pfx文件和密碼進行加密來保護你的密鑰和機密。
最佳做法:不要將憑據(jù)和其他機密放入源代碼或GitHub。
詳細信息:唯一比丟失密鑰和憑據(jù)更遭糕的事情是讓未經(jīng)授權(quán)的一方獲取這些密鑰和憑據(jù)的訪問權(quán)限。攻擊者可以利用bot技術(shù)來查找GitHub等代碼存儲庫中存儲的密鑰和機密。請不要將密鑰和機密放入這些公共代碼存儲庫。
最佳做法:通過使用可以直接遠程管理這些VM的管理接口來保護混合PaaS和IaaS服務(wù)上的VM管理接口。
詳細信息:可以使用遠程管理協(xié)議,如SSH、RDP和PowerShell遠程處理。通常,我們建議不要從Internet啟用對VM的直接遠程訪問。
如果可以,請使用替代方法,例如在Azure虛擬網(wǎng)絡(luò)中使用虛擬專用網(wǎng)絡(luò)。如果其他方法不可用,請確保使用復(fù)雜的密碼和雙因素身份驗證(例如Azure AD多重身份驗證)。
最佳做法:使用強身份驗證和授權(quán)平臺。
詳細信息:在Azure AD而不是自定義用戶存儲中使用聯(lián)合標識。使用聯(lián)合標識時,可以利用基于平臺的方法,將已獲授權(quán)的標識的管理權(quán)限委托給合作伙伴。如果員工離職后,需要通過多個標識和授權(quán)系統(tǒng)反映該信息,則聯(lián)合標識方法就特別重要。
使用平臺提供的身份驗證和授權(quán)機制,而不要使用自定義代碼。原因是開發(fā)自定義身份驗證代碼可能很容易出錯。大部分開發(fā)人員都不是安全專家,不太可能會注意到身份驗證和授權(quán)的細微之處與最新開發(fā)情況。商業(yè)代碼(例如Microsoft編寫的代碼)通常會接受廣泛的安全性評審。
使用雙重身份驗證。雙重身份驗證是最新的身份驗證和授權(quán)標準,它避免了用戶名與密碼類型的身份驗證所固有的安全漏洞。應(yīng)將對Azure管理(門戶/遠程PowerShell)接口和面向客戶的服務(wù)的訪問權(quán)限設(shè)計并配置為使用Azure AD多重身份驗證。
使用OAuth2和Kerberos等標準身份驗證協(xié)議。這些協(xié)議經(jīng)過廣泛的同行評審,有時可實現(xiàn)為平臺庫的一部分用于身份驗證和授權(quán)。
在應(yīng)用程序設(shè)計期間使用威脅建模
Microsoft安全開發(fā)生命周期指定團隊應(yīng)在設(shè)計階段參與名為威脅建模的過程。為了幫助簡化此過程,Microsoft已創(chuàng)建SDL威脅建模工具。對應(yīng)用程序設(shè)計進行建模,并在所有信任邊界中枚舉STRIDE威脅可能會及早捕獲設(shè)計錯誤。
下表列出了STRIDE威脅,并提供了一些使用Azure功能的示例緩解措施。這些緩解措施并非在每種情況下都起作用。
在Azure應(yīng)用服務(wù)上開發(fā)
Azure App Service是一個PaaS產(chǎn)品,可創(chuàng)建適用于任何平臺或設(shè)備的Web和移動應(yīng)用,并可連接到云中或本地任何位置的數(shù)據(jù)。應(yīng)用服務(wù)所包括的Web功能和移動功能是以前作為Azure網(wǎng)站和Azure移動服務(wù)單獨交付的。它還包括各種新功能,可以實現(xiàn)業(yè)務(wù)流程的自動化,并可托管云API。應(yīng)用服務(wù)以單個集成服務(wù)的形式為Web、移動和集成方案提供一組豐富的功能。
下面是使用應(yīng)用服務(wù)的最佳做法。
最佳做法:通過Azure Active Directory進行身份驗證。
詳細信息:應(yīng)用服務(wù)為標識提供者提供OAuth 2.0服務(wù)。OAuth 2.0注重簡化客戶端開發(fā)人員的工作,同時為Web應(yīng)用程序、桌面應(yīng)用程序和移動電話提供特定的授權(quán)流。Azure AD使用OAuth 2.0,可讓你授予移動和Web應(yīng)用程序的訪問權(quán)限。
最佳做法:根據(jù)“需要知道”和“最低權(quán)限”安全原則限制訪問。
詳細信息:對于想要實施數(shù)據(jù)訪問安全策略的組織,限制訪問是必須要做的事??梢允褂肁zure RBAC向特定范圍內(nèi)的用戶、組和應(yīng)用程序分配權(quán)限。若要了解有關(guān)向用戶授予應(yīng)用程序訪問權(quán)限的詳細信息,請參閱訪問管理入門。
最佳做法:保護密鑰。
詳細信息:Azure Key Vault可幫助保護云應(yīng)用程序和服務(wù)使用的加密密鑰和機密。通過Key Vault,可以使用受硬件安全模塊(HSM)保護的密鑰,來加密密鑰和機密(例如身份驗證密鑰、存儲帳戶密鑰、數(shù)據(jù)加密密鑰、.PFX文件和密碼)。為了提升可靠性,可以在HSM中導(dǎo)入或生成密鑰。請參閱Azure Key Vault了解詳細信息。還可以使用Key Vault和自動續(xù)訂來管理TLS證書。
最佳做法:限制傳入的源IP地址。
詳細信息:應(yīng)用服務(wù)環(huán)境提供虛擬網(wǎng)絡(luò)集成功能,可幫助你通過網(wǎng)絡(luò)安全組限制傳入的源IP地址。使用虛擬網(wǎng)絡(luò)可將Azure資源置于可以控制其訪問權(quán)限但無法通過Internet路由的網(wǎng)絡(luò)中。若要了解詳細信息,請參閱將應(yīng)用與Azure虛擬網(wǎng)絡(luò)集成。
最佳做法:監(jiān)視應(yīng)用服務(wù)環(huán)境的安全狀態(tài)。
詳細信息:使用Azure安全中心監(jiān)視應(yīng)用服務(wù)環(huán)境。在安全中心識別潛在的安全漏洞時,它會創(chuàng)建一些建議,這些建議會指導(dǎo)完成配置所需控件的過程。
備注
監(jiān)視應(yīng)用服務(wù)的功能以預(yù)覽版提供,僅適用于安全中心的標準層。
安裝Web應(yīng)用程序防火墻
Web應(yīng)用程序已逐漸成為利用常見已知漏洞的惡意攻擊的目標。這些攻擊中最常見的攻擊包括SQL注入攻擊、跨站點腳本攻擊等。防止應(yīng)用程序代碼中的此類攻擊頗具挑戰(zhàn)性,可能需要在應(yīng)用程序拓撲的多個層進行嚴格的維護、修補和監(jiān)視。集中式Web應(yīng)用程序防火墻有助于大幅簡化安全管理,為抵卸威脅或入侵的應(yīng)用程序管理員提供更好的保障。相較保護每個單獨的Web應(yīng)用程序,WAF解決方案還可通過在中央位置修補已知漏洞,更快地響應(yīng)安全威脅。可將現(xiàn)有應(yīng)用程序網(wǎng)關(guān)輕松轉(zhuǎn)換為支持Web應(yīng)用程序防火墻的應(yīng)用程序網(wǎng)關(guān)。
Web應(yīng)用程序防火墻(WAF)是應(yīng)用程序網(wǎng)關(guān)的功能,可以對Web應(yīng)用程序進行集中保護,避免其受到常見的攻擊和漏洞危害。WAF基于開放Web應(yīng)用程序安全項目(OWASP)核心規(guī)則集3.0或2.2.9中的規(guī)則。
監(jiān)視應(yīng)用程序的性能
監(jiān)視是一種數(shù)據(jù)收集和分析操作,用于確定應(yīng)用程序的性能、運行狀況及可用性。有效的監(jiān)視策略有助于了解應(yīng)用程序組件的詳細運行狀況,它有助于向你發(fā)送關(guān)鍵情況的通知,讓你在這些情況成為問題之前解決它們,從而提高運行時間。它還有助于檢測可能與安全相關(guān)的異常。
使用Azure Application Insights監(jiān)視應(yīng)用程序的可用性、性能和使用情況,不管其是托管在云中還是在本地。通過使用Application Insights,可以快速確定并診斷應(yīng)用程序中的錯誤,而無需等待用戶報告這些錯誤。利用所收集的信息,可作出有關(guān)應(yīng)用程序維護和優(yōu)化的明智抉擇。
Application Insights提供各種可以與所收集的數(shù)據(jù)交互的工具。Application Insights在公用存儲庫中存儲其數(shù)據(jù)。它可以通過Kusto查詢語言充分利用各種共享功能,例如警報、儀表板和深入分析。
執(zhí)行安全滲透測試
驗證安全防御與測試任何其他功能一樣重要。將滲透測試規(guī)定為生成和部署過程的標準組成部分。針對已部署應(yīng)用程序?qū)Χㄆ诎踩珳y試和漏洞掃描進行計劃,并監(jiān)視打開的端口、終結(jié)點和攻擊活動。
模糊測試是一種通過將格式錯誤的輸入數(shù)據(jù)提供給分析并使用此數(shù)據(jù)的程序接口(入口點)來查找程序故障(代碼錯誤)的方法。Microsoft安全風(fēng)險檢測是一種基于云的工具,可以在將軟件部署到Azure之前,使用該工具查找軟件中的bug和其他安全漏洞。該工具設(shè)計為在部署軟件前捕獲漏洞,因此你無需在軟件發(fā)布后修補bug、處理崩潰或響應(yīng)攻擊。