在過去十年中,容器化工作負載和 Kubernetes (K8s) 席卷了軟件世界。不幸的是,隨著 Kubernetes 成為企業(yè)架構的主要組成部分,它成為威脅參與者的高價值目標。一般來說,容器安全,尤其是Kubernetes 安全,是當今企業(yè)安全態(tài)勢的一個基本方面。本文將探討 Kubernetes 運行時安全性,這是 K8s 安全性最關鍵的方面之一,包括七個基本的 K8s 運行時安全性最佳實踐。
什么是 Kubernetes 運行時安全性?
Kubernetes 運行時安全是一組工具、實踐和技術,用于保護Kubernetes上運行的容器工作負載。換句話說,Kubernetes 運行時安全是工作負載保護和容器安全的子類別。Kubernetes 運行時安全性處理從容器實例化到終止的安全性。這意味著運行時安全性包括諸如容器是否以 root 身份運行(它們不應該!)之類的事情,但不包括諸如容器鏡像掃描之類的主題。
Kubernetes 運行時安全挑戰(zhàn)和風險
由于如今在 K8s 上運行的應用程序類型如此之多,因此對于容器或 Kubernetes 而言,沒有一套放之四海而皆準的運行時安全風險。然而,大多數(shù)企業(yè)都面臨著一系列 Kubernetes 運行時安全挑戰(zhàn)。
以下是與 Kubernetes 上的運行時容器安全相關的四種常見安全風險:
錯誤配置和不安全配置:2022 年,超過 900,000 個 Kubernetes 集群被發(fā)現(xiàn)在線暴露。這是一個很好的例子,說明 K8s 的不安全配置問題有多普遍。
權限升級:威脅行為者獲得 K8s 環(huán)境的訪問權限并升級到更高權限的用戶(例如,root)是教科書式的 Kubernetes 運行時安全威脅。
惡意軟件:容器鏡像中的惡意軟件是一個嚴重的問題。2022 年,Docker Hub 上有超過 1,600 個可用容器,其中包含加密礦工和 DNS 劫持者等惡意軟件。在環(huán)境中實例化這些容器之一會立即在網(wǎng)絡邊界后方引入威脅。
K8s 和容器中的漏洞:即使容器本身不是惡意的,它們也常常容易受到具有已知漏洞利用的 CVE 的攻擊。
原生 Kubernetes 運行時安全工具
Kubernetes 提供了一組有限的本機工具和控件,可以限制運行時風險。這些包括:
秘密:K8s 秘密是存儲 API 密鑰或密碼等信息的數(shù)據(jù)對象。使用 Secrets 可幫助企業(yè)將敏感數(shù)據(jù)排除在圖像和 Pod 規(guī)范之外。
準入控制器:使用 K8s 準入控制器,企業(yè)可以限制對 Kubernetes API 端點的修改(但不能讀取)。
網(wǎng)絡策略: Kubernetes 網(wǎng)絡策略類似于在網(wǎng)絡和傳輸層強制執(zhí)行策略的傳統(tǒng) ALLOW 和 BLOCK 防火墻規(guī)則。
審核日志:審核日志提供有關集群中發(fā)生的操作的詳細信息。例如,可以審計 API 活動。這些日志可以允許分析和檢測惡意行為。
RBAC:基于角色的訪問控制 (RBAC) 允許管理員根據(jù)實體的角色限制 K8s API 訪問。
由于原生 Kubernetes 運行時安全工具不直接解決實時威脅檢測等用例,因此許多企業(yè)依賴更強大的工作負載保護工具。
7 個 Kubernetes 運行時安全最佳實踐
這六個 Kubernetes 運行時最佳實踐可以幫助企業(yè)限制許多 K8s 安全威脅。
不要以 root 身份運行容器:以 root 身份運行容器會為特權升級攻擊設置威脅參與者。簡單地不以 root 身份運行可以減輕許多威脅。
審計和自動化容器配置:公開暴露本應保密的數(shù)據(jù)或使數(shù)據(jù)庫實例面向互聯(lián)網(wǎng)是可能導致漏洞的錯誤配置示例。使用基礎架構即代碼(IaC)審核配置和自動化配置部署是限制風險的好方法。
鎖定網(wǎng)絡層:除了 K8s 網(wǎng)絡策略和 ??RBAC 之外,IPS/IDS和 NGFW 等網(wǎng)絡安全工具可以在威脅到達工作負載之前檢測并阻止它們。此外,企業(yè)應盡可能避免暴露 Docker 守護程序套接字。
避免特權模式:就像不以 root 身份運行容器一樣,企業(yè)應避免使用 –privileged 標志運行容器。–privileged 標志允許容器繞過各種確保系統(tǒng)安全的檢查。
盡可能使用只讀文件系統(tǒng):只讀文件系統(tǒng)可防止威脅參與者將惡意軟件直接寫入容器的文件系統(tǒng)。這會限制威脅行為者執(zhí)行攻擊的能力。
只運行受信任的容器鏡像:一旦管理員實例化受損鏡像,公共存儲庫就會威脅到容器運行時環(huán)境中的安全。只有使用可信的容器鏡像才能幫助企業(yè)限制來自公共鏡像存儲庫的鏡像風險。
保護內核級別:SELinux、cgroups 和 AppArmor 等解決方案可以為 Kubernetes 運行時安全性增加一層保護。例如,AppArmor 可以定義限制對各種內核資源訪問的策略,以降低應用程序利用它們不應訪問的系統(tǒng)功能的風險。
左移補充了有效的 Kubernetes 運行時安全性
當然,安全的任何方面都不存在于真空中。運行時安全性很重要,但安全性在容器實例化之前就開始了。前面提到的一些 Kubernetes 運行時安全最佳實踐清楚地表明了這一點,左移安全的概念使這一點更加明確。在開發(fā)生命周期的早期集成安全性并在整個過程中提供強大的運行時保護,提供了兩全其美的方法。