如何保護(hù)云原生應(yīng)用程序
譯文【51CTO.com快譯】很多企業(yè)如今正在采用云原生設(shè)計(jì)模式,以使其業(yè)務(wù)運(yùn)營實(shí)現(xiàn)現(xiàn)代化,并加快上市時(shí)間。云原生架構(gòu)結(jié)合了微服務(wù)、容器、自動(dòng)化持續(xù)集成(CI)/持續(xù)交付(CD)管道、容器編排、統(tǒng)一可觀察性和云計(jì)算基礎(chǔ)設(shè)施等技術(shù)。然而,現(xiàn)代云計(jì)算服務(wù)面臨著數(shù)據(jù)泄露、應(yīng)用程序漏洞、帳戶劫持、API不安全、惡意內(nèi)部人員、數(shù)據(jù)丟失、拒絕服務(wù)和憑證管理不足等安全風(fēng)險(xiǎn)。
為了防范這些威脅,企業(yè)應(yīng)該對(duì)其數(shù)據(jù)和服務(wù)采用零信任模型,并采用DevSecOps在整個(gè)軟件開發(fā)生命周期(SDLC)中集成安全實(shí)踐。企業(yè)正在使用Docker等容器技術(shù)來簡化其云原生應(yīng)用程序的打包和部署工作流。Kubernetes是一種流行的容器編排系統(tǒng),用于自動(dòng)化容器化應(yīng)用程序的部署、擴(kuò)展和管理。
采用DevOps原則使企業(yè)團(tuán)隊(duì)能夠快速部署和發(fā)布功能,但它也給云原生應(yīng)用程序的安全性帶來了挑戰(zhàn)。因此,需要將安全實(shí)踐引入DevOps。
圖1 云原生安全的四個(gè)C
1.云原生安全的四個(gè)C
云原生安全的四個(gè)C分別是云計(jì)算(Cloud)、集群(Clusters)、容器(Container)和代碼(Code)。如圖1所示,每一層都受益于外部安全層,代碼層是構(gòu)建在云計(jì)算、集群和容器層之上的。以下簡要介紹每一層保護(hù)架構(gòu)的作用:
- 云計(jì)算——它是所有安全層的基礎(chǔ),每家云計(jì)算提供商(如AWS、Microsoft Azure、谷歌云、IBM Cloud)都為正在運(yùn)行的工作負(fù)載提供云計(jì)算基礎(chǔ)設(shè)施的安全性。
- 集群——這一層的主要安全問題是RBAC授權(quán)、機(jī)密管理、pod安全策略和網(wǎng)絡(luò)策略,Kubernetes是標(biāo)準(zhǔn)操作工具。
- 容器——這一層推薦的安全態(tài)勢是容器漏洞掃描、鏡像簽名和禁止特權(quán)用戶。
- 代碼——企業(yè)對(duì)這一層擁有最大的控制權(quán),并且可以實(shí)施安全建議,例如執(zhí)行靜態(tài)代碼分析、采用DevSecOps實(shí)踐,以及使安全成為持續(xù)集成(CI)/持續(xù)交付(CD)管道的一部分。
2.云原生安全挑戰(zhàn)
由于發(fā)生新冠疫情,很多企業(yè)采用遠(yuǎn)程工作模式,因此保護(hù)數(shù)據(jù)和系統(tǒng)的需求變得比以往任何時(shí)候都更加重要。“零信任”安全模型可以改善企業(yè)的總體安全狀況,特別是如果他們計(jì)劃讓其員工開展遠(yuǎn)程工作或采用混合工作空間環(huán)境。其基本原則是避免盲目信任安全參數(shù)(企業(yè)網(wǎng)絡(luò))內(nèi)的所有內(nèi)容,并始終對(duì)嘗試訪問網(wǎng)絡(luò)的每個(gè)用戶、應(yīng)用程序和設(shè)備進(jìn)行身份驗(yàn)證和授權(quán)——無論是企業(yè)內(nèi)部還是外部。
構(gòu)建零信任架構(gòu)的關(guān)鍵技術(shù)和原則是:
- 多因素身份驗(yàn)證。
- 身份和訪問管理。
- 設(shè)備清單的可見性。
- 防火墻管理。
- 數(shù)據(jù)分類和加密。
- 最低權(quán)限訪問。
- 持續(xù)網(wǎng)絡(luò)流量監(jiān)控。
3.云原生應(yīng)用安全
容器可以輕松打包和部署應(yīng)用程序的運(yùn)行時(shí)依賴項(xiàng),并幫助解決開發(fā)和生產(chǎn)環(huán)境之間的配置管理問題。然而,與傳統(tǒng)的威脅檢測和漏洞掃描安全機(jī)制相比,容器的運(yùn)行是暫時(shí)的,通常使用壽命較短,這使得容器的安全性具有挑戰(zhàn)性。
(1)容器安全
開箱即用的容器提供了一定程度的隔離和安全性,但同時(shí),它們也帶來了一系列安全問題,例如內(nèi)核漏洞、拒絕服務(wù)攻擊、中毒圖像、容器泄漏和機(jī)密泄露。減少容器攻擊面至關(guān)重要,因?yàn)橐粋€(gè)容器中的問題可能會(huì)影響同一主機(jī)上運(yùn)行的其他實(shí)例。應(yīng)用最小權(quán)限原則并限制用戶對(duì)容器的訪問是很好的做法。需要一個(gè)秘密管理解決方案來安全地存儲(chǔ)憑證,并允許容器在操作期間訪問敏感數(shù)據(jù)。
此外,容器鏡像是不可變的,因此容器鏡像中的任何漏洞都會(huì)在鏡像的生命周期內(nèi)持續(xù)存在。因此需要確保定期掃描映像以查找漏洞,作為持續(xù)集成(CI)/持續(xù)交付(CD)管道的一部分,需要使用最新補(bǔ)丁進(jìn)行更新,并從受信任的注冊表中提取。在容器化環(huán)境中運(yùn)行云原生應(yīng)用程序時(shí),企業(yè)需要完全了解集群配置,并進(jìn)行適當(dāng)?shù)谋O(jiān)控。
(2)安全責(zé)任共擔(dān)模型
在公共云中,安全是云計(jì)算服務(wù)提供商與其客戶之間的共同責(zé)任。其責(zé)任的區(qū)分可以被視為“云平臺(tái)”的安全與“云”中的安全。云計(jì)算提供商保護(hù)運(yùn)行服務(wù)的整體基礎(chǔ)設(shè)施,并處理物理和網(wǎng)絡(luò)層的操作問題。另一方面,客戶負(fù)責(zé)他們的業(yè)務(wù)邏輯的安全,包括應(yīng)用程序代碼和數(shù)據(jù)層保護(hù)。
圖2說明了微軟公司的責(zé)任共擔(dān)模型,包括客戶和微軟公司之間針對(duì)在內(nèi)部部署設(shè)施和云平臺(tái)中運(yùn)行的工作負(fù)載的責(zé)任范圍。
圖2微軟公司的責(zé)任共擔(dān)模型
4.自動(dòng)化云原生安全
DevOps方法側(cè)重于提高開發(fā)和運(yùn)營流程之間的協(xié)作和透明度。然而,在追求快速上市的過程中,安全實(shí)踐不能被忽視并進(jìn)一步推向下游。這就是DevSecOps發(fā)揮重要作用的地方,它在開發(fā)周期的早期結(jié)合了運(yùn)營和安全措施。
(1)左移安全策略
在開發(fā)過程中轉(zhuǎn)移安全性至關(guān)重要,因?yàn)槠髽I(yè)不希望安全性成為事后的想法。與其相反,企業(yè)應(yīng)該將安全放在首位來設(shè)計(jì)和構(gòu)建系統(tǒng)。在生產(chǎn)中識(shí)別和修復(fù)安全漏洞既昂貴又耗時(shí),因此將安全性左移的目標(biāo)是在開發(fā)過程中實(shí)施安全實(shí)踐并執(zhí)行安全測試——而不僅僅是在生產(chǎn)之前部署。企業(yè)的DevOps管道應(yīng)該允許以更高的質(zhì)量和速度部署軟件,同時(shí)遵守安全最佳實(shí)踐。
大多數(shù)漏洞是在應(yīng)用程序級(jí)別引入的,如果企業(yè)的應(yīng)用程序包含漏洞,網(wǎng)絡(luò)攻擊者可能會(huì)破壞其系統(tǒng)。靜態(tài)應(yīng)用程序安全測試(SAST)和SAST工具使企業(yè)能夠掃描整個(gè)代碼庫并執(zhí)行與安全相關(guān)的規(guī)則,以檢測SQL注入、跨站點(diǎn)腳本、拒絕服務(wù)和代碼注入問題等漏洞。此外,作為持續(xù)集成工作流的一部分,可以對(duì)每次代碼提交執(zhí)行靜態(tài)代碼分析,并實(shí)施自動(dòng)化漏洞檢測和合規(guī)性報(bào)告。
(2)將安全性集成到持續(xù)集成(CI)/持續(xù)交付(CD)管道中
如圖3所示,將安全控制集成到企業(yè)的自動(dòng)化管道中是成功交付高質(zhì)量軟件的關(guān)鍵。DevOps管道具有將更改部署到其環(huán)境中所需的權(quán)限,因此必須在其周圍設(shè)置嚴(yán)格的安全護(hù)欄。開發(fā)人員可以為他們的持續(xù)集成(CI)/持續(xù)交付(CD)管道利用多種開源和商業(yè)安全工具。其目標(biāo)是及早發(fā)現(xiàn)安全問題,并且更容易實(shí)施諸如遵循安全編碼實(shí)踐、同行評(píng)審過程和執(zhí)行靜態(tài)代碼分析等低摩擦的措施。
如果企業(yè)使用的是開源軟件或第三方數(shù)據(jù)庫,應(yīng)該擁有用于漏洞管理和威脅檢測的工具。在企業(yè)的管道中實(shí)施輕量級(jí)滲透測試有助于增強(qiáng)安全狀況——例如,像OWASP ZAP這樣的動(dòng)態(tài)應(yīng)用程序安全測試(DAST)工具在將代碼部署到生產(chǎn)之前充當(dāng)安全門。除了掃描企業(yè)的容器之外,還可以考慮在部署到云平臺(tái)之前掃描其基礎(chǔ)設(shè)施代碼。
圖3在DevOps管道中構(gòu)建安全性
結(jié)論
隨著在DevOps中構(gòu)建安全性的文化轉(zhuǎn)變,企業(yè)的開發(fā)團(tuán)隊(duì)有額外的責(zé)任來自動(dòng)化應(yīng)用程序安全測試,并將其集成到發(fā)布管道中。就安全原則和最佳實(shí)踐對(duì)開發(fā)團(tuán)隊(duì)進(jìn)行培訓(xùn)有助于彌合知識(shí)差距。此外,與IT安全團(tuán)隊(duì)密切合作的開發(fā)團(tuán)隊(duì)可以幫助緩解軟件開發(fā)生命周期(SDLC)早期的安全漏洞,并在應(yīng)用程序開發(fā)和安全場景中實(shí)現(xiàn)左移概念。
開放式Web應(yīng)用程序安全項(xiàng)目(OWASP)是一個(gè)促進(jìn)應(yīng)用程序安全機(jī)制的非營利性全球社區(qū)。因此建議在云原生領(lǐng)域工作的開發(fā)人員熟悉OWASP十大應(yīng)用程序安全漏洞、黑客如何利用它們以及消除這些風(fēng)險(xiǎn)的方法。大多數(shù)漏洞(如代碼注入、敏感數(shù)據(jù)暴露、身份驗(yàn)證中斷、安全錯(cuò)誤配置、跨站點(diǎn)腳本編寫和日志/監(jiān)控不足)都可以通過安全編碼實(shí)踐和嚴(yán)格的代碼審查清單來解決。
原文標(biāo)題:Securing Cloud-Native Applications,作者:Samir Behara
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】