確保Kubernetes安全的三個階段:構(gòu)建、部署和運行時!
譯文【51CTO.com快譯】
Kubernetes安全是許多組織面臨的問題。TechRepublic在2020年發(fā)表的一篇報告顯示,94%的受訪者表示,其組織在過去12個月遇到過涉及Kubernetes和容器環(huán)境的安全事件。近一半(44%)的組織通過延遲將應(yīng)用程序部署到生產(chǎn)環(huán)境來應(yīng)對這些事件。
這些發(fā)現(xiàn)表明,對于力求將容器和Kubernetes應(yīng)用程序部署到生產(chǎn)環(huán)境的組織來說,安全是優(yōu)先事項,而且需要繼續(xù)是這樣。為了盡可能順暢地部署,組織要了解整個應(yīng)用程序開發(fā)生命周期的安全和合規(guī)要求。這意味著將安全集成到容器生命周期的三個階段:構(gòu)建、部署和運行時。
第一個階段:構(gòu)建
應(yīng)用程序開發(fā)生命周期的構(gòu)建階段中存在的漏洞在運行時可能變得更難修復(fù),且成本更高。這就是為什么組織在構(gòu)建階段關(guān)注容器安全很重要。它們可以通過遵循這幾個安全最佳實踐來做到這一點:
- 構(gòu)建安全映像:這里要記住的重要一點是,使容器盡可能簡單。組織應(yīng)避免使用擁有OS軟件包管理器或外殼的容器映像。這種類型的資源可能含有漏洞,因而使攻擊者有可能趁機(jī)而入。它們還應(yīng)努力從容器中刪除調(diào)試工具及其他不必要的組件,這些程序中的缺陷也可能向惡意攻擊者敞開大門。
- 盡量縮小攻擊面:組織需要認(rèn)真查看容器的必要元素。為此,它們應(yīng)確保運行最新版本的容器。這么做將有助于盡量減少漏洞的出現(xiàn)。此外,它們應(yīng)利用映像掃描工具掃描容器以查找潛在的安全漏洞。該工具應(yīng)能夠掃描OS軟件包和第三方運行時庫中的漏洞,以查找容器化應(yīng)用程序所使用的語言類型。如果該工具檢測到漏洞,組織應(yīng)利用漏洞管理工具優(yōu)先考慮適當(dāng)?shù)男扪a(bǔ)程序。如果組織認(rèn)為某個漏洞沒必要(立即)修復(fù),還可以選擇使用白名單規(guī)則,確保該漏洞沒有影響安全團(tuán)隊。
第二個階段:部署
組織需要在部署Kubernetes基礎(chǔ)架構(gòu)之前做好保護(hù)。這項工作應(yīng)先確保組織對其網(wǎng)絡(luò)有足夠的可見性。Help Net Security(https://www.helpnetsecurity.com/2019/06/17/runtime-container-security/)闡明了可見性對于確保容器安全的重要性:
通過深入的可見性和保護(hù)來保護(hù)網(wǎng)絡(luò)至關(guān)重要,因為網(wǎng)絡(luò)是防止惡意攻擊者接觸工作負(fù)載的第一道防線。同時,網(wǎng)絡(luò)是保護(hù)數(shù)據(jù)以免泄露的最后一道防線。在這第一道防線和最后一道防線之間,網(wǎng)絡(luò)可見性和適當(dāng)?shù)木W(wǎng)絡(luò)控制可以防止內(nèi)部東西向流量內(nèi)的攻擊不斷升級。
在可見性方面,除了具體了解能訪問哪些資源外,組織還要具體了解每種資源部署在哪里、如何部署。然后,它們可以利用網(wǎng)絡(luò)策略來調(diào)整在Pod和集群之間傳輸?shù)牧髁俊U鏚ubernetes在官網(wǎng)上指出,默認(rèn)情況下pod不是隔離的,因此可以接受來自任何來源的流量。幸好,組織可以通過創(chuàng)建網(wǎng)絡(luò)策略來限制這些通信流。
組織也不應(yīng)忘記在部署階段掃描映像。一旦獲得了這些掃描的結(jié)果,就要對其采取行動。比如說,如果容器映像缺少掃描結(jié)果或存在已知漏洞,組織可以使用那些掃描的結(jié)果以及準(zhǔn)入控制器來拒絕部署應(yīng)用程序。
第三個階段:運行時
最后但并非最不重要的一點是,組織需要在運行時階段致力于容器安全。在此階段,可見性和映像掃描仍然很重要。但是組織需要記住一些重要的差異。StackRox介紹了映像掃描在構(gòu)建階段和運行時階段之間有何區(qū)別(https://www.stackrox.com/post/2020/04/container-image-security-beyond-vulnerability-scanning/):
在生產(chǎn)系統(tǒng)上運行時,可以利用生成和編譯應(yīng)用程序所使用的構(gòu)建工具。請記住,應(yīng)將容器視為暫時的臨時實體。切勿計劃“打補(bǔ)丁”或更改運行中的容器。構(gòu)建新映像,并替換過時的容器部署。使用多階段Dockerfile,使軟件編譯遠(yuǎn)離運行時映像。
同樣,組織可以確保其運行時容器安全的唯一方法是確保網(wǎng)絡(luò)上的異常行為無處隱藏。 Help Net Security解釋,因此,組織需要能夠在第7層檢查網(wǎng)絡(luò)數(shù)據(jù)包。這么一來,組織還將能夠利用深度數(shù)據(jù)包檢查(DPI)及其他類型的技術(shù),有助于發(fā)現(xiàn)更狡猾的攻擊。
原文標(biāo)題:Build, Deploy, Runtime: The 3 Stages of Kubernetes Security,作者:David Bisson
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】