在過去十年中,容器化工作負(fù)載和 Kubernetes (K8s) 席卷了軟件世界。不幸的是,隨著 Kubernetes 成為企業(yè)架構(gòu)的主要組成部分,它成為威脅參與者的高價(jià)值目標(biāo)。一般來說,容器安全,尤其是Kubernetes 安全,是當(dāng)今企業(yè)安全態(tài)勢(shì)的一個(gè)基本方面。本文將探討 Kubernetes 運(yùn)行時(shí)安全性,這是 K8s 安全性最關(guān)鍵的方面之一,包括七個(gè)基本的 K8s 運(yùn)行時(shí)安全性最佳實(shí)踐。

什么是 Kubernetes 運(yùn)行時(shí)安全性?
Kubernetes 運(yùn)行時(shí)安全是一組工具、實(shí)踐和技術(shù),用于保護(hù)Kubernetes上運(yùn)行的容器工作負(fù)載。換句話說,Kubernetes 運(yùn)行時(shí)安全是工作負(fù)載保護(hù)和容器安全的子類別。Kubernetes 運(yùn)行時(shí)安全性處理從容器實(shí)例化到終止的安全性。這意味著運(yùn)行時(shí)安全性包括諸如容器是否以 root 身份運(yùn)行(它們不應(yīng)該!)之類的事情,但不包括諸如容器鏡像掃描之類的主題。
Kubernetes 運(yùn)行時(shí)安全挑戰(zhàn)和風(fēng)險(xiǎn)
由于如今在 K8s 上運(yùn)行的應(yīng)用程序類型如此之多,因此對(duì)于容器或 Kubernetes 而言,沒有一套放之四海而皆準(zhǔn)的運(yùn)行時(shí)安全風(fēng)險(xiǎn)。然而,大多數(shù)企業(yè)都面臨著一系列 Kubernetes 運(yùn)行時(shí)安全挑戰(zhàn)。
以下是與 Kubernetes 上的運(yùn)行時(shí)容器安全相關(guān)的四種常見安全風(fēng)險(xiǎn):
錯(cuò)誤配置和不安全配置:2022 年,超過 900,000 個(gè) Kubernetes 集群被發(fā)現(xiàn)在線暴露。這是一個(gè)很好的例子,說明 K8s 的不安全配置問題有多普遍。
權(quán)限升級(jí):威脅行為者獲得 K8s 環(huán)境的訪問權(quán)限并升級(jí)到更高權(quán)限的用戶(例如,root)是教科書式的 Kubernetes 運(yùn)行時(shí)安全威脅。
惡意軟件:容器鏡像中的惡意軟件是一個(gè)嚴(yán)重的問題。2022 年,Docker Hub 上有超過 1,600 個(gè)可用容器,其中包含加密礦工和 DNS 劫持者等惡意軟件。在環(huán)境中實(shí)例化這些容器之一會(huì)立即在網(wǎng)絡(luò)邊界后方引入威脅。
K8s 和容器中的漏洞:即使容器本身不是惡意的,它們也常常容易受到具有已知漏洞利用的 CVE 的攻擊。

原生 Kubernetes 運(yùn)行時(shí)安全工具
Kubernetes 提供了一組有限的本機(jī)工具和控件,可以限制運(yùn)行時(shí)風(fēng)險(xiǎn)。這些包括:
秘密:K8s 秘密是存儲(chǔ) API 密鑰或密碼等信息的數(shù)據(jù)對(duì)象。使用 Secrets 可幫助企業(yè)將敏感數(shù)據(jù)排除在圖像和 Pod 規(guī)范之外。
準(zhǔn)入控制器:使用 K8s 準(zhǔn)入控制器,企業(yè)可以限制對(duì) Kubernetes API 端點(diǎn)的修改(但不能讀取)。
網(wǎng)絡(luò)策略: Kubernetes 網(wǎng)絡(luò)策略類似于在網(wǎng)絡(luò)和傳輸層強(qiáng)制執(zhí)行策略的傳統(tǒng) ALLOW 和 BLOCK 防火墻規(guī)則。
審核日志:審核日志提供有關(guān)集群中發(fā)生的操作的詳細(xì)信息。例如,可以審計(jì) API 活動(dòng)。這些日志可以允許分析和檢測(cè)惡意行為。
RBAC:基于角色的訪問控制 (RBAC) 允許管理員根據(jù)實(shí)體的角色限制 K8s API 訪問。
由于原生 Kubernetes 運(yùn)行時(shí)安全工具不直接解決實(shí)時(shí)威脅檢測(cè)等用例,因此許多企業(yè)依賴更強(qiáng)大的工作負(fù)載保護(hù)工具。
7 個(gè) Kubernetes 運(yùn)行時(shí)安全最佳實(shí)踐
這六個(gè) Kubernetes 運(yùn)行時(shí)最佳實(shí)踐可以幫助企業(yè)限制許多 K8s 安全威脅。
不要以 root 身份運(yùn)行容器:以 root 身份運(yùn)行容器會(huì)為特權(quán)升級(jí)攻擊設(shè)置威脅參與者。簡單地不以 root 身份運(yùn)行可以減輕許多威脅。
審計(jì)和自動(dòng)化容器配置:公開暴露本應(yīng)保密的數(shù)據(jù)或使數(shù)據(jù)庫實(shí)例面向互聯(lián)網(wǎng)是可能導(dǎo)致漏洞的錯(cuò)誤配置示例。使用基礎(chǔ)架構(gòu)即代碼(IaC)審核配置和自動(dòng)化配置部署是限制風(fēng)險(xiǎn)的好方法。
鎖定網(wǎng)絡(luò)層:除了 K8s 網(wǎng)絡(luò)策略和 ??RBAC 之外,IPS/IDS和 NGFW 等網(wǎng)絡(luò)安全工具可以在威脅到達(dá)工作負(fù)載之前檢測(cè)并阻止它們。此外,企業(yè)應(yīng)盡可能避免暴露 Docker 守護(hù)程序套接字。

避免特權(quán)模式:就像不以 root 身份運(yùn)行容器一樣,企業(yè)應(yīng)避免使用 –privileged 標(biāo)志運(yùn)行容器。–privileged 標(biāo)志允許容器繞過各種確保系統(tǒng)安全的檢查。
盡可能使用只讀文件系統(tǒng):只讀文件系統(tǒng)可防止威脅參與者將惡意軟件直接寫入容器的文件系統(tǒng)。這會(huì)限制威脅行為者執(zhí)行攻擊的能力。
只運(yùn)行受信任的容器鏡像:一旦管理員實(shí)例化受損鏡像,公共存儲(chǔ)庫就會(huì)威脅到容器運(yùn)行時(shí)環(huán)境中的安全。只有使用可信的容器鏡像才能幫助企業(yè)限制來自公共鏡像存儲(chǔ)庫的鏡像風(fēng)險(xiǎn)。
保護(hù)內(nèi)核級(jí)別:SELinux、cgroups 和 AppArmor 等解決方案可以為 Kubernetes 運(yùn)行時(shí)安全性增加一層保護(hù)。例如,AppArmor 可以定義限制對(duì)各種內(nèi)核資源訪問的策略,以降低應(yīng)用程序利用它們不應(yīng)訪問的系統(tǒng)功能的風(fēng)險(xiǎn)。
左移補(bǔ)充了有效的 Kubernetes 運(yùn)行時(shí)安全性
當(dāng)然,安全的任何方面都不存在于真空中。運(yùn)行時(shí)安全性很重要,但安全性在容器實(shí)例化之前就開始了。前面提到的一些 Kubernetes 運(yùn)行時(shí)安全最佳實(shí)踐清楚地表明了這一點(diǎn),左移安全的概念使這一點(diǎn)更加明確。在開發(fā)生命周期的早期集成安全性并在整個(gè)過程中提供強(qiáng)大的運(yùn)行時(shí)保護(hù),提供了兩全其美的方法。






