本頁說明 Google Kubernetes Engine (GKE) 叢集中節點的預設存取範圍。閱讀本頁內容,瞭解授予叢集的預設存取權範圍,以及如何視需要設定自訂存取權範圍。
本頁面適用於建立及管理叢集的安全專家和作業人員,他們必須瞭解授予叢集的預設存取權,以及如何視需要修改該存取權。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱常見的 GKE Enterprise 使用者角色和工作。
何謂存取權範圍?
存取權範圍是為節點以及使用應用程式預設憑證 (ADC),在節點上執行的工作負載授予權限的舊式方法。存取權範圍定義了用戶端程式庫或 gcloud CLI 的 API 呼叫所用 OAuth 範圍。
建議您不要自行指定存取範圍。您應改用 IAM 權限或 Kubernetes 角色型存取權控管 (RBAC),將存取權授予特定 IAM 服務帳戶或 Kubernetes 服務帳戶。
預設存取權範圍
建立新的 GKE 叢集時, Google Cloud 會根據節點使用的服務帳戶,為節點指派預設存取權範圍。這些存取範圍可啟用 GKE 的特定功能。您也可以在建立標準叢集、Autopilot 叢集或節點集區時,使用 --scopes
標記手動設定存取範圍。您無法修改現有節點集區的存取範圍。但您可以建立採用新範圍的新節點集區,然後將工作負載遷移過去。
以下各節說明 GKE 根據您是否指定自訂服務帳戶,以及是否手動指定存取權範圍,新增至節點的預設存取權範圍。
Autopilot 叢集
服務帳戶 | 您是否手動指定存取範圍? | GKE 新增的存取權範圍 |
---|---|---|
Compute Engine 預設服務帳戶 | 否 |
|
是 | 手動指定的範圍 | |
自訂服務帳戶 | 否 | https://www.googleapis.com/auth/cloud-platform |
是 | 手動指定的範圍 |
標準叢集
服務帳戶 | 手動指定的存取權範圍? | GKE 存取權範圍 |
---|---|---|
Compute Engine 預設服務帳戶 | 否 |
|
是 |
|
|
自訂服務帳戶 | 否 |
|
是 |
|
設定工作負載的自訂服務帳戶
IAM 是存取控制系統,可向Google Cloud 專案內的使用者和服務帳戶授予授權角色。服務帳戶是特殊的 Google 帳戶,可代替您執行工作,例如部署應用程式。您可使用 IAM 建立服務帳戶,然後使用 IAM 政策繫結來保護帳戶。
若您的工作負載需要 Compute Engine 的存取權,請授予服務帳戶 Compute Engine 管理員角色。 如果工作負載需要從 Artifact Registry 提取私人映像檔,請參閱設定 Artifact Registry 存放區的存取權控管。
建立服務帳戶
如要建立名為 kubernetes-engine-node-sa
的自訂服務帳戶,請執行下列指令:
export NODE_SA_NAME=kubernetes-engine-node-sa
gcloud iam service-accounts create $NODE_SA_NAME \
--display-name "GKE Node Service Account"
export NODE_SA_EMAIL=`gcloud iam service-accounts list --format='value(email)' \
--filter='displayName:GKE Node Service Account'`
授予最小角色
如要設定服務帳戶,使其具備 GKE 節點運作所需的「最小」必要角色和權限,請執行下列指令,其中 $PROJECT
是您的專案 ID:
export PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding $PROJECT \
--member serviceAccount:$NODE_SA_EMAIL \
--role roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding $PROJECT \
--member serviceAccount:$NODE_SA_EMAIL \
--role roles/monitoring.viewer
gcloud projects add-iam-policy-binding $PROJECT \
--member serviceAccount:$NODE_SA_EMAIL \
--role roles/logging.logWriter
授予其他角色
如要授予服務帳戶 Compute Engine 管理員角色,請執行下列指令:
gcloud projects add-iam-policy-binding $PROJECT \
--member serviceAccount:$NODE_SA_EMAIL \
--role roles/compute.admin
如要瞭解如何將服務帳戶存取權授予儲存在 Artifact Registry 中的私人映像檔,請參閱授予 Google Kubernetes Engine 叢集的存取權。
使用自訂服務帳戶建立叢集或節點集區
若要建立使用自訂服務帳戶的叢集,請執行下列指令:
gcloud container clusters create --service-account=$NODE_SA_EMAIL
若要在現有叢集中建立節點集區:
gcloud container node-pools create --service-account=$NODE_SA_EMAIL