
Kubernetes 安全稽核:核心概念與修復
透過我們的詳細指南,全面了解 Kubernetes 安全稽核。在這篇部落格中,了解如何執行 Kubernetes 安全稽核、稽核後行動,以及叢集安全的最佳實務。

Kubernetes(亦稱 K8s)是一個開源系統,提供高度的靈活性與自動化,以及負載平衡。它是一個用於部署、擴展及管理容器化應用程式的平台。它是發展最快的開源系統之一,為使用者提供多項優勢。然而,作為一個為使用者帶來眾多好處的系統,Kubernetes 也存在若干風險與弱點。Kubernetes 安全稽核可用於揭露您在組態、網路政策與設定中可能存在的弱點。本文的目的是協助您了解完整的 K8 安全稽核流程,以及應如何執行。
什麼是 Kubernetes 安全稽核?
Kubernetes 安全 稽核是檢查 K8s 叢集設定安全性的流程。它有助於概述叢集設定中可能存在的所有威脅與弱點。它可識別所有現有的錯誤設定,並評估是否符合產業標準與組織法規。
換句話說,稽核幾乎聚焦於 K8s 系統設計方式的每個面向。叢集設定包括對控制平面元件、節點與網路的設定評估。因此,它涵蓋 API server、kubelet 與 kube-proxy 的設定,以及所有已套用的網路與 DNS 設定。至於存取控制,稽核則涉及端點驗證、授權政策與 RBAC。
網路政策稽核包括評估網路政策設定、用於 ingress 與 egress 的傳入與傳出規則,以及 pod-to-pod 通訊規則的設定。工作負載安全則透過評估 pod 的安全內容、容器的執行階段選項,以及映像檔弱點來衡量。
為什麼我們需要 Kubernetes 安全稽核?
Kubernetes 安全稽核對任何組織而言都是必要的。它可在一些關鍵面向上協助企業。
風險識別與緩解
Kubernetes 環境極其複雜。它們由大量元件與設定組成。因此,這些設定可能導致大量可被用來攻擊系統的弱點。K8s 安全稽核有助於識別並評估 Kubernetes 環境中的潛在風險。
遵循法規要求
大多數產業對資料保護與安全都有嚴格要求。例如,醫療保健組織必須遵循 HIPAA,而支付卡資料相關組織則必須遵循 PCI DSS。Kubernetes 安全稽核有助於確保符合這些合規標準。
持續改善與事件預防
當您能夠防止弱點暴露時,事件與攻擊發生的機率就會降低。無論應用程式變得多麼複雜與精密,安全稽核都能透過識別安全實務中有缺陷的實作/錯誤設定來預防事件。
第三方驗證與建立信任
某些產業要求組織確認其安全措施。例如,雲端原生的廣泛採用,促使您需要確認客戶應用程式在 Kubernetes 環境中的安全性。
K8s 的核心安全概念與架構
讓我們討論 Kubernetes 的關鍵元件與概念,以便執行有效的安全稽核。
控制平面與節點元件
Kubernetes 架構分為兩個主要部分,即控制平面與工作節點。兩者都具有特定元件,而每個元件都在叢集的運作與安全中扮演關鍵角色。
控制平面元件包括 kube-Episerver,它本質上是 Kubernetes 控制平面的前端,負責管理與驗證所有 API 請求。另一個是 etched,這是一個用於所有叢集資料儲存的分散式鍵值儲存庫。
Kube scheduler 負責將新建立的 pod 排程到節點。Kube-controller-manager 執行控制器程序,以確保系統的實際狀態符合預期狀態。最後,cloud controller manager 負責與底層雲端供應商整合。
在工作節點上,我們有 kubelet,這是一個在節點上執行的代理程式,可確保 pod 中的容器正常執行。Kube-proxy 負責維護節點上的網路規則,並允許 pod-to-pod 通訊。最後,container runtime 是用於執行 Docker 等容器的軟體。
關鍵 Kubernetes 物件(pods、deployments、services)
不同物件用於表示叢集狀態,以及與其相關的安全影響。Pod 作為最小的可部署單位,需要適當的安全內容與隔離。管理 pod 的部署與擴展,需要對其變體進行受控存取,並採用安全的更新策略。允許存取 pod 上執行之應用程式的服務,則需要具備妥善設定的安全政策與受控的外部存取。
Namespaces 提供資源使用的封裝,這對多租戶安全至關重要。Secrets 可用於在叢集中儲存敏感資訊。為了維持安全,其使用方式必須受到謹慎管理、加密,並定期輪替(可透過使用 KMS 達成)。
驗證、授權與 RBAC
Kubernetes 提供對叢集存取控制的支援。驗證用於確認嘗試與叢集互動之使用者或程序的身分。這可透過用戶端憑證、bearer token 與外部驗證提供者來完成。授權則用於判定已驗證使用者可在叢集中執行哪些動作。
RBAC 是最常見的授權技術類型。它可定義使用者或服務帳戶可對叢集資源執行哪些操作。驗證與授權都必須正確設定,這點非常重要,因為如果物件設定錯誤,所有用於保護叢集的演算法都會失去作用。
此外,定期稽核 RBAC 政策有助於確保沒有任何使用者或服務帳戶擁有過高權限,從而降低未經授權存取或軟體程序之間權限提升的風險。
網路政策與 Pod 安全
網路政策與 Pod 安全政策是 Kubernetes 中重要的安全標準類型。網路政策定義在 Kubernetes 叢集中,哪些流向不同群組 pod 的流量構成允許與不允許的內容。它們本質上與防火牆的運作方式類似,並控制在叢集中執行的 ingress 與 egress 流量流向。
Pod 安全是一項可確保 pod 平穩且安全執行的功能。它們包含多個 API,可用於調整每個 pod 被允許執行的內容。目前,最佳做法是使用 Pod Security Admission (PSA)。
準備 Kubernetes 安全稽核
規劃與執行 Kubernetes 安全稽核是一項關鍵流程,應以系統化方式仔細準備與執行。結構完善的稽核有助於識別潛在弱點、評估風險,並確保符合安全最佳實務。本節概述有效規劃與執行全面 Kubernetes 安全稽核的關鍵步驟。
1. 定義稽核範圍與目標
開始進行安全稽核時,首先需要定義範圍與目標。目標可能包括識別錯誤設定、檢查是否符合相關標準與法規,或評估已實施措施的有效性。在此階段,納入關鍵利害關係人非常重要,例如 DevOps 與安全團隊,以及管理階層,以確保目標與整體組織目標及風險等級一致。明確定義的範圍與目標為整個稽核流程奠定基礎。
2. 蒐集必要文件與存取權限
在確定安全稽核的範圍與目標後,下一步是蒐集所有必要文件,並確保對 Kubernetes 環境具有相關存取權限。必須提供的文件包括叢集設定、網路圖、安全政策,以及任何合規要求。
必須向稽核人員/測試人員提供 K8s 環境的存取權限,以便他們測試叢集設定與 RBAC 政策,並檢視記錄中是否有任何敏感資訊。存取權限應為唯讀,以免影響正式環境。文件還必須提供 K8s 版本及其自訂設定的資訊。文件也應提供底層基礎架構的相關資訊。
3. 選擇適當的工具與方法
選擇相關工具與方法對於執行 Kubernetes 安全稽核非常重要。有許多開源與商業工具可協助稽核流程,每種工具都有其特定優勢與關注重點。
工具與方法的選擇應根據稽核範圍與目標,以及組織特定的 Kubernetes 設定而定。此外,通常結合使用多種工具與方法,有助於全面檢視叢集的安全態勢。
如何執行 Kubernetes 安全稽核?
應遵循以下步驟,以輕鬆完成 K8 安全稽核。
- 初始評估:先全面檢視文件、現行安全實務,以及叢集在安全性方面已經發現的任何問題。
- 叢集組態審查:此步驟會審查控制平面元件的設定、節點組態的安全設定或設定檔、RBAC 原則、網路原則、Pod 安全性原則,或正在使用的准入控制器。
- 自動化掃描:此步驟中執行的工具包括用於檢查是否符合 CIS 基準的 kube-bench 掃描、針對容器映像與各種 Kubernetes 元件的弱點掃描器,以及網路原則欄位分析器。
- 手動安全檢查:對關鍵組態與自訂指令碼執行有針對性的手動檢查。
- 存取控制與網路安全評估:檢視叢集中正在使用的使用者與服務帳戶權限的稽核日誌,以及這些服務帳戶所使用的驗證方法。在網路層面,檢查現行網路原則是否有效阻擋不應允許的流量。
- 工作負載與資料安全評估:檢查用於執行容器的映像、Pod 安全性內容、已設定的資源限制,以及敏感資訊的處理方式。確保資料在靜態與傳輸過程中皆已加密。
- 記錄、監控與合規性驗證:檢視標準的監控、記錄與警示設定。檢查警示、Slack 頻道,以及集中於單一位置的彙總日誌。在相關情況下,審查叢集是否符合產業標準、最佳實務或特定法規。
稽核後行動與修補
完成 K8 安全稽核後,我們需要採取一些後續步驟,包括根據調查結果採取行動並實施必要的改進。在本節中,我們將涵蓋所有這些步驟:
如何記錄調查結果並排定風險優先順序
在完成 Kubernetes 安全稽核後,必須妥善記錄所有調查結果,並對相關風險排定優先順序,以便執行必要的改進。詳細且清楚的報告必須涵蓋所有已識別的弱點、錯誤組態與潛在威脅,並應包含所有技術細節及其影響。
為了評估風險,需要使用整合式風險評分系統進行評分,並考量發生可能性、潛在影響及可能的利用方式等因素。為了平衡各項風險的嚴重性與所需投入的工作、資源,應將調查結果分組,並建立優先順序矩陣。透過此步驟,可將調查結果轉換為可執行的改進清單。
已識別弱點的修補步驟
在記錄並排定風險優先順序後,制定詳細的修補計畫,概述處理每項弱點的具體步驟。先從高影響、低投入的修正開始,以展現立即進展,接著有系統地處理弱點,從最高優先順序的問題著手。這可能包括修補與更新元件、調整 RBAC 原則、實作網路原則、強化機密管理,以及加強驗證機制。
在套用至正式環境之前,先在預備環境中徹底測試每項修補措施,並進行有針對性的掃描,以驗證弱點已成功獲得處理。
持續監控與改進的重要性
應始終牢記,Kubernetes 安全是一個持續進行的過程。應實作強大的監控解決方案,以即時偵測安全異常,並能對常見使用案例所涵蓋的偏差發出警示。應定期安排安全評估流程,以及對應用程式與 CI/CD 管線進行安全掃描。務必持續關注目前的 Kubernetes 弱點與新出現的威脅,並不時更新您的事件回應計畫。
請務必在團隊內建立回饋循環,以蒐集並運用有關 Kubernetes 安全風險的知識,並充分重視學習與訓練。
Kubernetes 安全稽核最佳實務
以下是一些為了有效稽核而應遵循的最佳實務:
1. 使用 Namespace 隔離資源並強制執行邊界
Namespace 可在 Kubernetes 叢集中提供資源的邏輯分隔。妥善設定的 Namespace 可隔離工作負載、限制攻擊者可能造成的潛在入侵影響範圍,並簡化存取控制。定期稽核 Namespace 組態與重要資源的配置,以確保適當的隔離。
2. 對 etcd 靜態與傳輸中的資料進行加密
etcd 是一致且高可用的鍵值儲存庫,作為 Kubernetes 所有叢集資料的後端儲存。由於 etcd 儲存關鍵叢集資料,包括機密與存取權杖,因此它對攻擊者而言是極具吸引力的目標。對 etcd 實作靜態加密,以保護資料免於未經授權的存取。確保與 etcd 的所有通訊皆使用 TLS 進行傳輸加密,以防止竊聽或中間人攻擊。
3. 為 Pod 對 Pod 通訊實作網路原則
使用網路原則作為叢集中 Pod 對 Pod 通訊的防火牆。定期稽核並更新網路原則,以確保僅依最小權限原則允許 Pod 之間必要的流量。這可限制攻擊後可能造成的入侵與橫向移動。
4. 使用准入控制器強制執行安全原則
准入控制器會在物件被持久化之前攔截送往 Kubernetes API 伺服器的請求。依循最佳實務實作自訂准入控制器,並定期稽核其組態以強制執行安全原則,例如拒絕建立特權容器,或僅接受來自核准登錄庫的映像。
5. 使用 Falco 或 Seccomp 等工具實作執行階段安全
稽核容器執行階段安全工具的組態與資源配置。這些工具會在容器執行期間使用系統呼叫或分析容器行為來偵測潛在的安全入侵。

See SentinelOne in Action
Discover how AI-powered cloud security can protect your organization in a one-on-one demo with a SentinelOne product expert.
結論
在這篇部落格中,我們了解 Kubernetes 安全稽核在維護安全容器化環境過程中的重要性。稽核實務用於判定並解決 Kubernetes 架構中現有的弱點,這些弱點可能出現在控制平面、RBAC、工作負載與網路原則中。部署期間應遵循最佳實務以避免任何重大風險,而且這應是一個持續進行的過程,而非一次性的工作。
隨著 Kubernetes 在現代基礎架構中的使用日益增加,具備充分專業知識且及時的稽核實務變得更加關鍵。根據本指南,組織將能夠大幅降低風險,並保護容器中的應用程式與資料。
常見問題
Kubernetes 中的稽核是指擷取並分析送往叢集的 API 請求之過程。稽核可全面檢視叢集上的所有活動,包括誰提出了哪些請求、何時提出,以及提出了哪些請求。這些日誌通常用於安全監控、驗證合規性及偵錯用途。
若要監控您的 K8s 叢集安全性,您應啟用並設定稽核記錄、建立即時監控、強制執行網路原則監控、定期執行弱點掃描,並為可疑活動設定警示。若要更全面地監控叢集安全性,請考慮使用專門的 Kubernetes 安全平台。
若要啟用 Kubernetes 稽核,您需要使用稽核原則檔案設定 API 伺服器,並使用 –audit-log-path 參數指定稽核日誌路徑。您也可以透過定義 –audit-log-manage、–audit-log-max size 和 –audit-log-maxbackup 參數來設定日誌輪替。或者,如果您使用外部系統儲存稽核資料,也可以設定 webhook 後端以進行外部記錄。在完成所有設定後,重新載入 API 伺服器以套用組態並開始擷取稽核資料。
若要檢查 Kubernetes 稽核日誌,您可以查看 audit.log 檔案,該檔案通常位於 /var/log/kubernetes/audit.log,並使用 cat、grep 或 tail 等工具。若要使用更進階的記錄系統,您可以使用與 Kubernetes 整合的 ELK stack。



