如今,很多組織遭遇網(wǎng)絡(luò)攻擊,這表明云計(jì)算安全是一個(gè)復(fù)雜的技術(shù)和合同問題。
在最近發(fā)生的主要云安全事件中,Capital One公司的數(shù)據(jù)泄露事件影響了美國(guó)的1億人和加拿大的600萬人。其實(shí)并不只有Capital One公司遭遇網(wǎng)絡(luò)攻擊,黑客Paige A. Thompson與此同時(shí)竊取了其他三十多家公司、教育機(jī)構(gòu)和其他實(shí)體的數(shù)TB的數(shù)據(jù)。
正如這位被指控的網(wǎng)絡(luò)攻擊者在談到AWS配置時(shí)所說,“很多組織在其安全方面都做錯(cuò)了。”
那么,只有這一家公司在安全方面嚴(yán)重失誤?并不是,這個(gè)事件與眾不同。首先需要了解一些事情。調(diào)查表明,Capital One公司的業(yè)務(wù)在很大程度上依賴亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)的云計(jì)算服務(wù)。并且網(wǎng)絡(luò)攻擊是在Amazon簡(jiǎn)單存儲(chǔ)服務(wù)(S3存儲(chǔ)桶)中保存的數(shù)據(jù)上進(jìn)行的。但是,由于防火墻配置錯(cuò)誤,這次攻擊并不是在沒有任何安全措施的情況下對(duì)S3存儲(chǔ)桶進(jìn)行的攻擊。
簡(jiǎn)而言之,這些違規(guī)行為不是因?yàn)槠髽I(yè)犯下了愚蠢的安全錯(cuò)誤,而是因?yàn)樵诰S護(hù)自身安全方面做得很差。
Capital One公司的ModSecurity Web應(yīng)用程序防火墻(WAF)配置錯(cuò)誤使得網(wǎng)絡(luò)攻擊者(前AWS員工)能夠欺騙防火墻,并將請(qǐng)求轉(zhuǎn)發(fā)給關(guān)鍵的AWS后端資源。攻擊者使用服務(wù)器端請(qǐng)求偽造(SSRF)攻擊來欺騙防火墻讓攻擊者進(jìn)入。
人們今后將會(huì)看到更多此類攻擊。正如Cloudflare公司產(chǎn)品安全團(tuán)隊(duì)經(jīng)理Evan Johnson所說的那樣,“這個(gè)問題很常見,并且眾所周知,但很難預(yù)防,而且AWS平臺(tái)沒有任何應(yīng)對(duì)或緩解措施。”
因此,顯然很多人可以將一些責(zé)任歸咎于AWS公司的公共云服務(wù)。但是,正如所謂的攻擊者自己對(duì)AWS的配置所說的那樣,很多公司在這方面做錯(cuò)了。正如Gartner公司在調(diào)查報(bào)告中預(yù)測(cè),“其實(shí)95%的云安全故障都是客戶的錯(cuò)。”
然而有些人(例如參議員Ron Wyden)卻將此次數(shù)據(jù)泄露的大部分責(zé)任推給AWS公司,AWS公司確實(shí)需要為此進(jìn)行解釋,但真正的問題是如果企業(yè)的安全措施不佳,就會(huì)在遭遇攻擊時(shí)損失慘重。并且采用的云服務(wù)規(guī)模越大,損失越大。
正如安全專家Brian Krebs指出的那樣,這一漏洞并不是由先前未知的‘零日’缺陷或內(nèi)部攻擊造成的,而是由使用眾所周知的錯(cuò)誤進(jìn)行攻擊造成的。
但是,在這一系列安全災(zāi)難事件中,誰(shuí)真正犯了安全錯(cuò)誤呢?是云計(jì)算提供商還是使用云服務(wù)的公司?答案是他們都有責(zé)任。
云安全的共享責(zé)任模型
客戶和云計(jì)算提供商各自負(fù)責(zé)云堆棧的不同部分。這個(gè)概念稱為共享責(zé)任模型(SRM)。快速思考此模型的方法是云計(jì)算提供商負(fù)責(zé)云平臺(tái)的安全性,采用云平臺(tái)的用戶則需要負(fù)責(zé)在云中的業(yè)務(wù)安全性。
AWS和Microsoft Azure公司都明確支持此模型。但是,所有公共云都在某種程度上使用它,它是企業(yè)目前處理云安全的技術(shù)和合同方式的基礎(chǔ)。
在最基本的層面上,它意味著企業(yè)負(fù)責(zé)管理程序級(jí)別以上的所有內(nèi)容。其中包括客戶操作系統(tǒng)、應(yīng)用程序軟件、云計(jì)算實(shí)例的防火墻以及傳輸和空閑時(shí)的加密數(shù)據(jù)。云計(jì)算提供商負(fù)責(zé)主機(jī)操作系統(tǒng)、虛擬化層及其設(shè)施的物理安全性。
當(dāng)然在現(xiàn)實(shí)世界中,它從未如此簡(jiǎn)單,人們需要了解一些最新的安全事件。
AWS公司表示,“安全與合規(guī)是AWS與用戶之間的共同責(zé)任。這種共享模式可以幫助減輕用戶的運(yùn)營(yíng)負(fù)擔(dān),因?yàn)锳WS公司可以運(yùn)行、管理和控制從主機(jī)操作系統(tǒng)和虛擬化層到組件的物理安全性的組件,以及服務(wù)運(yùn)營(yíng)的設(shè)施。客戶承擔(dān)操作系統(tǒng)的責(zé)任和管理(包括更新和安全補(bǔ)丁),其他相關(guān)的應(yīng)用軟件以及AWS提供的安全組防火墻的配置。”
對(duì)于Capital One公司來說,他們沒有正確設(shè)置防火墻。但是,獲得AWS身份和訪問管理(IAM)角色臨時(shí)憑據(jù)變得更容易。有了這些臨時(shí)憑證,進(jìn)行服務(wù)端請(qǐng)求偽造(SSRF)攻擊相對(duì)容易。
Johnson聲稱有幾種方法可以減少臨時(shí)憑證的使用。Netflix公司還表明,企業(yè)可以在AWS云平臺(tái)中發(fā)現(xiàn)臨時(shí)安全憑證的使用。所以AWS公司可以更好地鎖定防火墻,但是,Capital One公司首先設(shè)置防火墻。簡(jiǎn)而言之,這一切都變得相當(dāng)混亂。
這并不奇怪。正如行業(yè)專家指出的那樣,將云安全要求視為一種范圍。云計(jì)算服務(wù)客戶將適用于其組織的所有監(jiān)管法規(guī)、行業(yè)和業(yè)務(wù)要求(GDPR、PCI DSS、合同等),其總和等于該組織的所有特定安全要求。這些安全要求將有助于確保數(shù)據(jù)的機(jī)密性、完整性、可用性。
安全要求范圍的一端是云計(jì)算服務(wù)提供商,另一端是采用云計(jì)算服務(wù)的用戶。提供商負(fù)責(zé)其中一些安全要求,用戶對(duì)其余部分負(fù)責(zé),但都應(yīng)該滿足一些安全要求。云計(jì)算服務(wù)提供商和采用云服務(wù)的用戶都有義務(wù)保護(hù)數(shù)據(jù)。
但是,在誰(shuí)負(fù)責(zé)什么之間劃清界限也不容易。沒有一種適合所有云平臺(tái)安全性的解決方案。例如,如果使用軟件即服務(wù)(SaaS)辦公套件,例如谷歌的GSuite,顯然是由谷歌負(fù)責(zé)而不是由用戶負(fù)責(zé)。如果在平臺(tái)即服務(wù)(PaaS)上運(yùn)行自己的應(yīng)用程序,那么可以同時(shí)承擔(dān)該程序運(yùn)行的信譽(yù)和責(zé)任。
如果仔細(xì)觀察,人們會(huì)發(fā)現(xiàn)AWS公司提供三種不同的共享責(zé)任模型(SRM)。這些是基礎(chǔ)設(shè)施服務(wù)、容器服務(wù)、抽象服務(wù)。Azure和其他公共云服務(wù)商也具有類似的安全策略設(shè)置。
基礎(chǔ)設(shè)施包括計(jì)算服務(wù)(如EC2)和支持服務(wù),例如彈性塊存儲(chǔ)(EBS)、自動(dòng)擴(kuò)展和虛擬專用網(wǎng)絡(luò)(VPC)。使用此模型,用戶可以像在本地部署或自己的數(shù)據(jù)中心一樣在AWS云平臺(tái)中安裝和配置操作系統(tǒng)和平臺(tái)。除此之外,還可以安裝應(yīng)用程序。最終,用戶可以將數(shù)據(jù)駐留在自己的應(yīng)用程序中,并由自己進(jìn)行應(yīng)用程序管理。
容器服務(wù)與Docker和類似技術(shù)幾乎沒有關(guān)系,這些技術(shù)在用戶考慮容器時(shí)會(huì)浮現(xiàn)在腦海中。相反,這些服務(wù)通常在單獨(dú)的Amazon EC2或其他基礎(chǔ)設(shè)施實(shí)例上運(yùn)行,但有時(shí)用戶不用管理操作系統(tǒng)或平臺(tái)層。
AWS提供托管服務(wù),但用戶負(fù)責(zé)設(shè)置和管理網(wǎng)絡(luò)控制(例如防火墻規(guī)則),以及與身份和訪問管理(IAM)分開管理平臺(tái)級(jí)別身份和訪問管理。容器服務(wù)的示例包括Amazon 關(guān)系數(shù)據(jù)庫(kù)服務(wù)(Amazon RDS)、Amazon 彈性映射還原(Amazon EMR)和AWS Elastic Beanstalk。
在這里,AWS公司管理底層基礎(chǔ)設(shè)施和基礎(chǔ)服務(wù)、操作系統(tǒng)和應(yīng)用程序平臺(tái)。例如,使用Amazon RDS AWS管理容器的所有層,包括Oracle數(shù)據(jù)庫(kù)平臺(tái)。但是,AWS平臺(tái)提供數(shù)據(jù)備份和恢復(fù)工具;用戶的工作是維護(hù)其業(yè)務(wù)連續(xù)性和災(zāi)難恢復(fù)政策。還負(fù)責(zé)數(shù)據(jù)和防火墻規(guī)則。因此,雖然Amazon RDS提供防火墻軟件,但其工作是管理防火墻。
抽象服務(wù)是高級(jí)存儲(chǔ)、數(shù)據(jù)庫(kù)和消息傳遞服務(wù)。它們包括Amazon 簡(jiǎn)單存儲(chǔ)服務(wù)(Amazon S3)、Amazon DynamoDB、Amazon Simple Email Service。這些抽象了用戶可以構(gòu)建和運(yùn)行云應(yīng)用程序的平臺(tái)或管理層。可以使用他們的AWS API執(zhí)行此操作。AWS公司來管理底層服務(wù)組件或操作系統(tǒng)。
在這里,用戶的安全工作是使用身份和訪問管理(IAM)工具管理數(shù)據(jù),以便對(duì)平臺(tái)級(jí)別的各個(gè)資源應(yīng)用訪問控制列表(ACL)樣式權(quán)限,或者在身份和訪問管理(IAM)用戶/組級(jí)別應(yīng)用用戶身份或用戶責(zé)任權(quán)限。
以下了解一個(gè)簡(jiǎn)單的例子。亞馬遜公司將Amazon Elastic Compute Cloud(Amazon EC2)歸類為基礎(chǔ)設(shè)施即服務(wù)(IaaS)云平臺(tái)。有了它,用戶負(fù)責(zé)管理客戶操作系統(tǒng)(包括更新和安全補(bǔ)丁),在實(shí)例上安裝的任何應(yīng)用程序軟件或?qū)嵱贸绦颍约癆WS每個(gè)實(shí)例提供的防火墻(也稱為安全組)的配置。但是,需要使用Amazon S3運(yùn)行基礎(chǔ)設(shè)施層、操作系統(tǒng)和平臺(tái),客戶訪問端點(diǎn)以存儲(chǔ)和檢索數(shù)據(jù)。用戶負(fù)責(zé)管理其數(shù)據(jù)(包括加密選項(xiàng)),對(duì)其資產(chǎn)進(jìn)行分類以及使用身份和訪問管理(IAM)應(yīng)用適當(dāng)權(quán)限的工具。
了解其重點(diǎn)了嗎?這兩者都是基礎(chǔ)設(shè)施即服務(wù)(IaaS),但它們有不同的規(guī)則。
這個(gè)故事的寓意是,用戶必須仔細(xì)研究每一個(gè)云計(jì)算存儲(chǔ)資源管理服務(wù)(SRM)服務(wù)協(xié)議。不過,盡管必須準(zhǔn)確地了解其使用的每項(xiàng)服務(wù)的內(nèi)容以及誰(shuí)負(fù)責(zé)每項(xiàng)服務(wù),但基本概念并不太復(fù)雜。云計(jì)算提供商負(fù)責(zé)云平臺(tái)的安全,而用戶負(fù)責(zé)其云平臺(tái)業(yè)務(wù)的安全。
未來的云計(jì)算復(fù)雜度更高
云原生計(jì)算已經(jīng)混淆了共享責(zé)任模型(SRM)中的內(nèi)容。例如,AWS公司現(xiàn)在提供AWS Lambda。這是一種無服務(wù)器云計(jì)算方法,可讓用戶在不配置或管理服務(wù)器的情況下運(yùn)行代碼。因此,如果沒有服務(wù)器,那么誰(shuí)為服務(wù)器負(fù)責(zé)?
亞馬遜公司表示,采用Lambda,AWS公司管理底層基礎(chǔ)設(shè)施和基礎(chǔ)服務(wù)、操作系統(tǒng)和應(yīng)用程序平臺(tái)。用戶負(fù)責(zé)代碼的安全性、敏感數(shù)據(jù)的存儲(chǔ)和可訪問性以及身份和訪問管理(IAM)。
這就留下了問題。例如,既然用戶正在使用Lambda來運(yùn)行代碼,那么代碼的責(zé)任在哪里結(jié)束,Lambda的責(zé)任從哪里開始?
正如Gadi Naor公司首席技術(shù)官和全棧云原生安全平臺(tái)提供商Alcide公司聯(lián)合創(chuàng)始人司所說,“使用無服務(wù)器架構(gòu)意味著組織有新的盲點(diǎn),只是因?yàn)樗麄儾辉倌軌蛟L問架構(gòu)的操作系統(tǒng),防止他們?cè)谶@些工作負(fù)載中添加防火墻,基于主機(jī)的入侵防護(hù)或工作負(fù)載保護(hù)工具。”
這只是個(gè)開始。例如,Kuberrnetes正在使混合云同時(shí)在多個(gè)云平臺(tái)上運(yùn)行。那么,如果用戶正在運(yùn)行一個(gè)跨越新的基于Red Hat的IBM云平臺(tái)和AWS的程序,那么誰(shuí)負(fù)責(zé)保護(hù)整個(gè)項(xiàng)目?當(dāng)出現(xiàn)問題時(shí)誰(shuí)負(fù)責(zé)?而且,最后但并非最不重要的是,當(dāng)最終用戶起訴時(shí)誰(shuí)來支付費(fèi)用?
這是一個(gè)很好的問題。對(duì)于人們正在進(jìn)入的這個(gè)新的復(fù)雜云世界,仍然沒有很好的答案。
那么,用戶可以做些什么?首先,確保了解自己的云安全需求。用戶不能選擇云計(jì)算服務(wù)提供商并制定云安全協(xié)議,直到知道什么對(duì)自己有用。這些不僅僅是技術(shù)問題。它們也是需要關(guān)注的法律問題。
有了這些信息,用戶就可以與云計(jì)算提供商制定安全協(xié)議。這應(yīng)該在其服務(wù)級(jí)別協(xié)議中明確規(guī)定。
最后,無論合同中有什么內(nèi)容,用戶和其安全人員都必須確保基于云計(jì)算的數(shù)據(jù)和服務(wù)盡可能安全。畢竟,這是自己的數(shù)據(jù)和工作,如果出了問題,將需要承擔(dān)不可推托的責(zé)任。