Panoramica degli account di servizio

Questa pagina spiega cosa sono gli account di servizio e descrive importanti considerazioni per la gestione degli account di servizio in ogni fase del loro ciclo di vita.

Che cosa sono gli account di servizio?

Un account di servizio è un tipo speciale di account generalmente utilizzato da un'applicazione o da un carico di lavoro di computing, ad esempio un'istanza di Compute Engine, anziché una persona. Un account di servizio è identificato dal relativo indirizzo email, univoco dell'account.

Le applicazioni utilizzano gli account di servizio per effettuare chiamate API autorizzate autenticandosi come account di servizio stesso o come utenti Google Workspace o Cloud Identity tramite la 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 è autorizzato ad accedere.

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 di Compute Engine in modo che le applicazioni in esecuzione su quell'istanza possano autenticarsi come account di servizio. Quindi, puoi concedere i ruoli IAM all'account di servizio 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 a collegare un account di servizio. Ad esempio, potresti 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 dell'account di servizio e utilizzarla in qualsiasi ambiente per ottenere token di accesso OAuth 2.0.

Per saperne di più sull'autenticazione degli account di servizio per le applicazioni, consulta la panoramica sulle identità per i carichi di lavoro.

Anche le entità, come gli utenti e altri account di servizio, possono autenticarsi come account di servizio. Per maggiori informazioni, consulta Furto d'identità 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 abiliti determinati servizi Google Cloud. Sei responsabile della gestione di questi account di servizio.

  • Account di servizio gestiti da Google: account di servizio creati e gestiti da Google che consentono ai servizi di accedere alle risorse per tuo conto.

Per saperne di più sui diversi tipi di account di servizio, consulta Tipi di account di servizio.

Credenziali dell'account di servizio

Le applicazioni e le entità si autenticano come account di servizio effettuando una delle seguenti operazioni:

  • Ottenere credenziali di breve durata. In molti casi, ad esempio per gli account di servizio e i comandi collegati che utilizzano il flag --impersonate-service-account dell'interfaccia alla gcloud CLI, queste credenziali vengono ottenute automaticamente, senza doverle creare o gestire personalmente.
  • Utilizzo di una chiave dell'account di servizio per firmare un token JWT (JSON Web Token) e scambiarlo con un token di accesso. Poiché le chiavi degli account di servizio rappresentano un rischio per la sicurezza se non vengono gestite correttamente, dovresti scegliere un'alternativa più sicura alle chiavi degli account di servizio quando possibile.

Per scoprire di più sull'autenticazione degli account di servizio, consulta Credenziali degli account di servizio.

Impersonificazione degli account di servizio

Quando un'entità autenticata, come 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 impersonificazione dell'account di servizio. L'identità di un account di servizio consente a un'entità autenticata di accedere a qualsiasi account di servizio a cui può accedere. Solo le entità autenticate con le autorizzazioni appropriate possono impersonare gli account di servizio.

Il furto d'identità è utile quando vuoi modificare le autorizzazioni di un utente senza cambiare i criteri IAM (Identity and Access Management). Ad esempio, puoi utilizzare la rappresentazione per concedere temporaneamente a un utente un accesso elevato o per verificare se un insieme specifico di autorizzazioni è sufficiente per un'attività. Puoi utilizzare la rappresentazione anche per sviluppare localmente applicazioni che possono essere eseguite solo come account di servizio o per autenticare le applicazioni eseguite al di fuori di Google Cloud.

Per scoprire di più sul furto d'identità degli account di servizio, consulta Furto d'identità degli account di servizio.

Account di servizio e domini Google Workspace

Gli account di servizio non appartengono al tuo dominio Google Workspace, a differenza degli account utente. Se condividi gli asset di Google Workspace, come documenti o eventi, con l'intero dominio Google Workspace, non vengono condivisi con gli account di servizio. Analogamente, gli asset Google Workspace creati da un account di servizio non vengono creati nel dominio Google Workspace. Di conseguenza, gli amministratori di Google Workspace e Cloud Identity non possono possedere o gestire questi asset.

Autorizzazioni account di servizio

Gli account di servizio sono entità. Ciò significa che puoi concedere agli account di servizio l'accesso alle risorse Google Cloud. Ad esempio, puoi concedere a un account di servizio il ruolo Amministratore Compute (roles/compute.admin) su un progetto. L'account di servizio potrà quindi gestire le risorse di Compute Engine in quel progetto.

Tuttavia, gli account di servizio sono anche risorse. Ciò significa che puoi concedere ad altre 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) per un account di servizio per consentire all'utente di collegarlo 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 seguenti sezioni descrivono 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 nel tuo progetto concedendogli un ruolo, proprio 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) nel bucket.

Come con tutti i tipi di entità, devi concedere all'account di servizio solo l'insieme minimo di autorizzazioni necessarie per raggiungere il suo obiettivo.

Come per altre entità, puoi aggiungere account di servizio a un gruppo Google e poi concedere i ruoli al gruppo. Tuttavia, l'aggiunta di account di servizio ai gruppi non è una best practice. Gli account di servizio vengono utilizzati dalle applicazioni e è probabile che ogni applicazione abbia i propri requisiti di accesso.

Per informazioni su come concedere i ruoli alle entità, inclusi gli account di servizio, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Account di servizio come risorse

Gli account di servizio sono risorse che possono avere criteri di autorizzazione specifici. Di conseguenza, puoi consentire ad altre entità di accedere a un account di servizio concedendo loro un ruolo nell'account di servizio o su una delle risorse padre dell'account di servizio. Ad esempio, per consentire a un utente di assumere 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 impersonare 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 impersonare account di servizio con privilegi elevati, ad esempio gli account di servizio predefiniti di Compute Engine e App Engine.

Per saperne di più sui ruoli che puoi concedere alle entità sugli account di servizio, consulta Autorizzazioni account di servizio.

Per scoprire come concedere un ruolo a un'entità su un account di servizio, consulta Gestire l'accesso agli account di servizio.

Ciclo di vita dell'account di servizio

Man mano che gestisci i tuoi 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. Dopo aver creato un account di servizio, non puoi spostarlo in un altro progetto.

Esistono alcuni modi per organizzare gli account di servizio in progetti:

  • Crea account di servizio e risorse nello stesso progetto.

    Questo approccio semplifica l'uso degli account di servizio. Tuttavia, può essere difficile tenere traccia dei tuoi account di servizio quando sono distribuiti su molti progetti.

  • Centralizza gli account di servizio in progetti separati.

    In questo modo, tutti gli account di servizio della tua organizzazione vengono inseriti in un numero ridotto di progetti, semplificando la gestione degli account di servizio. Tuttavia, richiede una configurazione aggiuntiva se associ gli account di servizio alle risorse di altri progetti, in modo che queste risorse possano 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 progetto my-application, devi abilitare l'API Cloud SQL sia in my-service-accounts che in my-application.

    Per impostazione predefinita, puoi creare fino a 100 account di servizio in un progetto. Se devi creare account di servizio aggiuntivi, 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, può essere opportuno impedire la creazione di account di servizio in alcuni progetti della tua organizzazione.

Puoi impedire la creazione di account di servizio applicando il constraints/iam.disableServiceAccountCreation vincolo dei criteri dell'organizzazione in un'organizzazione, un progetto o una cartella.

Prima di applicare questo vincolo, considera le seguenti limitazioni:

Tenere traccia degli account di servizio

Nel tempo, man mano che crei un numero sempre maggiore di account di servizio, potresti perdere traccia di quale account di servizio viene utilizzato per quale scopo.

Il nome visualizzato di un account di servizio è un buon modo per acquisire ulteriori informazioni sull'account di servizio, ad esempio lo scopo dell'account di servizio o una persona di contatto dell'account. Per i nuovi account di servizio, puoi inserire il nome visualizzato durante la creazione dell'account di servizio. 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 di Compute Engine devono essere eseguite come account di servizio per avere accesso ad altre risorse Google Cloud. Per proteggere le tue istanze Compute Engine, considera quanto segue:

  • Puoi creare istanze nello stesso progetto con account di servizio diversi. Per modificare l'account di servizio di un'istanza dopo la creazione, utilizza il metodo instances.setServiceAccount.

  • Per impostare l'autorizzazione per gli account di servizio collegati, devi configurare gli ambiti di accesso oltre a configurare i ruoli IAM.

  • Poiché le istanze dipendono dai rispettivi account di servizio per avere accesso alle risorse Google Cloud, evita di eliminare gli account di servizio quando sono ancora utilizzati dall'esecuzione delle istanze.

Per saperne di più sull'utilizzo degli account di servizio con Compute Engine, consulta Account di servizio nella documentazione di Compute Engine.

Identificare gli account di servizio inutilizzati

Dopo qualche tempo, potresti avere degli account di servizio nei tuoi progetti che non usi più.

Gli account di servizio inutilizzati costituiscono un rischio per la sicurezza superfluo, pertanto ti consigliamo di disattivare gli account di servizio inutilizzati e poi di eliminare gli account di servizio quando hai la certezza che non ti servono più. Puoi utilizzare i seguenti metodi per identificare gli account di servizio inutilizzati:

Puoi anche utilizzare le metriche di utilizzo degli account di servizio per monitorare l'utilizzo dell'account di servizio e delle chiavi in generale.

Se sei un cliente 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 inattivi da più di 180 giorni. Dopo l'utilizzo, l'account di servizio non è più inattivo.

Elimina account di servizio

Prima di eliminare un account di servizio, disabilitalo per assicurarti che non sia necessario. Gli account di servizio disabilitati possono essere riattivati se sono ancora in uso.

Dopo aver confermato che un account di servizio non è necessario, puoi eliminarlo.

Ricreare gli account di servizio eliminati

È possibile eliminare un account di servizio e quindi crearne uno nuovo 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 entità eliminate.

Se crei un nuovo account di servizio con lo stesso nome di un account di servizio eliminato di recente, le vecchie associazioni potrebbero ancora esistere. Tuttavia, non verranno applicate 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 in Identity and Access Management (IAM) al momento della creazione. Internamente, tutte le associazioni di ruoli vengono concesse utilizzando questi ID, non l'indirizzo email dell'account di servizio. Pertanto, 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.

Allo stesso modo, se associ un account di servizio a una risorsa, poi elimini l'account di servizio e ne crei uno nuovo con lo stesso nome, il nuovo account di servizio non verrà collegato alla risorsa.

Per evitare questo comportamento imprevisto, valuta la possibilità di utilizzare un nuovo nome 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é crearne uno nuovo.

Se non riesci ad 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 entità eliminate.

Se devi anche che il nuovo account di servizio sia collegato alle stesse risorse dell'account di servizio originale, esegui una delle seguenti operazioni:

Passaggi successivi

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