Informazioni sugli account di servizio in GKE


In questa pagina vengono descritti gli account di servizio in Google Kubernetes Engine (GKE), che che forniscono identità per le applicazioni.

Gli account di servizio sono identità destinate all'utilizzo da parte delle applicazioni anziché alle persone. In GKE interagisci con gli account di servizio Kubernetes e con gli account di servizio Identity and Access Management.

Account di servizio Kubernetes e account di servizio IAM

La seguente tabella descrive le principali differenze tra gli account di servizio Kubernetes e gli account di servizio IAM:

Tipi di account di servizio in GKE
Account di servizio Kubernetes
  • Oggetto ServiceAccount nel server API Kubernetes
  • Ha come ambito uno spazio dei nomi Kubernetes in un cluster
  • Fornisce un'identità per i pod da utilizzare all'interno del cluster
Account di servizio IAM
  • Gestisci con l'API IAM
  • Con ambito in un progetto Google Cloud
  • Fornisce un'identità per le applicazioni nel progetto

Account di servizio Kubernetes

Gli account di servizio Kubernetes sono gestiti a livello di cluster ed esistono Server API Kubernetes come oggetti ServiceAccount. La documentazione di Kubernetes e la documentazione di GKE spesso utilizzano il termine ServiceAccount per distinguere queste risorse Kubernetes dagli account di servizio in altri ambienti come IAM.

Crei un ServiceAccount Kubernetes in uno spazio dei nomi e poi lo assegni ServiceAccount a un pod utilizzando il campo serviceAccountName nel pod del file manifest. Il processo kubelet sul nodo riceve un token di accesso a breve termine per l'account ServiceAccount assegnato e lo monta come volume proiettato nel pod.

Il token di connessione di breve durata è un token web JSON (JWT) firmato dall'API. che è un provider OpenID Connect (OIDC). Per convalidare il token di accesso, ottieni la chiave di convalida pubblica per il cluster chiamando il metodo projects.locations.clusters.getJwks nell'API GKE.

Rotazione delle credenziali dell'account di servizio Kubernetes

Se le credenziali di un account di servizio Kubernetes vengono compromesse, usa una delle seguenti opzioni per revocare le credenziali:

  • Ricrea i pod: il token di connessione è associato a ciascun token univoco L'UID del pod, quindi la ricreazione dei pod rende le credenziali precedenti non valide.
  • Ricrea l'account di servizio Kubernetes: il token di connessione è associato a l'UID dell'oggetto ServiceAccount nell'API Kubernetes. Elimina ServiceAccount e crea un nuovo ServiceAccount con lo stesso nome. I token precedenti diventano non validi perché l'UID del nuovo account di servizio è diverso.
  • Esegui una rotazione delle credenziali: questa operazione revoca tutte le credenziali le credenziali dell'account di servizio nel tuo cluster. La rotazione modifica anche il certificato CA e l'indirizzo IP del cluster. Per maggiori dettagli, consulta la rotazione delle credenziali.

Account di servizio IAM

Gli account di servizio IAM vengono gestiti a livello di progetto utilizzando l'API IAM. Puoi utilizzare questi account di servizio per eseguire azioni come chiamare in modo programmatico le API di Google Cloud e gestire le autorizzazioni per le applicazioni in esecuzione nei prodotti Google Cloud.

Per saperne di più, consulta Panoramica degli account di servizio IAM.

Agenti di servizio GKE

Un agente di servizio IAM è un account di servizio IAM gestito da Google Cloud.

GKE utilizza l'agente di servizio Kubernetes Engine per gestire per tuo conto il ciclo di vita delle risorse del cluster, come nodi, dischi e bilanciatori del carico. Questo agente di servizio possiede il dominio container-engine-robot.iam.gserviceaccount.com ed è stato concesso il Agente di servizio Kubernetes Engine (roles/container.serviceAgent) nel progetto quando abiliti il l'API GKE.

L'identificatore di questo agente di servizio è il seguente:

service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com

PROJECT_NUMBER è il tuo numero numero di progetto.

Se disabiliti l'agente di servizio GKE, puoi recuperarlo seguendo le istruzioni in Attivazione di un account di servizio

Se rimuovi le autorizzazioni dell'agente di servizio nel progetto, puoi recuperarle seguendo le istruzioni riportate in Errore 400/403: autorizzazioni di modifica mancanti nell'account.

Se elimini l'agente di servizio GKE, puoi annullarne l'eliminazione seguendo le istruzioni in Annullare l'eliminazione di un account di servizio.

Account di servizio del nodo GKE predefinito

Per impostazione predefinita, i nodi GKE utilizzano l'account di servizio predefinito di Compute Engine. Per impostazione predefinita, a questo account di servizio viene concesso il ruolo Editor (roles/editor) e ha più autorizzazioni di quelle richieste per i nodi GKE. Potresti usare un ruolo che usa le autorizzazioni minime necessarie per eseguire nodi nel cluster.

Non disabilitare l'account di servizio Compute Engine predefinito a meno che non migrazione a account di servizio gestiti dall'utente.

Autorizzazioni minime

GKE richiede un set minimo di autorizzazioni IAM per gestire il cluster. Per istruzioni su come creare un modello di attribuzione con privilegi minimi Account di servizio IAM (consulta Utilizza gli account di servizio Google con privilegi minimi.

Quando utilizzare un account di servizio specifico

Il tipo di account di servizio che utilizzi dipende dal tipo di identità che vuoi fornire per le tue applicazioni, come segue:

  • Fornisci un'identità da utilizzare per i pod nel cluster: utilizza un account di servizio Kubernetes. Ogni spazio dei nomi Kubernetes ha un default account di servizio, ma ti consigliamo di creare nuovi account di servizio con privilegi minimi per ogni carico di lavoro in ogni spazio dei nomi.
  • Fornisci un'identità che i tuoi pod possono utilizzare all'esterno del cluster: usa Federazione delle identità dei carichi di lavoro per GKE. Workload Identity Federation for GKE ti consente di specificare risorse Kubernetes come gli account di servizio come entità nei criteri IAM. Ad esempio: utilizza la federazione delle identità per i carichi di lavoro per GKE quando chiami le API Google Cloud come Secret Manager o Spanner dai tuoi pod.
  • Fornisci un'identità predefinita per i nodi: utilizza un'identità Servizio IAM con privilegi minimi al momento della creazione dei cluster o dei nodi GKE. Se non utilizzi un account di servizio IAM personalizzato, GKE utilizza l'account di servizio predefinito di Compute Engine, che ha autorizzazioni estese all'interno del progetto.

Passaggi successivi