節點隔離總覽

本文說明 Google Distributed Cloud (GDC) 實體隔離 Kubernetes 叢集中的節點隔離功能優點和限制。透過專屬節點集區進行節點隔離,可精確控管叢集中特定 Pod 的執行位置,進而提升叢集安全性。

工作負載隔離可帶來以下優點:

  • 降低 Kubernetes 叢集發生權限提升攻擊的風險。
  • 進一步控管需要額外資源的 Pod。

在這些情況下,建議您將容器工作負載隔離到專屬節點集區,以便進一步控管及最佳化。請務必一併考量限制,以便根據節點隔離所需的額外維護成本,做出明智的決策。

本文適用於平台管理員群組中的 IT 管理員 (負責管理 Kubernetes 叢集的節點集區),以及應用程式運算子群組中的應用程式開發人員 (負責管理容器工作負載)。詳情請參閱 GDC air-gapped 說明文件適用對象

為什麼要隔離工作負載?

雖然不是必要做法,但將節點集區專用於特定容器工作負載,可避免潛在問題。不過,這種做法需要更多管理作業,而且通常並非必要。

Kubernetes 叢集會使用 GDC 管理的具備特殊權限的工作負載,啟用特定叢集功能,例如收集指標。這些工作負載會獲得特殊權限,可在叢集中正確執行。

部署至節點的工作負載可能會遭到惡意實體入侵。如果與 GDC 管理的具備權限工作負載一起執行這些工作負載,表示攻擊者從遭入侵的容器脫逃後,就能使用節點上具備權限工作負載的憑證,在叢集中提升權限。

當您要排程的 pod 比其他 pod 需要更多資源 (例如更多記憶體或更多本機磁碟空間) 時,專屬節點集區也十分實用。

您可以使用下列機制,在專屬節點集區中排定工作負載:

  • 節點 taint:通知 Kubernetes 叢集,避免在沒有相應容許度的特定節點上排程工作負載。
  • 節點親和性:通知 Kubernetes 叢集在專屬節點上排程特定 Pod。

節點隔離是進階的縱深防禦機制,您必須搭配其他隔離功能 (例如最低權限容器和服務帳戶) 使用。節點隔離可能無法涵蓋所有升級路徑,且絕不能做為主要安全邊界。

節點隔離的運作方式

如要為工作負載實作節點隔離,請完成下列步驟:

  1. 為工作負載汙染及標記節點集區。

  2. 使用對應的容許度和節點親和性規則更新工作負載。

本指南假設您從叢集中的一個節點集區開始。除了節點汙染之外,使用節點親和性並非必要,但我們建議您這麼做,因為這樣可以更有效控管排程。

建議做法與最佳做法

設定節點隔離後,建議您採取下列做法:

  • 建立新節點集區時,請在這些節點集區中新增自己的汙點,防止大部分 GDC 管理的工作負載在這些節點上執行。

  • 每當您將新工作負載部署至叢集時 (例如安裝第三方工具),請稽核 Pod 要求的權限。盡可能避免將使用提升權限的工作負載部署至共用節點。

限制

在獨立節點集區中執行的 Pod 有下列限制:

  • 攻擊者仍可從遭入侵的節點發動阻斷服務 (DoS) 攻擊。

  • 如果您部署具有提升權限且可容許任何汙點的 DaemonSet 資源,這些 Pod 可能會成為遭入侵節點的權限提升途徑。

  • 遭入侵的節點仍可讀取許多資源,包括叢集中的所有 Pod 和命名空間。

  • 遭入侵的節點可以存取在該節點上執行的每個 Pod 所使用的密鑰和憑證。

  • 遭入侵的節點仍可略過輸出網路政策。

  • 使用個別節點集區隔離工作負載可能會影響成本效益、自動調度資源和資源用量。

  • 部分 GDC 管理的工作負載必須在叢集中的每個節點上執行,且設定為可容許所有汙點。

後續步驟