本文說明 Google Distributed Cloud (GDC) 實體隔離 Kubernetes 叢集中的節點隔離功能優點和限制。透過專屬節點集區進行節點隔離,可精確控管叢集中特定 Pod 的執行位置,進而提升叢集安全性。
工作負載隔離可帶來以下優點:
- 降低 Kubernetes 叢集發生權限提升攻擊的風險。
- 進一步控管需要額外資源的 Pod。
在這些情況下,建議您將容器工作負載隔離到專屬節點集區,以便進一步控管及最佳化。請務必一併考量限制,以便根據節點隔離所需的額外維護成本,做出明智的決策。
本文適用於平台管理員群組中的 IT 管理員 (負責管理 Kubernetes 叢集的節點集區),以及應用程式運算子群組中的應用程式開發人員 (負責管理容器工作負載)。詳情請參閱 GDC air-gapped 說明文件適用對象。
為什麼要隔離工作負載?
雖然不是必要做法,但將節點集區專用於特定容器工作負載,可避免潛在問題。不過,這種做法需要更多管理作業,而且通常並非必要。
Kubernetes 叢集會使用 GDC 管理的具備特殊權限的工作負載,啟用特定叢集功能,例如收集指標。這些工作負載會獲得特殊權限,可在叢集中正確執行。
部署至節點的工作負載可能會遭到惡意實體入侵。如果與 GDC 管理的具備權限工作負載一起執行這些工作負載,表示攻擊者從遭入侵的容器脫逃後,就能使用節點上具備權限工作負載的憑證,在叢集中提升權限。
當您要排程的 pod 比其他 pod 需要更多資源 (例如更多記憶體或更多本機磁碟空間) 時,專屬節點集區也十分實用。
您可以使用下列機制,在專屬節點集區中排定工作負載:
節點隔離是進階的縱深防禦機制,您必須搭配其他隔離功能 (例如最低權限容器和服務帳戶) 使用。節點隔離可能無法涵蓋所有升級路徑,且絕不能做為主要安全邊界。
節點隔離的運作方式
如要為工作負載實作節點隔離,請完成下列步驟:
為工作負載汙染及標記節點集區。
使用對應的容許度和節點親和性規則更新工作負載。
本指南假設您從叢集中的一個節點集區開始。除了節點汙染之外,使用節點親和性並非必要,但我們建議您這麼做,因為這樣可以更有效控管排程。
建議做法與最佳做法
設定節點隔離後,建議您採取下列做法:
建立新節點集區時,請在這些節點集區中新增自己的汙點,防止大部分 GDC 管理的工作負載在這些節點上執行。
每當您將新工作負載部署至叢集時 (例如安裝第三方工具),請稽核 Pod 要求的權限。盡可能避免將使用提升權限的工作負載部署至共用節點。
限制
在獨立節點集區中執行的 Pod 有下列限制:
攻擊者仍可從遭入侵的節點發動阻斷服務 (DoS) 攻擊。
如果您部署具有提升權限且可容許任何汙點的
DaemonSet
資源,這些 Pod 可能會成為遭入侵節點的權限提升途徑。遭入侵的節點仍可讀取許多資源,包括叢集中的所有 Pod 和命名空間。
遭入侵的節點可以存取在該節點上執行的每個 Pod 所使用的密鑰和憑證。
遭入侵的節點仍可略過輸出網路政策。
使用個別節點集區隔離工作負載可能會影響成本效益、自動調度資源和資源用量。
部分 GDC 管理的工作負載必須在叢集中的每個節點上執行,且設定為可容許所有汙點。