GKE 中的存取權範圍


本頁說明 Google Kubernetes Engine (GKE) 叢集中節點的預設存取權範圍。閱讀本頁內容,瞭解授予叢集的預設存取權範圍,以及如何視需要設定自訂存取權範圍。

本頁內容適用於建立及管理叢集的安全專家和作業人員,他們必須瞭解授予叢集的預設存取權,以及如何視需要修改該存取權。如要進一步瞭解我們在內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud

何謂存取權範圍?

存取權範圍是為節點授予權限的舊式方法,如果工作負載使用應用程式預設憑證 (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/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write:如果已啟用 Cloud Logging,則會新增這項設定
  • https://www.googleapis.com/auth/monitoring:如果已啟用 Cloud Monitoring,則會新增這項設定
手動指定的範圍
自訂服務帳戶 https://www.googleapis.com/auth/cloud-platform
手動指定的範圍

標準叢集

服務帳戶 手動指定的存取權範圍? GKE 存取權範圍
Compute Engine 預設服務帳戶
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write:如果已啟用 Cloud Logging,則會新增這項設定
  • https://www.googleapis.com/auth/monitoring:如果已啟用 Cloud Monitoring,則會新增這項設定
  • 手動指定的範圍
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write:如果已啟用 Cloud Logging,則會新增這項設定
  • https://www.googleapis.com/auth/monitoring:如果已啟用 Cloud Monitoring,則會新增這項設定
自訂服務帳戶
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/cloud-platform
  • 手動指定的範圍
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write:如果已啟用 Cloud Logging,則會新增這項設定
  • https://www.googleapis.com/auth/monitoring:如果已啟用 Cloud Monitoring,則會新增這項設定

設定工作負載的自訂服務帳戶

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