GKE 中的存取權範圍

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

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

何謂存取權範圍?

存取權範圍是舊版方法,可為節點和在節點上執行的工作負載授予權限 (如果工作負載使用應用程式預設憑證 (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