檢視次數:
設定檔適用性:等級 2
執行 GKE 中繼資料伺服器可防止工作負載存取敏感的實例中繼資料,並促進工作負載身份識別。
每個節點將其元數據存儲在元數據伺服器上。部分元數據,例如 kubelet 憑證和 VM 實例身份令牌,是敏感的,不應暴露給 Kubernetes 工作負載。啟用 GKE 元數據伺服器可防止未在主機網路上運行的 Pod 訪問此元數據,並促進工作負載身份。
當未指定時,預設設定允許運行的 pods 完全訪問節點的基礎元資料伺服器。
注意
注意
預設情況下,運行的 Pod 可以完全訪問節點的基礎元數據伺服器。

影響

使用工作負載身份時,必須運行 GKE 元數據伺服器。由於工作負載身份取代了使用元數據隱藏的需求,這兩種方法不兼容。
當 GKE Metadata Server 和 Workload Identity 已啟動時,除非 Pod 在主機網路上運行,否則 Pod 無法使用 Compute Engine 預設服務帳戶。
工作負載可能需要修改才能使用工作負載身份。請參閱GKE 文件以獲取詳細資訊。

稽核

使用 Google 雲端主控台:
  1. 前往Kubernetes Engine 網站
  2. 從群集列表中,點擊感興趣的群集名稱。
  3. 對於叢集中的每個節點池,打開詳細資訊窗格,並確保 GKE Metadata Server 設置為已啟動
使用命令列:
要檢查叢集中的每個節點池是否已啟動 GKE Metadata Server,請執行以下命令:
gcloud container clusters describe <cluster_name> --zone <cluster_zone> --
format json | jq .nodePools[].config.workloadMetadataConfig
這應該為每個節點池返回以下內容:
{ 
    "mode": "GKE_METADATA" 
}
如果 GKE Metadata Server 未啟動,則返回 Null ({ })。

補救

GKE 中繼資料伺服器需要在叢集上啟用工作負載身份。修改叢集以啟用工作負載身份並啟用 GKE 中繼資料伺服器。
使用 Google 雲端主控台:
  1. 前往Kubernetes Engine 網站
  2. 從叢集列表中,選擇已停用工作負載身份的叢集。
  3. DETAILS窗格下,向下導航至安全子部分。
  4. 點擊名為Edit Workload Identity的鉛筆圖示,在彈出窗口中點擊Enable Workload Identity,並從下拉框中選擇工作負載池。預設情況下,它將是包含集群的雲端專案的命名空間,例如:<project_id>.svc.id.goog.
  5. 點擊SAVE CHANGES並等待叢集更新。
  6. 群集更新後,請在群集詳細資訊頁面中選擇每個節點池。
  7. 對於每個節點池,請在節點池詳細資訊頁面中選擇EDIT
  8. Edit node pool窗格中,勾選Enable GKE Metadata Server核取方塊。
  9. 按一下「SAVE」。
使用命令列:
gcloud container clusters update <cluster_name> --identity-
namespace=<project_id>.svc.id.goog
注意
注意
現有的節點池不受影響。新的節點池預設為 --workload-metadata-from-node=GKE_METADATA_SERVER
要修改現有的節點池以啟用 GKE Metadata Server:
gcloud container node-pools update <node_pool_name> --cluster=<cluster_name> 
--workload-metadata-from-node=GKE_METADATA_SERVER
工作負載可能需要修改才能使用工作負載身份。請參閱GKE 文件以獲取詳細資訊。