Ambiti di accesso in GKE


Questa pagina descrive gli ambiti di accesso predefiniti concessi ai nodi nei cluster Google Kubernetes Engine (GKE).

Che cosa sono gli ambiti di accesso?

Gli ambiti di accesso sono il metodo legacy per concedere autorizzazioni ai nodi e per i carichi di lavoro in esecuzione sui nodi se i carichi di lavoro utilizzano credenziali predefinite dell'applicazione (ADC). Gli ambiti di accesso definiscono gli ambiti OAuth utilizzati nelle chiamate API dalle librerie client o da gcloud CLI.

Ti consigliamo di non specificare ambiti di accesso personali. Devi invece utilizzare le autorizzazioni IAM o il controllo dell'controllo dell'accesso basato sui ruoli di Kubernetes (RBAC) per concedere l'accesso a specifici account di servizio IAM o account di servizio Kubernetes.

Ambiti di accesso predefiniti

Quando crei un nuovo cluster GKE, Google Cloud assegna ai nodi un insieme predefinito di ambiti di accesso in base all'account di servizio utilizzato dai nodi. Questi ambiti di accesso abilitano funzionalità specifiche per GKE. Puoi anche impostare manualmente gli ambiti di accesso utilizzando il flag --scopes quando crei i cluster standard. Cluster Autopilot o pool di nodi. Non puoi modificare gli ambiti di accesso sui pool di nodi esistenti. Crea invece un nuovo pool di nodi con i nuovi ambiti ed esegui la migrazione dei carichi di lavoro in quel pool di nodi.

Le seguenti sezioni descrivono gli ambiti di accesso predefiniti che GKE aggiunge ai nodi a seconda che specifichi o meno un account di servizio personalizzato o che tu specifichi manualmente gli ambiti di accesso.

Cluster Autopilot

Account di servizio Hai specificato manualmente gli ambiti di accesso? Ambiti di accesso aggiunti da GKE
Account di servizio predefinito Compute Engine No
  • 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: aggiunto se Cloud Logging è abilitato
  • https://www.googleapis.com/auth/monitoring: aggiunto se Cloud Monitoring è abilitato
Ambiti specificati manualmente
Account di servizio personalizzato No https://www.googleapis.com/auth/cloud-platform
Ambiti specificati manualmente

Cluster standard

Account di servizio Ambiti di accesso specificati manualmente? Ambiti di accesso GKE
Account di servizio predefinito Compute Engine No
  • 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: aggiunto se Cloud Logging è abilitato
  • https://www.googleapis.com/auth/monitoring: aggiunto se Cloud Monitoring è abilitato
  • Ambiti specificati manualmente
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: aggiunto se Cloud Logging è abilitato
  • https://www.googleapis.com/auth/monitoring: aggiunto se Cloud Monitoring è abilitato
Account di servizio personalizzato No
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/cloud-platform
  • Ambiti specificati manualmente
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: aggiunto se Cloud Logging è abilitato
  • https://www.googleapis.com/auth/monitoring: aggiunto se Cloud Monitoring è abilitato

Configurazione di un account di servizio personalizzato per i carichi di lavoro

IAM è il sistema di controllo dell'accesso per concedere ruoli autorizzati a utenti e account di servizio all'interno del tuo progetto Google Cloud. Un account di servizio è un Account Google speciale che esegue per tuo conto attività, come il deployment di applicazioni. Puoi utilizzare IAM per creare un account di servizio e poi utilizzare le associazioni di criteri IAM per proteggere l'account.

Se i carichi di lavoro richiedono l'accesso a Compute Engine, concedi all'account di servizio il ruolo Amministratore Compute Engine. Se i tuoi carichi di lavoro devono eseguire il pull di immagini private da Artifact Registry, consulta Configurare controllo dell'accesso per i repository Artifact Registry.

Crea un account di servizio

Per creare un account di servizio personalizzato denominato kubernetes-engine-node-sa, esegui questi comandi:

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'`

Concedi ruoli minimi

Per configurare l'account di servizio con il numero minimo di autorizzazioni e ruoli necessari per il funzionamento del nodo GKE, esegui questi comandi, dove $PROJECT è l'ID progetto:

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

Concedi ruoli aggiuntivi

Per concedere all'account di servizio il ruolo Amministratore Compute Engine, esegui questo comando:

gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/compute.admin

Per informazioni su come concedere agli account di servizio l'accesso alle immagini private archiviate in Artifact Registry, consulta Concedere l'accesso ai cluster di Google Kubernetes Engine.

Creazione di un cluster o di un pool di nodi con l'account di servizio personalizzato

Per creare un cluster che utilizza l'account di servizio personalizzato, esegui questo comando:

gcloud container clusters create --service-account=$NODE_SA_EMAIL

Per creare un pool di nodi in un cluster esistente:

gcloud container node-pools create --service-account=$NODE_SA_EMAIL