Ambiti di accesso in GKE


Questa pagina descrive gli ambiti di accesso predefiniti concessi ai nodi nei cluster Google Kubernetes Engine (GKE). Leggendo questa pagina, scoprirai gli ambiti di accesso predefiniti concessi ai cluster e come configurare ambiti di accesso personalizzati, se necessario.

Questa pagina è rivolta a specialisti e operatori della sicurezza che creano e gestiscono cluster e devono comprendere l'accesso predefinito concesso ai cluster e come modificarlo, se necessario. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli utente e attività comuni di GKE Enterprise.

Che cosa sono gli ambiti di accesso?

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

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

Ambiti di accesso predefiniti

Quando crei un nuovo cluster GKE, Google Cloud assegna un insieme predefinito di ambiti di accesso ai nodi 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 cluster Standard, cluster Autopilot o node pool. Non puoi modificare gli ambiti di accesso nei pool di nodi esistenti. Crea invece un nuovo pool di nodi con i nuovi ambiti ed esegui la migrazione dei workload a questo pool di nodi.

Le seguenti sezioni descrivono gli ambiti di accesso predefiniti che GKE aggiunge ai nodi in base al fatto che tu specifichi un account di servizio personalizzato e se specifichi manualmente gli ambiti di accesso.

Cluster Autopilot

Service account 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
Service account personalizzato No https://www.googleapis.com/auth/cloud-platform
Ambiti specificati manualmente

Cluster standard

Service account 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
Service account 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

Configura un account di servizio personalizzato per i workload

IAM è il sistema di controllo dell'accesso per concedere ruoli autorizzati a utenti e service account all'interno del tuo progettoGoogle Cloud . Un service account è un Account Google speciale che esegue attività, come il deployment di applicazioni, per tuo conto. Utilizzi IAM per creare un account di servizio, poi utilizzi i binding dei criteri IAM per proteggere l'account.

Se i tuoi workload richiedono l'accesso a Compute Engine, concedi all'account di servizio il ruolo Amministratore Compute Engine. Se i tuoi workload devono estrarre immagini private da Artifact Registry, consulta Configurazione 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 i seguenti 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'`

Concedere i ruoli minimi

Per configurare il account di servizio con i ruoli e le autorizzazioni minimi necessari per il funzionamento del nodo GKE, esegui i seguenti comandi, dove $PROJECT è il tuo 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

Concedere 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 scoprire come concedere agli account di servizio l'accesso alle immagini private archiviate in Artifact Registry, consulta Concessione dell'accesso ai cluster Google Kubernetes Engine.

Crea un cluster o un pool di nodi con il account di servizio personalizzato

Per creare un cluster che utilizzi 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