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