Questa pagina spiega che cosa sono gli account di servizio e descrive considerazioni importanti per la loro gestione in ogni fase del ciclo di vita.
Che cosa sono gli account di servizio?
Un account di servizio è un tipo speciale di account utilizzato in genere da un'applicazione o da un carico di lavoro di calcolo, come un'istanza Compute Engine, anziché da una persona. Un account di servizio è identificato dal rispettivo indirizzo email, che è univoco per l'account.
Le applicazioni utilizzano gli account di servizio per effettuare chiamate API autorizzate autenticandosi come l'account di servizio stesso o come utenti di Google Workspace o Cloud Identity tramite delega a livello di dominio. Quando un'applicazione si autentica come account di servizio, ha accesso a tutte le risorse a cui l'account di servizio ha l'autorizzazione di accesso.
Il modo più comune per consentire a un'applicazione di autenticarsi come account di servizio è collegare un account di servizio alla risorsa che esegue l'applicazione. Ad esempio, puoi collegare un account di servizio a un'istanza Compute Engine in modo che le applicazioni in esecuzione su quell'istanza possano autenticarsi come account di servizio. Successivamente, puoi concedere all'account di servizio i ruoli IAM per consentire all'account di servizio e, per estensione, alle applicazioni nell'istanza di accedere alle risorse Google Cloud.
Esistono altri modi per consentire alle applicazioni di autenticarsi come account di servizio oltre all'attaccare un account di servizio. Ad esempio, puoi configurare la Federazione delle identità per i carichi di lavoro per consentire ai carichi di lavoro esterni di autenticarsi come account di servizio oppure creare una chiave account di servizio e utilizzarla in qualsiasi ambiente per ottenere token di accesso OAuth 2.0.
Per scoprire di più sull'autenticazione degli account di servizio per le applicazioni, consulta Panoramica delle identità per i carichi di lavoro.
Le entità, come gli utenti e altri account di servizio, possono anche autenticarsi come account di servizio. Per ulteriori informazioni, consulta la sezione Rappresentazione dell'account di servizio in questa pagina.
Tipi di account di servizio
In Google Cloud esistono diversi tipi di account di servizio:
Account di servizio gestiti dall'utente: account di servizio che crei e gestisci. Questi account di servizio vengono spesso utilizzati come identità per i carichi di lavoro.
Account di servizio predefiniti: account di servizio gestiti dall'utente che vengono creati automaticamente quando attivi determinati servizi Google Cloud. Sei responsabile della gestione di questi account di servizio.
Agenti di servizio: account di servizio creati e gestiti da Google Cloud che consentono ai servizi di accedere alle risorse per tuo conto.
Per saperne di più sui diversi tipi di account di servizio, consulta la sezione Tipi di account di servizio.
Credenziali dell'account di servizio
Le applicazioni e i principali si autenticano come account di servizio eseguendo una delle seguenti operazioni:
- Ottenere le credenziali di breve durata. In molti casi, ad esempio per gli account servizio collegati e i comandi che utilizzano il flag
--impersonate-service-account
gcloud CLI, queste credenziali vengono ottenute automaticamente e non è necessario crearle o gestirle autonomamente. - Utilizzo di una chiave dell'account di servizio per firmare un token web JSON (JWT) e scambiarlo per un token di accesso. Poiché le chiavi degli account di servizio comportano un rischio per la sicurezza se non vengono gestite correttamente, devi scegliere un'alternativa più sicura alle chiavi degli account di servizio ogni volta che è possibile.
Per scoprire di più sull'autenticazione degli account di servizio, consulta Credenziali dell'account di servizio.
Rappresentazione dell'identità dell'account di servizio
Quando un'entità autenticata, ad esempio un utente o un altro account di servizio, si autentica come account di servizio per ottenere le autorizzazioni dell'account di servizio, si parla di sostituzione di identità dell'account di servizio. L'impersonificazione di un account di servizio consente a un'entità autenticata di accedere a qualsiasi elemento a cui può accedere l'account di servizio. Solo le entità autenticate con le autorizzazioni appropriate possono eseguire l'impersonificazione dei service account.
La rappresentazione è utile quando vuoi modificare le autorizzazioni di un utente senza modificare i criteri IAM (Identity and Access Management). Ad esempio, puoi utilizzare la simulazione di identità per concedere temporaneamente a un utente un accesso elevato o per verificare se un insieme specifico di autorizzazioni è sufficiente per un'attività. Puoi anche utilizzare la rappresentazione per sviluppare localmente applicazioni che possono essere eseguite solo come account di servizio o per autenticare le applicazioni in esecuzione al di fuori di Google Cloud.
Per scoprire di più sull'impersonificazione degli account di servizio, consulta Impersonificazione dell'account di servizio.
Account di servizio e domini Google Workspace
A differenza degli account utente, gli account di servizio non appartengono al tuo dominio Google Workspace. Se condividi asset di Google Workspace, come documenti o eventi, con l'intero dominio Google Workspace, questi non vengono condivisi con gli account di servizio. Analogamente, gli asset Google Workspace creati da un account di servizio non vengono creati nel tuo dominio Google Workspace. Di conseguenza, gli amministratori di Google Workspace e Cloud Identity non possono possedere o gestire queste risorse.
Autorizzazioni service account
Gli account di servizio sono entità. Ciò significa che puoi concedere ai service account l'accesso alle risorse Google Cloud. Ad esempio, potresti assegnare a un account di servizio il ruolo Amministratore Compute (roles/compute.admin
) in un progetto. L'account di servizio potrà quindi gestire le risorse Compute Engine nel progetto.
Tuttavia, gli account di servizio sono anche risorse. Ciò significa che puoi assegnare ad altri entità l'autorizzazione ad accedere all'account di servizio. Ad esempio,
puoi concedere a un utente il ruolo Utente account di servizio
(roles/iam.serviceAccountUser
) in un account di servizio per consentirgli di collegare
l'account di servizio alle risorse. In alternativa, puoi concedere a un utente il ruolo Amministratore account di servizio (roles/iam.serviceAccountAdmin
) per consentirgli di eseguire operazioni come visualizzare, modificare, disattivare ed eliminare l'account di servizio.
Le sezioni seguenti spiegano come gestire gli account di servizio come entità e come risorse.
Account di servizio come entità
Poiché gli account di servizio sono entità, puoi consentire a un account di servizio di accedere alle risorse del tuo progetto concedendogli un ruolo, come faresti per qualsiasi altra entità. Ad esempio, se vuoi consentire all'account di servizio della tua applicazione di accedere agli oggetti in un bucket Cloud Storage, puoi concedere all'account di servizio il ruolo Visualizzatore oggetti Storage (roles/storage.objectViewer
) sul bucket.
Come per tutti i tipi di entità, devi concedere all'account di servizio solo il set minimo di autorizzazioni necessarie per raggiungere il suo scopo.
Come per le altre entità, puoi aggiungere account di servizio a un gruppo, quindi concedere i ruoli al gruppo. Tuttavia, l'aggiunta di account di servizio ai gruppi non è una migliore pratica. Gli account di servizio vengono utilizzati dalle applicazioni e ogni applicazione ha probabilmente i propri requisiti di accesso.
Per scoprire come concedere i ruoli ai principali, inclusi gli account di servizio, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Account di servizio come risorse
Gli account di servizio sono anche risorse che possono avere i propri criteri di autorizzazione. Di conseguenza, puoi consentire ad altre entità di accedere a un account di servizio concedendo loro un ruolo nell'account di servizio o in una delle risorse principali dell'account di servizio. Ad esempio, per consentire a un utente di simulare l'identità di un account di servizio, puoi concedergli il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
) nell'account di servizio.
Quando concedi un ruolo che consente a un utente di simulare l'identità di un account di servizio, tieni presente che l'utente può accedere a tutte le risorse a cui può accedere l'account di servizio. Fai attenzione quando consenti agli utenti di rubare l'identità di account di servizio con privilegi elevati, come gli account di servizio predefiniti di Compute Engine e App Engine.
Per saperne di più sui ruoli che puoi concedere alle entità negli account di servizio, consulta Autorizzazioni degli account di servizio.
Per scoprire come concedere a un'entità un ruolo in un account di servizio, consulta Gestire l'accesso agli account di servizio.
Ciclo di vita dell'account di servizio
Durante la gestione dei progetti, probabilmente creerai, gestirai ed eliminerai molti account di servizio diversi. Questa sezione descrive le considerazioni chiave per la gestione degli account di servizio nelle varie fasi del loro ciclo di vita.
Dove creare gli account di servizio
Ogni account di servizio si trova in un progetto. Una volta creato un account di servizio, non puoi più spostarlo in un altro progetto.
Esistono diversi modi per organizzare gli account di servizio in progetti:
Crea account di servizio e risorse nello stesso progetto.
Questo approccio semplifica l'utilizzo dei service account. Tuttavia, puoi avere difficoltà a tenere traccia dei tuoi account di servizio se sono suddivisi in più progetti.
Centralizza gli account di servizio in progetti separati.
Questo approccio raggruppa tutti gli account di servizio della tua organizzazione in un numero ridotto di progetti, il che può semplificarne la gestione. Tuttavia, richiede una configurazione aggiuntiva se colleghi gli account di servizio alle risorse in altri progetti, il che consente a queste risorse di utilizzare l'account di servizio come identità.
Quando un account di servizio si trova in un progetto e accede a una risorsa in un altro progetto, in genere devi abilitare l'API per quella risorsa in entrambi i progetti. Ad esempio, se hai un account di servizio nel progetto
my-service-accounts
e un'istanza Cloud SQL nel progettomy-application
, devi attivare l'API Cloud SQL sia inmy-service-accounts
sia inmy-application
.Per impostazione predefinita, puoi creare fino a 100 account di servizio in un progetto. Se devi creare altri account di servizio, richiedi un aumento della quota.
Per scoprire come creare un account di servizio, consulta Creare account di servizio.
Impedire la creazione di account di servizio
Per controllare meglio dove vengono creati gli account di servizio, ti consigliamo di impedire la loro creazione in alcuni progetti della tua organizzazione.
Puoi impedire la creazione di account di servizio applicando il
constraints/iam.disableServiceAccountCreation
vincolo del criterio dell'organizzazione in un'organizzazione,
in un progetto o in una cartella.
Prima di applicare questa limitazione, tieni presente quanto segue:
Se applichi questo vincolo in un progetto o in tutti i progetti di un'organizzazione, alcuni servizi Google Cloud non possono creare account di servizio predefiniti. Di conseguenza, se il progetto esegue carichi di lavoro che devono autenticarsi come account di servizio, il progetto potrebbe non contenere un account di servizio che il carico di lavoro può utilizzare.
Per risolvere il problema, puoi abilitare la simulazione dell'identità degli account di servizio tra progetti. Se attivi questa funzionalità, puoi creare account di servizio in un progetto centralizzato, quindi collegarli alle risorse in altri progetti. I carichi di lavoro in esecuzione su queste risorse possono utilizzare gli account di servizio collegati per l'autenticazione, rendendo non necessari gli account di servizio predefiniti.
Alcune funzionalità, come la Federazione delle identità per i carichi di lavoro, richiedono la creazione di account di servizio.
Se non utilizzi la federazione di Workload Identity, ti consigliamo di utilizzare i vincoli delle norme dell'organizzazione per bloccare la federazione da tutti i provider di identità.
Tieni traccia degli account di servizio
Nel tempo, man mano che crei sempre più account di servizio, potresti perdere il conto di quale account di servizio viene utilizzato per quale scopo.
Il nome visualizzato di un account di servizio è un buon modo per acquisire informazioni aggiuntive sull'account di servizio, ad esempio lo scopo dell'account di servizio o un contatto per l'account. Per i nuovi account di servizio, puoi compilare il nome visualizzato durante la creazione. Per gli account di servizio esistenti, utilizza il metodo serviceAccounts.update()
per modificare il nome visualizzato.
Utilizzare gli account di servizio con Compute Engine
Le istanze Compute Engine devono essere eseguite come account di servizio per avere accesso ad altre risorse Google Cloud. Per contribuire a proteggere le tue istanze Compute Engine, tieni presente quanto segue:
Puoi creare istanze nello stesso progetto con account di servizio diversi. Per modificare l'account di servizio di un'istanza dopo la sua creazione, utilizza il metodo
instances.setServiceAccount
.Per configurare l'autorizzazione per gli account di servizio associati, devi configurare gli ambiti di accesso oltre ai ruoli IAM.
Poiché le istanze dipendono dai propri account di servizio per accedere alle risorse Google Cloud, evita di eliminare gli account di servizio se sono ancora utilizzati dalle istanze in esecuzione.
Per scoprire di più sull'utilizzo degli account di servizio con Compute Engine, consulta la sezione Account di servizio nella documentazione di Compute Engine.
Identificare gli account di servizio inutilizzati
Dopo un po' di tempo, potresti avere nei tuoi progetti account di servizio che non utilizzi più.
Gli account di servizio inutilizzati rappresentano un rischio per la sicurezza non necessario, pertanto ti consigliamo di disattivare gli account di servizio inutilizzati, quindi di eliminarli quando hai la certezza di non averne più bisogno. Puoi utilizzare i seguenti metodi per identificare gli account di servizio non utilizzati:
- Gli approfondimenti sugli account di servizio indicano quali account di servizio nel tuo progetto non sono stati autenticati negli ultimi 90 giorni.
- Activity Analyzer ti consente di controllare quando è stata utilizzata l'ultima volta una chiave o un account di servizio.
Puoi anche utilizzare le metriche di utilizzo degli account di servizio per monitorare l'utilizzo degli account di servizio e delle chiavi in generale.
Se sei un cliente di Security Command Center Premium, puoi utilizzare Event Threat Detection per ricevere una notifica quando un account di servizio inattivo attiva un'azione. Gli account di servizio inattivi sono account di servizio che non sono stati utilizzati per più di 180 giorni. Una volta utilizzato, un account di servizio non è più inattivo.
Elimina account di servizio
Prima di eliminare un account di servizio, disattivalo per assicurarti che non sia necessario. Gli account di servizio disabilitati possono essere riattivati se sono ancora in uso.
Dopo aver verificato che un account di servizio non è necessario, puoi eliminarlo.
Ricrea gli account di servizio eliminati
È possibile eliminare un account di servizio e creare un nuovo account di servizio con lo stesso nome.
Quando elimini un account di servizio, le relative associazioni di ruoli non vengono eliminate immediatamente. Le associazioni di ruoli elencano invece l'account di servizio con il prefisso deleted:
. Per un esempio, consulta
Criteri con principali eliminati.
Se crei un nuovo account di servizio con lo stesso nome di un account di servizio eliminato di recente, le vecchie associazioni potrebbero essere ancora esistenti, ma non si applicheranno al nuovo account di servizio, anche se entrambi gli account hanno lo stesso indirizzo email. Questo comportamento si verifica perché agli account di servizio viene assegnato un ID univoco all'interno di Identity and Access Management (IAM) al momento della creazione. All'interno, tutte le associazioni di ruoli vengono concesse utilizzando questi ID, non l'indirizzo email dell'account di servizio. Di conseguenza, le eventuali associazioni di ruoli esistenti per un account di servizio eliminato non si applicano a un nuovo account di servizio che utilizza lo stesso indirizzo email.
Analogamente, se colleghi un account di servizio a una risorsa, poi lo elimini e ne crei uno nuovo con lo stesso nome, il nuovo account di servizio non verrà collegato alla risorsa.
Per evitare questo comportamento imprevisto, ti consigliamo di utilizzare un nome nuovo e univoco per ogni account di servizio. Inoltre, se elimini accidentalmente un account di servizio, puoi provare a annullare l'eliminazione dell'account di servizio anziché creare un nuovo account di servizio.
Se non riesci a annullare l'eliminazione dell'account di servizio originale e devi creare un nuovo account di servizio con lo stesso nome e gli stessi ruoli, devi concedere i ruoli al nuovo account di servizio. Per maggiori dettagli, consulta Criteri con principali eliminati.
Se devi anche collegare il nuovo account di servizio alle stesse risorse dell'account di servizio originale, svolgi una delle seguenti operazioni:
- Per le istanze Compute Engine, puoi modificare l'account di servizio associato all'istanza per sostituire l'account di servizio originale con il nuovo account di servizio.
- Per tutte le altre risorse, devi eliminare la risorsa esistente, quindi creare una nuova risorsa dello stesso tipo e collegare il nuovo account di servizio.
Passaggi successivi
- Scopri come creare account di servizio.
- Consulta le best practice per l'utilizzo degli account di servizio.
- Consulta le best practice per la gestione delle chiavi degli account di servizio.
Provalo
Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
Inizia gratuitamente