設定檔適用性:等級 2
執行 GKE 中繼資料伺服器可防止工作負載存取敏感的實例中繼資料,並促進工作負載身份識別。
每個節點都將其元數據存儲在元數據伺服器上。部分元數據,例如
kubelet憑證和 VM 實例身份令牌,屬於敏感資訊,不應暴露給 Kubernetes 工作負載。啟用 GKE 元數據伺服器可防止未在主機網路上運行的 Pod 存取這些元數據,並促進工作負載身份識別。當未指定時,預設設定允許運行中的 pod 完全訪問節點的基礎元數據伺服器。
注意預設情況下,運行中的 pods 可以完全訪問節點的基礎元數據伺服器。
|
影響
使用工作負載身份時,必須運行 GKE Metadata Server。由於工作負載身份取代了使用 Metadata Concealment 的需求,這兩種方法不相容。當
GKE Metadata Server 和工作負載身份已啟動時,除非 Pod 在主機網路上運行,否則 Pod 無法使用 Compute Engine 的預設服務帳戶。
可能需要修改工作負載,以便它們使用工作負載身份,如GKE 文件身份中所述。
稽核
使用 Google Cloud 主控台
- 前往 Kubernetes Engine,請造訪 Google Cloud Console Kubernetes Engine 頁面
- 從叢集列表中,點擊感興趣的叢集名稱,並對叢集中的每個節點池打開詳細資訊窗格,確保 GKE Metadata Server 設置為已啟動。
使用命令列
要檢查每個叢集中的節點池是否已啟動 GKE Metadata Server,請定義叢集名稱、位置資訊和專案的三個變數,然後執行以下命令:
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION -- project $PROJECT_ID --format json | jq '.nodePools[].config.workloadMetadataConfig'
這應該為每個節點池返回以下內容:
{
"mode": "GKE_METADATA"
}
如果 GKE Metadata Server 未已啟動,則返回 Null ({ })。
補救
GKE Metadata Server 需要在叢集上啟用 Workload Identity。請修改叢集以啟用 Workload Identity 並啟用 GKE
Metadata Server。
使用 Google Cloud 主控台
- 前往 Kubernetes Engine,請造訪 Google Cloud Console Kubernetes Engine 頁面
- 從叢集列表中,選擇已停用工作負載身份的叢集。
- 在詳細資料窗格中,向下瀏覽至安全性子部分。
- 點擊名為編輯工作負載身份的鉛筆圖示,在彈出窗口中點擊啟用工作負載身份,並從下拉框中選擇一個工作負載池。預設情況下,它將是包含集群的雲端專案的命名空間,例如:<project_id>.svc.id.goog。
- 點擊儲存變更並等待叢集更新。
- 一旦叢集更新後,請在叢集詳細資訊頁面中選擇每個節點池。
- 在每個節點池的詳細資訊頁面中,選擇編輯。
- 在編輯節點池窗格中,勾選啟用 GKE Metadata Server核取方塊。
- 點擊儲存。
使用命令列
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 文件身份中所述。
