什麼是 Kubernetes 安全性?
Kubernetes 安全性奠基於雲原生安全的四大要素 - 雲端、叢集、容器和程式碼:
- 雲端 (或企業資料中心 / 主機代管設施):此一底層實體基礎架構,正是 Kubernetes 安全性的基礎。無論叢集是以專屬的資料中心或雲端供應商來進行建置,都需遵循基本的供應商 (或實體安全性) 最佳實踐方式。
- 叢集:保護 Kubernetes 叢集會涉及兩個部分:可供設定的元件 (例如 Kubernetes API),以及叢集中所有應用程式的安全性。由於多數雲原生應用程式皆採用微服務和 API 來進行設計,因此,只有將應用程式視為整體應用程式服務鏈中最薄弱的環節,才能確保其安全無虞。
- 容器:容器設計的最佳實踐方式,會包含盡可能從最小限度的程式碼基礎著手 (排除不必要的程式庫或函式)、避免為容器中的使用者授予不必要的權限,以及務必要在建置期間進行容器弱點掃描。
- 程式碼:對任何 Kubernetes 環境而言,程式碼皆屬主要攻擊範圍。只要依循簡單的原則 (例如使用 TLS 交握加密 TCP)、避免公開未使用的連接埠,以及定期進行測試,即可防範生產環境中的安全性問題。

Kubernetes 5 分鐘簡介

2021 年 Kubernetes 現況
為什麼容器生命週期中的 Kubernetes 安全性如此重要?
容器生命週期中的 Kubernetes 安全性如此重要的原因,在於 Kubernetes 叢集具有分散式和動態等特性。正因如此,應用程式生命週期中的三大階段 (建置、部署和執行階段),都需採取不同的安全措施。Kubernetes 可提供多項與生俱來的安全性優勢。舉例來說,應用程式容器通常不會進行修補或更新,而是以新版本取代整個容器映像。此舉不僅可落實嚴格的版本控制,如果新程式碼含有弱點,也能快速進行復原。
不過,由於個別機組僅為暫時性產物,不斷改變的執行階段環境可能會對 IT 安全性專業人員帶來諸多挑戰;畢竟,連至其他應用程式和服務的應用程式以及 API,將持續發生變動。
應用程式生命週期中最常發生哪些 Kubernetes 安全性弱點?又該如何加以防範?
Kubernetes 安全性工具應該:
- 將確保應用程式未遭入侵的時間予以縮短。
- 針對程式碼的信任層級提供數位簽章。
- 將所提供的能見度和透明度範圍從程式碼擴及設定問題。
- 避免將資訊流入 (傳入連線) 或流出 (傳出連線) 至不安全的服務。
建置期間最常發生哪些 Kubernetes 安全性弱點?
- 程式碼來自不受信任的倉管中心:不受信任的程式碼可能會包含惡意軟體或後門,繼而在無意間為不法人士授予權限。
- 基礎映像過於擁腫:容器化應用程式應遵循「少即是多」的原則,因此,開發人員必須減少不必要的套件、程式庫和殼層,以防遭到入侵。
部署期間最常發生哪些 Kubernetes 安全性弱點?
- 授予不必要的權限:請盡可能授予最低限度的權限,且僅裝載工作所必備的機密資訊,藉此縮小攻擊範圍。
- 未能隔離叢集中的應用程式:請務必使用命名空間,將資源和團隊相互區隔開來。
- 叢集中發生橫向移動:請使用原則來劃分網路,以防攻擊在叢集中橫向移動。
- 未經授權的存取:請確保設定角色型存取控制 (RBAC) 經過適當設定,以限制存取。
執行階段期間最常發生哪些 Kubernetes 安全性弱點?
- 基礎架構攻擊:在執行階段期間,包含 API 伺服器、etcd 和控制器在內的 Kubernetes 基礎架構元件,都會發生各自的攻擊範圍。
- 複雜度:Kubernetes 叢集的持續運作狀況,會涵蓋許多不斷變化的作業。遭到入侵的容器必須快速遭到隔離、停用,並由正常的容器取而代之;在此同時,也需鎖定攻擊來源並加以修復。
什麼是高階 Kubernetes 安全性檢查清單?
若要採取最佳實踐方式,建議您從最基本的 Distroless 映像著手,且僅新增絕對必要的項目。畢竟,規模越小,安全性就越高。
- 使用最基本的主機作業系統、結束唯讀裝載,並使用 SELinux 選項來進行更多控制。
- 徹底掃描映像中的弱點,包括作業系統映像,以及任何類型的外部映像。受信任的外部來源並不存在。
- 透過符合邏輯的方式,使用命名空間和角色型存取控制將叢集和使用者劃分開來。凡是不需要的項目,都不應加以顯示。
- Kubernetes 網路會預設允許任何通訊,因此,在生產環境中執行前,請務必實作網路分段。謹慎定義流入和流出原則,以確保連線會透過適當方式路由。
- 提供最小限度的權限,且絕對不要以根目錄的方式執行應用程式流程。使用唯讀的根目錄檔案系統,以抵禦任何透過安裝軟體或修改檔案系統所發動的攻擊。
- 將安全性 (例如映像掃描) 整合至持續整合 / 持續交付管道中,最好一併執行 CIS 基準安全性測試。
- 保護叢集本身。請設定角色型存取控制,以限制 API 伺服器的存取權限,並確保所有 etcd 通訊都會使用 TLS 加密,繼而安全無虞。同樣地,請設定 kubelets 的角色型存取控制,以鎖定 kubelets 權限。
- 善加利用 Kubernetes 的內建控制項,例如設定安全性關聯性,以便對機組存取權限做出限制。
- 主動式安全性應涵蓋流程活動監控、服務之間的通訊,以及外部至叢集的通訊。
相關解決方案與產品
企業立即可用的 Kubernetes 執行階段
簡化跨多雲環境的基礎架構作業。
Kubernetes 與 Docker
您應該選用哪些工具,才能在容器上獲致成功?
Kubernetes 上的 Docker 容器
掌握容器和 Kubernetes 定義後的下一步,就是瞭解如何讓兩者相輔相成。