Questa pagina descrive gli account di servizio in Google Kubernetes Engine (GKE), che forniscono identità per le applicazioni.
Gli account di servizio sono identità destinate all'utilizzo da parte delle applicazioni, non delle 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 |
|
Account di servizio IAM |
|
Account di servizio Kubernetes
Gli account di servizio Kubernetes sono gestiti a livello di cluster ed esistono nel server API Kubernetes come oggetti ServiceAccount
. Nella documentazione di Kubernetes e nella documentazione di GKE viene spesso utilizzato il termine ServiceAccount per distinguere queste risorse Kubernetes dagli account di servizio in altri ambienti come IAM.
Puoi creare un ServiceAccount Kubernetes in uno spazio dei nomi e quindi assegnare questo ServiceAccount a un pod utilizzando il campo serviceAccountName
nel manifest del pod. Il processo kubelet sul nodo riceve un token di connessione di breve durata per l'account di servizio assegnato e monta il token come volume previsto nel pod.
Il token di connessione di breve durata è un token web JSON (JWT) firmato dal server API, che è un provider OpenID Connect (OIDC). Per convalidare il token di connessione, ottieni la chiave di convalida pubblica per il cluster chiamando il metodo projects.locations.clusters.getJwks
nell'API GKE.
- Per apprendere le nozioni di base su Kubernetes ServiceAccounts, nella documentazione di Kubernetes, vedi Account di servizio.
- Per scoprire come creare nuovi ServiceAccounts, concedere autorizzazioni utilizzando controllo dell'accesso basato su ruoli (RBAC) e assegnare ServiceAccounts ai pod, consulta Configurare gli account di servizio per i pod.
- Per le best practice per la gestione di Kubernetes ServiceAccounts, vedi Best practice per RBAC.
- Per leggere la configurazione OIDC del server API Kubernetes per un cluster,
chiama il metodo
projects.locations.clusters.well-known.getOpenid-configuration
nell'API GKE.
Rotazione delle credenziali dell'account di servizio Kubernetes
Se le credenziali di un account di servizio Kubernetes vengono compromesse, utilizza una delle seguenti opzioni per revocarle:
- Ricrea i pod: il token di connessione è associato a ogni UID del pod univoco, quindi la ricreazione dei pod rende le credenziali precedenti non valide.
- Ricrea l'account di servizio Kubernetes: il token di connessione è associato all'UID dell'oggetto ServiceAccount nell'API Kubernetes. Elimina il ServiceAccount e creane uno nuovo con lo stesso nome. I token precedenti non sono più validi perché l'UID del nuovo ServiceAccount è diverso.
- Esegui una rotazione delle credenziali: questa operazione revoca tutte le credenziali dell'account di servizio Kubernetes nel cluster. La rotazione modifica anche il certificato CA e l'indirizzo IP del cluster. Per i dettagli, consulta la sezione sulla rotazione delle credenziali.
Account di servizio IAM
Gli account di servizio IAM vengono gestiti a livello di progetto tramite l'API IAM. Puoi utilizzare questi account di servizio per eseguire azioni come chiamare in modo programmatico le API Google Cloud e gestire le autorizzazioni per le applicazioni in esecuzione nei prodotti Google Cloud.
Per saperne di più, consulta la 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 il ciclo di vita delle risorse del cluster per tuo conto, ad esempio nodi, dischi e bilanciatori del carico. Questo agente di servizio ha il dominio container-engine-robot.iam.gserviceaccount.com
e riceve il ruolo di Agente di servizio Kubernetes Engine (roles/container.serviceAgent
) sul tuo progetto quando abiliti l'API GKE.
L'identificatore di questo agente di servizio è il seguente:
service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
PROJECT_NUMBER
è il numero di progetto numerico.
Se disabiliti l'agente di servizio GKE, puoi recuperarlo seguendo le istruzioni riportate in Abilitare un account di servizio.
Se rimuovi le autorizzazioni dell'agente di servizio nel progetto, puoi recuperarle seguendo le istruzioni in Errore 400/403: autorizzazioni di modifica mancanti nell'account.
Se elimini l'agente di servizio GKE, puoi annullarne l'eliminazione seguendo le istruzioni riportate 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 dispone di più autorizzazioni rispetto a quelle richieste per i nodi GKE.
Valuta la possibilità di utilizzare un ruolo che impiega le autorizzazioni minime necessarie per eseguire nodi nel cluster.
Non disabilitare l'account di servizio predefinito di Compute Engine a meno che tu non stia eseguendo la migrazione agli account di servizio gestiti dall'utente.
Autorizzazioni minime
GKE richiede un set minimo di autorizzazioni IAM per utilizzare il cluster. Per istruzioni sulla creazione di un account di servizio IAM con privilegi minimi, vedi Utilizzare gli account di servizio Google con privilegio minimo 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à per i tuoi pod da utilizzare nel cluster: utilizza un
account di servizio Kubernetes. Ogni spazio dei nomi Kubernetes ha un ServiceAccount
default
, ma ti consigliamo di creare nuovi ServiceAccounts con privilegi minimi per ogni carico di lavoro in ogni spazio dei nomi. - Fornisci un'identità per i pod da utilizzare all'esterno del cluster: utilizza la Federazione delle identità per i carichi di lavoro per GKE. La federazione delle identità per i carichi di lavoro per GKE consente di specificare risorse Kubernetes come ServiceAccount come entità nei criteri IAM. Ad esempio, utilizza la federazione delle identità per i carichi di lavoro per GKE quando chiami API Google Cloud come Secret Manager o Spanner dai tuoi pod.
- Fornisci un'identità predefinita per i tuoi nodi: utilizza un account di servizio IAM personalizzato con privilegio minimo quando crei i tuoi cluster o nodi GKE. Se non utilizzi un account di servizio IAM personalizzato, GKE utilizza l'account di servizio predefinito di Compute Engine, che dispone di numerose autorizzazioni all'interno del tuo progetto.
Passaggi successivi
- Scopri come utilizzare gli account di servizio Google con privilegi minimi.
- Scopri come concedere un ruolo a un'entità.