開(kāi)發(fā)安全云感知應(yīng)用程序的最佳實(shí)踐
隨著開(kāi)發(fā)人員和組織認(rèn)識(shí)到云感知應(yīng)用程序不斷增長(zhǎng)的價(jià)值,它們的架構(gòu)和設(shè)計(jì)正變得越來(lái)越流行。云感知應(yīng)用程序可能非常靈活、容易擴(kuò)展、能夠更快地進(jìn)行開(kāi)發(fā),而且更加經(jīng)濟(jì)。盡管云感知應(yīng)用程序擁有諸多好處,但它們的架構(gòu)可能給無(wú)意識(shí)的人帶來(lái)諸多安全挑戰(zhàn)。本文將介紹云感知應(yīng)用程序所帶來(lái)的一些安全挑戰(zhàn),以及您如何通過(guò)各種最佳實(shí)踐來(lái)解決其中一些挑戰(zhàn)。
云感知應(yīng)用程序的特征
云感知應(yīng)用程序是非常簡(jiǎn)單的應(yīng)用程序,它們能夠感知正被利用的云服務(wù)和基礎(chǔ)架構(gòu),支持無(wú)縫且自動(dòng)化地?cái)U(kuò)展、精減、故障轉(zhuǎn)移等。部署在云中的簡(jiǎn)單 Web 應(yīng)用程序?qū)嶋H上是一個(gè)部署在虛擬硬件堆棧上的多層軟件堆棧,與此不同的是,云感知應(yīng)用程序可能擁有一種更加分布式和無(wú)狀態(tài)的模型來(lái)使用計(jì)算的服務(wù)和角色模型。要了解傳統(tǒng) n 層應(yīng)用程序與云感知應(yīng)用程序的特征的總體比較,請(qǐng)參閱 表 1 和 表 2。
表 1. N 層應(yīng)用程序特征
表 2. 云感知應(yīng)用程序特征
從表 1 和表 2 中可以看到,云感知應(yīng)用程序旨在利用眾多的服務(wù)和端點(diǎn),與在云上運(yùn)行的更傳統(tǒng)的孤立應(yīng)用程序不同。由于您的數(shù)據(jù)或應(yīng)用程序的功能可能依賴于您無(wú)法掌控的第三方或合作伙伴服務(wù),因此可能帶來(lái)安全問(wèn)題。盡管云服務(wù)存在內(nèi)在風(fēng)險(xiǎn),但它們?cè)谠聘兄獞?yīng)用程序中特別流行,您的數(shù)據(jù)可能被暴露處于靜止、活動(dòng)和使用狀態(tài)。此外,在云感知應(yīng)用程序中,您的數(shù)據(jù)最終可能由第三方管理或使用。合作伙伴可能擁有糟糕的安全性,可能疏忽地發(fā)布數(shù)據(jù)或被攻擊者利用,不幸的是,甚至對(duì)于一些最著名的云應(yīng)用程序和服務(wù),這些情況也經(jīng)常發(fā)生。另一個(gè)問(wèn)題是,即使您使用 SSL,您的數(shù)據(jù)也有可能遭到損壞,因?yàn)樗峭ㄟ^(guò)線路傳輸?shù)?。尤其在您的證書(shū)或合作伙伴的配置很差的時(shí)候,很可能出現(xiàn)這種情況。數(shù)據(jù)也有可能被利用,因?yàn)槟臄?shù)據(jù)由云環(huán)境使用,云環(huán)境可能被損壞,泄漏您的加密密鑰和重要數(shù)據(jù)。最后,由于云感知應(yīng)用程序的自動(dòng)化和連鎖性質(zhì),它們的 API 端點(diǎn)通常很容易被利用,除非對(duì)它們采取了訪問(wèn)控制。
云感知應(yīng)用程序中的加密需求
除了極少的例外,任何公司最重要的資產(chǎn)之一就是其數(shù)據(jù)。您的數(shù)據(jù)可能包括財(cái)務(wù)信息、專用銷(xiāo)售信息、市場(chǎng)營(yíng)銷(xiāo)信息、醫(yī)療信息、知識(shí)產(chǎn)權(quán) (IP) 等形式。丟失數(shù)據(jù)可能給業(yè)務(wù)運(yùn)營(yíng)造成負(fù)面影響,甚至可能導(dǎo)致您的組織倒閉。該信息被盜或發(fā)布給公眾,可能損壞您的聲譽(yù),導(dǎo)致法律問(wèn)題,給您的品牌帶來(lái)負(fù)面影響,在 Sony Pictures 最近受到的攻擊 中就可以看到。所以,保護(hù)您的數(shù)據(jù)可能且應(yīng)該是一項(xiàng)對(duì)業(yè)務(wù)非常重要的工作,無(wú)論您是只有兩個(gè)人的創(chuàng)業(yè)公司還是跨國(guó)企業(yè)。要保護(hù)您在云中的數(shù)據(jù),您需要采取許多操作——從控制訪問(wèn)到加固您的操作系統(tǒng)。無(wú)數(shù)的數(shù)據(jù)破壞表明了采取一些關(guān)鍵步驟的重要性,比如對(duì)數(shù)據(jù)的移動(dòng)和訪問(wèn)方式創(chuàng)建策略,以及加固您的網(wǎng)絡(luò)。無(wú)論您采取多少步驟來(lái)保護(hù)您的系統(tǒng),總有人可能找到途徑損壞您的數(shù)據(jù)。新威脅隨時(shí)可能出現(xiàn),從更常見(jiàn)的內(nèi)部人員威脅到民族國(guó)家的攻擊,甚至可能包括讓安全專家驚訝和損壞整個(gè)系統(tǒng)的軟件中的基本缺陷。因此,正如我已指出的,云感知應(yīng)用程序應(yīng)內(nèi)置安全性,對(duì)靜止和活動(dòng)數(shù)據(jù)都進(jìn)行加密。
3 種加密狀態(tài)和云的共享風(fēng)險(xiǎn)模型
大多數(shù)安全專家和加密專家將加密分為 3 種狀態(tài)。第一種是靜止數(shù)據(jù),描述您的數(shù)據(jù)在未使用的文件系統(tǒng)上時(shí)的狀態(tài),比如文件和數(shù)據(jù)庫(kù)中的數(shù)據(jù)。第二種是活動(dòng)數(shù)據(jù),比如當(dāng)您將數(shù)據(jù)從一個(gè)服務(wù)器轉(zhuǎn)移到另一個(gè)服務(wù)器時(shí)。所有流經(jīng)網(wǎng)絡(luò)的位(bit)都被視為活動(dòng)數(shù)據(jù)。最后,我們還有使用中的數(shù)據(jù),也就是正在您的 CPU 或 RAM 中使用的數(shù)據(jù)。理解這 3 種加密狀態(tài),才能更好地理解您在云中的脆弱性。
云感知應(yīng)用程序創(chuàng)造了獨(dú)特的安全威脅,因?yàn)榛A(chǔ)架構(gòu)即服務(wù) (IaaS) 提供商和平臺(tái)即服務(wù) (PaaS) 提供商都在使用某種共享風(fēng)險(xiǎn)模型。這意味著,您的云合作伙伴通常會(huì)提供一個(gè)受保護(hù)的數(shù)據(jù)中心、一些網(wǎng)絡(luò)安全保護(hù)、高可用性存儲(chǔ)和硬件,以及其他服務(wù),但您被要求自行滿足一些安全考慮因素。這些因素包括身份訪問(wèn)管理和控制、入侵檢測(cè)、監(jiān)視、操作系統(tǒng)加固、系統(tǒng)修補(bǔ),當(dāng)然還有加密。此外,由于共享風(fēng)險(xiǎn)模型,因?yàn)槟鷮?duì)您的機(jī)器和接觸它們的人沒(méi)有物理控制權(quán),所以能夠在物理上訪問(wèn)您系統(tǒng)的供應(yīng)商員工或第三方進(jìn)行攻擊利用的風(fēng)險(xiǎn)更大。云系統(tǒng)中的其他租戶也可能攻擊您的系統(tǒng)或感染它們(盡管目前還未出現(xiàn)過(guò))。因此,云安全聯(lián)盟特意要求加密您的云系統(tǒng)上的所有敏感數(shù)據(jù),保護(hù)您的所有活動(dòng)數(shù)據(jù)。
策略先于技術(shù):合規(guī)性和控制
在考慮采用哪些方式來(lái)保護(hù)您的云感知應(yīng)用程序之前,應(yīng)該考慮您組織的安全驅(qū)動(dòng)因素,以便可以圍繞您應(yīng)用程序的保護(hù)提出清晰且定義明確的策略。這些策略還需要推進(jìn)您的安全軟件開(kāi)發(fā)生命周期 (S-SDLC),不僅要?jiǎng)?chuàng)建更安全的應(yīng)用程序,還要在其整個(gè)生命周期對(duì)它進(jìn)行管理。開(kāi)發(fā)您的策略時(shí),一些起點(diǎn)包括:
確保接觸您系統(tǒng)的所有主要利益相關(guān)者都參與其中,這些利益相關(guān)者的范圍是:從 HR 到業(yè)務(wù)運(yùn)營(yíng),到財(cái)務(wù),再到高級(jí) IT 管理人員。組織常常忘記包含不同部門(mén),這通常會(huì)導(dǎo)致一些問(wèn)題,比如我們?cè)?Sony Pictures 看到,包含高度敏感的數(shù)據(jù)的合同以明文形式存放在服務(wù)器上。
設(shè)計(jì)一個(gè)策略來(lái)確定誰(shuí)能夠訪問(wèn)您的系統(tǒng),并實(shí)現(xiàn)一個(gè)健全的身份管理解決方案,該方案不僅針對(duì)您的內(nèi)部用戶,還針對(duì)公開(kāi)的服務(wù)和端點(diǎn)的使用者。您的解決方案必須支持生成訪問(wèn)日志的能力和基于策略的訪問(wèn),以及加密和密鑰管理。最后,盡早考慮多租戶,因?yàn)榧词故菃巫鈶魬?yīng)用程序,最終在某個(gè)時(shí)刻也需要支持多租戶。
從總體上決定誰(shuí)將能訪問(wèn)您的加密密鑰,以及這些密鑰將位于何處。具體的實(shí)現(xiàn)將規(guī)定您如何管理密鑰,但您首先應(yīng)對(duì)誰(shuí)應(yīng)能夠訪問(wèn)它們有一個(gè)明確的認(rèn)識(shí)。
仔細(xì)考慮您必須遵守哪些法規(guī),比如 PCI、FISMA、HIPPA 和 GLBA。大部分法規(guī)都要求提供特定的加密水平,或者規(guī)定如何管理加密密鑰。其他法規(guī)要求自動(dòng)加密員工信息或計(jì)算信用卡編號(hào)的哈希值等。
與您的利益相關(guān)者緊密合作,確定哪些數(shù)據(jù)對(duì)您的公司很重要。這比聽(tīng)起來(lái)難得多。擁有敏感的知識(shí)產(chǎn)權(quán)或?qū)S眯畔⒌墓究隙☉?yīng)加密其數(shù)據(jù),但許多公司擁有可能在最初評(píng)估時(shí)看起來(lái)不敏感的信息。例如,許多公司認(rèn)為客戶電子郵件或個(gè)人信息對(duì)任何人都不重要。而犯罪分子非常重視這些信息,可以將它們轉(zhuǎn)售給垃圾郵件發(fā)送者、網(wǎng)絡(luò)釣魚(yú)者或身份盜竊者。丟失這類數(shù)據(jù)可能會(huì)嚴(yán)重危害組織的品牌和其客戶的信任。
盡早決定數(shù)據(jù)破壞策略。有時(shí)您可能會(huì)遇到數(shù)據(jù)破壞或泄漏。如果執(zhí)行了上述步驟,那么您就可以很好地認(rèn)識(shí)到哪些數(shù)據(jù)是關(guān)鍵的,哪些不是。您還會(huì)知道您必須遵守哪些法規(guī),讓用戶了解數(shù)據(jù)(比如個(gè)人信息)是否已泄漏,并能夠依據(jù)約束您的應(yīng)用程序的法規(guī)(比如 HIPPA 或 PCI)來(lái)進(jìn)行響應(yīng)。
有了這些總體指南和對(duì)云的共享風(fēng)險(xiǎn)模型的理解,您現(xiàn)在已經(jīng)很好地了解您需要保護(hù)什么了。接下來(lái),我將介紹各種級(jí)別的加密方法和保護(hù)應(yīng)用程序端點(diǎn)。
靜止數(shù)據(jù)
有兩種保護(hù)靜止數(shù)據(jù)的基本方法:全磁盤(pán)加密 (FDK) 包括一個(gè)驅(qū)動(dòng)器上的所有信息,而文件級(jí)加密 (FLE) 僅加密敏感文件或數(shù)據(jù)。這些方法都非常簡(jiǎn)單易懂。使用 FDK,磁盤(pán)上的所有信息都會(huì)加密。它擁有許多優(yōu)勢(shì),包括更簡(jiǎn)單的管理,因?yàn)樗行畔⒍紩?huì)自動(dòng)加密。該方法的一些不足是,它可能需要大量計(jì)算資源,這會(huì)影響系統(tǒng)性能,有時(shí)會(huì)占用太多磁盤(pán)空間。盡管如此,大部分使用 FDK 的公司都表明這些開(kāi)支是物有所值的。但一般來(lái)講,大多數(shù)云服務(wù)提供商都通過(guò)各種服務(wù)或 API 簡(jiǎn)化了 FDK 的設(shè)置和部署。如果您的應(yīng)用程序中或某個(gè)特定數(shù)據(jù)層上(比如數(shù)據(jù)庫(kù))有許多敏感數(shù)據(jù),那么 FDK 就會(huì)很有用。如果只有小部分信息是敏感的,那么 FLE 可能更可取一些。大部分針對(duì)云感知應(yīng)用程序的云服務(wù)和軟件堆棧(比如 Cloudant)都可以使用 FLE 輕松地存儲(chǔ)已加密的二進(jìn)制數(shù)據(jù)。
對(duì)于靜止數(shù)據(jù),要考慮的另一點(diǎn)是反復(fù)制技術(shù)或數(shù)據(jù)權(quán)限管理 (DRM),可以使用標(biāo)簽或集成工具(比如 Adobe 的 DRM)等各種技術(shù)。根據(jù)您對(duì)這些工具的需要,可以顯著減少由于內(nèi)部人員威脅而導(dǎo)致數(shù)據(jù)泄漏和公開(kāi)的機(jī)會(huì)。這對(duì)于云感知應(yīng)用程序非常重要,因?yàn)閿?shù)據(jù)可能會(huì)不斷地在不同的最終節(jié)點(diǎn)中移進(jìn)移出。在許多情況下,您可能希望結(jié)合使用過(guò)反復(fù)制技術(shù)、FDK 和 FLE。例如,您可能有一個(gè)應(yīng)用程序,它的數(shù)據(jù)已在數(shù)據(jù)庫(kù)中加密。您的應(yīng)用程序還會(huì)使用報(bào)告生成服務(wù)生成敏感的、需要加密的報(bào)告;這些報(bào)告存儲(chǔ)在支持 FDK 的數(shù)據(jù)存儲(chǔ)服務(wù)中(比如 Glacier 或 Nearline)。在這種情況下,加密的文件和二進(jìn)制數(shù)據(jù)存儲(chǔ)在經(jīng)過(guò)整體加密的 PaaS 歸檔解決方案上。這種常見(jiàn)設(shè)置引出了下一個(gè)話題:對(duì)于一個(gè)共享和使用來(lái)自大量端點(diǎn)的數(shù)據(jù)的云感知應(yīng)用程序,您應(yīng)該在何處執(zhí)行加密,您在何處存儲(chǔ)您的密鑰?
大多數(shù)云感知應(yīng)用程序利用了大量的外部服務(wù)。例如,您的云感知應(yīng)用程序可以利用消息隊(duì)列服務(wù)、圖像緩存服務(wù)、數(shù)據(jù)存儲(chǔ)平臺(tái)、歸檔服務(wù)和其他服務(wù),所有服務(wù)都通過(guò)一個(gè)服務(wù)編排平臺(tái)來(lái)協(xié)調(diào)。您的系統(tǒng)會(huì)通過(guò)您擁有很少控制權(quán)的服務(wù)來(lái)發(fā)送和使用大量包含重要數(shù)據(jù)的消息。出于這個(gè)原因,您的數(shù)據(jù)必須始終加密。不幸的是,太多的組織在服務(wù)間轉(zhuǎn)移數(shù)據(jù)而沒(méi)有加密其數(shù)據(jù)或文件,并且相信每個(gè)服務(wù)都會(huì)保護(hù)其數(shù)據(jù)的完整性。這些做法已導(dǎo)致大型公司通過(guò)第三方合作伙伴泄漏了用戶數(shù)據(jù),這些合作伙伴沒(méi)有安全地存儲(chǔ)數(shù)據(jù),或者實(shí)現(xiàn)了糟糕的靜止數(shù)據(jù)存儲(chǔ)機(jī)制。因此,您應(yīng)該加密所有敏感數(shù)據(jù),在解密前一直保持加密狀態(tài)。這可能很復(fù)雜,需要您自行管理加密密鑰。幸運(yùn)的是,許多公司(比如 KeyNexus 或 CloudCipher)提供了一些相關(guān)的產(chǎn)品和服務(wù),允許您使用自己的密鑰或 PKI 基礎(chǔ)架構(gòu)來(lái)始終保持對(duì)數(shù)據(jù)的控制。許多 IaaS 提供商還提供了 API,使您能夠使用自己的加密密鑰管理其服務(wù)中的加密。選擇提供商時(shí),您應(yīng)該了解您的靜止數(shù)據(jù)需求,您是否需要控制自己的密鑰,以及您的云應(yīng)用程序堆棧是否支持它。這通常是一個(gè)至關(guān)重要的決定。
活動(dòng)數(shù)據(jù)
一般而言,在任何您的應(yīng)用程序需要發(fā)送或接收敏感數(shù)據(jù)的時(shí)候,您都希望不僅僅加密發(fā)送的數(shù)據(jù),比如文件,還要加密通信/數(shù)據(jù)傳輸。例如,如果您的網(wǎng)站接受客戶信息或信用卡,您應(yīng)確保這些通信是加密的,因?yàn)檫@些數(shù)據(jù)會(huì)通過(guò)用戶的 Web 瀏覽器傳輸?shù)侥脑茟?yīng)用程序。在這種情況下,您需要使用 HTTP Secure 協(xié)議(HTTPS),而不是 HTTP。HTTPS 使用了 SSL/TLS,后者是一個(gè)加密活動(dòng)數(shù)據(jù)的協(xié)議。其他互聯(lián)網(wǎng)協(xié)議可以使用 SSL/TLS 來(lái)加密活動(dòng)數(shù)據(jù),而且在云感知應(yīng)用程序中,最佳做法是盡可能地在每個(gè)服務(wù)之間以及系統(tǒng)與應(yīng)用程序之間創(chuàng)建虛擬專用網(wǎng)。這會(huì)減少攻擊者損壞您系統(tǒng)的某部分并能夠從剩余部分收集數(shù)據(jù)的風(fēng)險(xiǎn)。您應(yīng)該使用信譽(yù)好的 SSL 證書(shū)來(lái)保護(hù)活動(dòng)數(shù)據(jù)。如果您不熟悉 SSL,請(qǐng)查閱來(lái)自開(kāi)放 Web 應(yīng)用程序安全項(xiàng)目 (Open Web Application Security Project) 的優(yōu)秀的 SSL 介紹(參見(jiàn) 參考資料)。
最后,許多組織會(huì)犯只信任 SSL,而不使用靜止加密的錯(cuò)誤。這是一個(gè)巨大的錯(cuò)誤。有許多利用 HTTPS 會(huì)話的途徑(盡管可能很復(fù)雜)。這是由于軟件及其 SSL 實(shí)現(xiàn)中糟糕的配置、設(shè)置或底層缺陷,比如我們?cè)?Heart Bleed 錯(cuò)誤中所看到的。出于這個(gè)原因,在網(wǎng)絡(luò)上傳輸敏感數(shù)據(jù)之前以及在您傳輸敏感數(shù)據(jù)時(shí),盡可能地加密它非常重要。
使用中的數(shù)據(jù)
通常我們很少對(duì)使用中的數(shù)據(jù)進(jìn)行加密。這主要是因?yàn)?,擁有或能夠控制自己的?shù)據(jù)中心的組織認(rèn)為沒(méi)有必要這樣做,他們認(rèn)為這些數(shù)據(jù)中心是安全的。因此,在服務(wù)器運(yùn)行時(shí),沒(méi)有人能夠輕松地訪問(wèn)它并檢查其 RAM 中的未加密數(shù)據(jù)或?qū)嶋H的加密密鑰。對(duì)于基于云的應(yīng)用程序,您無(wú)法確認(rèn)您應(yīng)用程序所在的系統(tǒng)的物理完整性。使用中的數(shù)據(jù)的加密迅速變得非常重要。的確如此,2012 年以來(lái),云安全聯(lián)盟就開(kāi)始推薦將加密使用中的數(shù)據(jù)作為最佳實(shí)踐。
目前,沒(méi)有 IaaS 或 PaaS 供應(yīng)商提供對(duì)使用中的數(shù)據(jù)的加密,但 PrivateCore 和 Vaultive 等公司提供了支持您所選的云環(huán)境中正在使用的數(shù)據(jù)的系統(tǒng)。對(duì)于大多數(shù)云感知應(yīng)用程序,使用中的數(shù)據(jù)很可能被過(guò)于重視,但對(duì)于擁有受犯罪組織和國(guó)家行為者攻擊的風(fēng)險(xiǎn)很高的組織而言,這應(yīng)該是一個(gè)嚴(yán)肅的考慮因素。從某種程度上講,這是因?yàn)橐恍┕粽邔iT(mén)使用為從 RAM 中提取加密密鑰或數(shù)據(jù)流向而設(shè)計(jì)的技術(shù)。
保護(hù)端點(diǎn)
云感知應(yīng)用程序的另一個(gè)最主要特征是 API 的使用,無(wú)論是在內(nèi)部和外部,都使用了 API 來(lái)設(shè)計(jì)靈活的、敏捷的應(yīng)用程序。盡管許多開(kāi)發(fā)人員忽視了這一步,但使用 API 時(shí)或?qū)⑷魏味它c(diǎn)包裝到一個(gè)高度抽象的 API 中時(shí)對(duì)端點(diǎn)加以保護(hù),是一種最佳實(shí)踐。原因在于,惡意的行為者通常采用拒絕服務(wù)攻擊(DoS)的形式攻擊沒(méi)有安全保護(hù)的端點(diǎn)。更加機(jī)智的攻擊者會(huì)利用端點(diǎn)上薄弱的授權(quán)來(lái)盜竊數(shù)據(jù),或者以難以預(yù)料的方式操作應(yīng)用程序。因此,所有端點(diǎn)都應(yīng)該采用某種形式的授權(quán)機(jī)制來(lái)加以保護(hù),比如 OAuth 或 SAML。您還應(yīng)能夠按地區(qū)或 IP 子網(wǎng)來(lái)限制訪問(wèn),并記錄系統(tǒng)或用戶對(duì)您 API 的訪問(wèn)。
結(jié)束語(yǔ)
開(kāi)發(fā)安全、云感知的應(yīng)用程序是一個(gè)復(fù)雜的主題,會(huì)受到您的業(yè)務(wù)需求和監(jiān)管環(huán)境的具體情況影響。盡管如此,我們提供了一些重要的建議,它們應(yīng)該可以幫助您開(kāi)始生成策略來(lái)保護(hù)您的應(yīng)用程序,部署加密,使用訪問(wèn)控制,以及保護(hù)您的端點(diǎn)。我還展示了一些加密數(shù)據(jù)的最佳實(shí)踐,提供了一些資源來(lái)幫助您創(chuàng)建一個(gè)實(shí)施云感知安全最佳實(shí)踐的計(jì)劃。參考資料部分提供了針對(duì)云感知應(yīng)用程序的最佳實(shí)踐的更多信息。