瞭解 GKE 中的網路安全性

本文將說明 GKE 網路安全的核心概念,例如最低權限原則,並協助您選擇合適的工具來保護叢集。導入 GKE 網路安全性的主要目標是隔離工作負載,以及確保多用戶群環境安全無虞。為達成這些目標,您應採用最低權限和縱深防禦原則,並根據實用資料做出安全決策。

在 Google Kubernetes Engine (GKE) 中,對網路流量套用最小權限原則,表示只允許應用程式運作所需的通訊。根據預設,GKE 叢集內的網路是開放的,也就是說,每個 Pod 都能與其他 Pod 通訊。

GKE 現在支援階層式網路安全方法,可透過 ClusterNetworkPolicy 在所有命名空間中強制執行管理層級的政策。

本文件提供運算子、網路專家和安全專家所需瞭解的資訊,以及在 GKE 叢集中實作網路安全性的方法。如要進一步瞭解 Cloud de Confiance by S3NS中的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。

閱讀本文前,請先確認您熟悉下列事項:

  • GKE 網路概念:如需總覽,請參閱「關於 GKE 網路」。
  • Kubernetes Pod、服務和命名空間:這些基本 Kubernetes 資源是定義網路安全政策的中心。請參閱 Kubernetes 說明文件
  • 最小權限原則:這項安全原則是本文通篇適用的核心概念。

GKE 網路安全目標

GKE 網路安全政策可在叢集內提供精細的 Kubernetes 感知流量控制。這些政策是整體安全策略的重要元素。如要實作穩健的網路安全機制,請考慮下列基本原則:

  • 最小權限:只授予系統和服務執行功能所需的最低權限。這項原則可降低遭入侵的潛在影響。Kubernetes 網路政策可協助您從預設開放的網路,改為只允許必要連線的網路。
  • 縱深防禦:分層採用多種獨立的安全控管機制。一項控制措施失效不會導致整個系統遭到入侵。舉例來說,您可以使用網路政策隔離資料庫,即使資料庫本身需要驗證也沒問題。
  • 可執行的資料:根據資料做出安全決策。建立威脅模型和風險評估可協助您瞭解安全防護機制。網路政策記錄等功能可提供資料,協助您驗證政策及偵測潛在違規行為。

選擇網路安全政策

如要選擇合適的政策,請找出需要控管的流量類型和範圍。

流量類型

如要選擇合適的政策,請考量要管理的流量來源和目的地:

  • 叢集內 Pod 之間的通訊:如要控管微服務之間的通訊方式,請使用以 Pod 標籤和命名空間為運作對象的政策。

    • 應用程式開發人員可以使用標準 Kubernetes NetworkPolicy,在應用程式的命名空間中定義輸入和輸出規則。
    • 叢集管理員可以使用標準 Kubernetes ClusterNetworkPolicy,在所有命名空間中強制執行必要安全防護措施 (Admin 層級),或建立零信任預設值 (Baseline 層級)。這個資源支援執行 GKE 1.36.1-gke.1067000 以上版本的叢集。
    • 叢集管理員可以使用專屬的 CiliumClusterwideNetworkPolicy,專門控制叢集範圍的流量。對於新的部署作業,請使用 Kubernetes 原生 ClusterNetworkPolicy,而非這個專有政策。
  • 從 Pod 輸出至外部服務的流量:如要根據網域名稱控管從 Pod 輸出至外部服務的流量,請使用 FQDNNetworkPolicy。如果外部服務的 IP 位址不是靜態,這項政策就非常實用,因為系統會根據 DNS 自動解析及更新允許的 IP 位址。

  • 加密所有服務對服務流量:如要確保服務之間的所有通訊都經過加密和驗證,請使用服務網格。使用 Istio 或 Anthos Cloud Service Mesh 實作相互 TLS (mTLS),自動處理加密作業。

政策評估層級

GKE 會在三個階層評估網路安全政策。

  1. 管理員層級 (ClusterNetworkPolicy):優先順序最高。使用這個層級強制執行強制性安全授權。這個層級的「拒絕」規則會覆寫所有其他政策。接受規則會允許流量,並停止評估該封包。
  2. NetworkPolicy 層級:開發人員在這個層級定義應用程式專用的安全性。政策包括標準的 NetworkPolicyFQDNNetworkPolicyCiliumClusterwideNetworkPolicy 資源。
  3. 基準層級 (ClusterNetworkPolicy):優先順序最低。使用這個層級設定預設的「預設拒絕」防護措施,開發人員可以在 NetworkPolicy 層級選擇性地覆寫這些措施。

如果任何層級都沒有相符的政策,GKE 預設會採取隱含的「允許所有項目」行為。

政策選項摘要

下表根據您的安全性目標,摘要說明應使用的政策。

目標 建議政策
使用標籤和命名空間控管 Pod 之間的流量。 Kubernetes NetworkPolicy
依網域名稱控管外部服務的出站流量。 FQDNNetworkPolicy
加密及驗證所有服務對服務的流量。 Istio 或 Anthos Cloud Service Mesh (適用於 mTLS)
強制執行不可覆寫的必要安全防護機制。 ClusterNetworkPolicy (管理員層級)
建立開發人員可覆寫的預設「零信任」防護機制。 ClusterNetworkPolicy (基準層級)
設定專屬的叢集層級政策 (不建議用於新部署作業)。 CiliumClusterwideNetworkPolicy
稽核及記錄政策允許或拒絕的連線。 網路政策記錄 (針對任何政策啟用)

稽核及排解網路政策問題

導入網路政策後,請確認政策是否如預期運作,並診斷任何連線問題。您可以使用「網路政策記錄」做為主要工具。

啟用網路政策記錄功能後,GKE 會在 Cloud Logging 中,為網路政策允許或拒絕的每項連線產生記錄項目。這些記錄對於執行安全稽核和排解異常行為問題至關重要。查看這些記錄可瞭解規則的具體效果,確認合法流量是否如預期流動,以及未經授權的流量是否遭到封鎖。

與「僅允許」的標準政策不同,ClusterNetworkPolicy 資源支援明確的「拒絕」動作。如果管理政策導致流量下降,記錄會將拒絕歸因於負責封鎖的特定政策。

後續步驟