GKE 中的存取權範圍


本頁說明 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/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