基于DevOps的容器安全優(yōu)秀實踐
雖然云和容器的崛起,容器成了日常。容器的安全要求也隨之而來,如何確定一個最適合業(yè)務的容器安全保障是大家最關注的問題。本文我們就來通過DevOps生命周期來全面考慮容器安全和各階段的安全策略,更詳細的工具介紹可以參考蟲蟲之前的文章從DevOps到DevSecOps,貫穿始終的安全棧。
DevOps生命周期
每個安全計劃都會受到可實施安全控制措施的限制,DevOps生命周期是以下各項的無限迭代:計劃、編碼、構(gòu)建、測試、發(fā)布、部署、運維、監(jiān)控
在應用程序中容器以Dockerfiles的形式來表達,但實際上Dockerfiles并不是容器的一部分(計劃和編碼)。從安全性的角度來看,容器安全主要涉及以下三部分,六個階段:
- 構(gòu)建時:構(gòu)建,測試和發(fā)布
- 容器基礎架構(gòu):部署和運維
- 運行時:監(jiān)控
每個安全策略只有在可以實施的情況下才有效。每個部分中的各個步驟可以實施安全控制措施:
- 構(gòu)建時:CI/CD基礎結(jié)構(gòu),容器注冊表
- 容器基礎設施:容器編排器
- 運行時:生產(chǎn)環(huán)境
構(gòu)建時安全
在容器構(gòu)建時,輸入了一堆源文件和一個Dockerfile,輸出為Docker鏡像。該階段有很多安全和云廠商提供了很多安全方案和鏡像安全掃描工具。容器安全掃描非常重要,是的,光鏡像掃描還遠遠不夠。本部分的安全目標是最小化供應鏈攻擊的風險。
1. 基礎鏡像的安全
首先,檢查鏡像的基礎,重點是檢查要引入的依賴項:
- 允許開發(fā)人員使用的基本鏡像。
- 固定軟件依賴性,依賴所要拉取的源。
- 是否需要通過標簽來簡化治理和合規(guī)性?
- 整理Dockerfile。
所有這些檢查都是靜態(tài)的,可以很容易在構(gòu)建管道編寫檢查語實現(xiàn)。
2. 容器鏡像掃描
然后,下一步就是掃描容器鏡像。
不要在構(gòu)建管道中掃描鏡像,而是在容器注冊表中設置連續(xù)掃描。
漏洞可能早就存在,如果在構(gòu)建時才檢查有點遲了。其次,構(gòu)建是疊加的:每個構(gòu)建都會生成一個新鏡像。因此,通過掃描信任注冊表,發(fā)布的每個標簽都可以信任,而無需重復在每次構(gòu)建時候都檢查。最后由于鏡像掃描需要時間,如果在構(gòu)建時候掃描會影響構(gòu)建的性能。
也可以考慮定義補丁程序管理和保質(zhì)期流程:
- 補丁程序管理:掃描結(jié)果提供補丁程序,從而產(chǎn)生新版本的鏡像
- 保質(zhì)期:對于超過期限未修補/舊/不安全的鏡像從注冊表中予以刪除。
- 本階段可參考的工具:開源工具有Anchore,Clair,Dagda,商業(yè)化軟件有Atomic和Docker Cloud。
Docker基礎設施安全
容器基礎結(jié)構(gòu)由所有移動部件組成,這些部件負責從注冊表中提取鏡像并將其作為容器在生產(chǎn)環(huán)境中運行。
主要是容器編排器有 kubernetes,Swarm。
本部分的目標有兩個:避免由于平臺配置錯誤帶來安全隱患;最小化來自受感染容器的攻擊擴展。
1. 配置錯誤
容器編排器非常復雜,特別是K8S。截至目前,它們還沒有實現(xiàn)DevOps的承諾。每個復雜的平臺都容易配置錯誤,這是我們要關注的部分。
必須對基礎架構(gòu)進行威脅建模,以確保其不會被濫用。這個特定的線程模型應該專注于每個角色,但容器除外。取決于運行情況。對于K8S而言,這進行威脅建模的一個很好的起點。
也可以使用托管平臺,可以與(受信任的)供應商一起使用共享責任模型,則可以降低復雜性。
2. 橫向擴展
接下來,我們要將討論容器被破壞時會發(fā)生什么。我們希望最大程度地減少攻擊者橫向擴展的能力,重點是兩個方面:網(wǎng)絡和身份和訪問管理。
容器網(wǎng)絡圖省事而放通設置??梢韵葘⑺袃?nèi)容嚴格劃分為子網(wǎng),然后逐步發(fā)展為完整的服務網(wǎng)絡。
在IAM層上,朝著每個容器具有單一標識的方向進行操作,以微調(diào)授權授權。這在多租戶平臺中尤其重要:沒有精細的身份,就不可能獲得最低特權。
容器基礎不變的,可以通過周期性關閉舊容器,新起容器的方法,避免長期運行的容器來減少攻擊者橫向擴展并獲得持久性注入點。
本部分可以使用的開源工具有Habitat.sh,firejail等。
3. 運行時安全
最后一方面是正在運行的工作負載的安全性。本階段目標是盡量減少從受損的容器的攻擊。
4. 檢測和事件響應
控制攻擊影響的最佳方法是最大程度地減少從漏洞發(fā)生到安全團隊收到警報的時間。
檢測到持續(xù)的違規(guī)行為是有大量供應商大量解決方案的領域。有許多方法,其中大多數(shù)將需要邊緣節(jié)點和守護程序集來主動監(jiān)視pod的流量和系統(tǒng)調(diào)用。
建議是快速開始并反復進行迭代完善:使用現(xiàn)有的SIEM,提取平臺,應用程序和審核日志。
肯定會有事件發(fā)生,然后對其進行響應處理,積累經(jīng)驗:
時??紤]這樣的問題:"下次如何更快地檢測到這種況?"這能使我們識別盲點,然后將其用于了解缺失的環(huán)節(jié)以及建立更完善的策略。
本部分可以使用的開源工具有Sysdig falco, OpenSCAP,Grafeas等。
結(jié)論
容器安全性是一個廣泛的問題,而不僅僅是掃描鏡像。通過建立并用于推理容器風險和解決方案的模型才能全面完整的考慮到所有方面,當然和所有模型一樣,需要不斷實踐迭代完善,才能建立完善的容器安全模型。