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

























