Questa pagina spiega come eliminare e annullare l'eliminazione dei service account utilizzando l'API Identity and Access Management (IAM), la console Google Cloud e lo strumento a riga di comando gcloud.
Prima di iniziare
Abilita l'API IAM.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (
roles/serviceusage.serviceUsageAdmin), che include l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.Configurare l'autenticazione.
Seleziona la scheda relativa a come intendi utilizzare i campioni in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi Google Cloud e alle API, non devi configurare l'autenticazione.
gcloud
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
C#
Per utilizzare gli esempi di .NET in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud .
C++
Per utilizzare gli esempi di C++ in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud .
Go
Per utilizzare gli esempi di Go in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud .
Java
Per utilizzare gli esempi Java in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud .
Python
Per utilizzare gli esempi di Python in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Se utilizzi una shell locale, crea credenziali di autenticazione locali per il tuo account utente:
gcloud auth application-default login
Non è necessario eseguire questa operazione se utilizzi Cloud Shell.
Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione di Google Cloud .
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
-
Informazioni sui service account IAM
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eliminare e ripristinare i service account, chiedi all'amministratore di concederti i seguenti ruoli IAM sul progetto:
-
Per eliminare i service account:
Elimina service account (
roles/iam.serviceAccountDeleter) -
Per eliminare e annullare l'eliminazione dei service account:
Amministratore service account (
roles/iam.serviceAccountAdmin)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
I ruoli di base IAM contengono anche le autorizzazioni per gestire i service account. Non devi concedere ruoli di base in un ambiente di produzione, ma puoi concederli in un ambiente di sviluppo o di test.
Elimina un account di servizio
Quando elimini un account di servizio, le applicazioni non avranno più accesso alle risorseGoogle Cloud tramite quelaccount di serviziot. Se elimini i service account predefiniti di App Engine e Compute Engine, le app App Engine e le istanze VM di Compute Engine che utilizzano questi service account non avranno più accesso alle risorse del progetto.
Elimina i service account con cautela. Prima di eliminare un account di servizio, assicurati che le tue applicazioni critiche non lo utilizzino più. Se non sai con certezza se un account di serviziot è in uso, Google consiglia di disattivarlo anziché eliminarlo. I service account disattivati possono essere riattivati se sono ancora necessari. Per saperne di più, consulta Disabilita i service account inutilizzati prima di eliminarli.
Se vuoi ripristinare un account di servizio eliminato, puoi annullarne l'eliminazione se sono trascorsi 30 giorni o meno dall'eliminazione deaccount di serviziont. Dopo 30 giorni, IAM rimuove definitivamente il service account. Google Cloud non può recuperare il account di servizio dopo la rimozione definitiva, anche se presenti una richiesta di assistenza.
Per ridurre ulteriormente il rischio di eliminare un account di servizio necessario, puoi anche attivare i consigli sui rischi di modifica. Le raccomandazioni di rischio per le modifiche generano avvisi quando tenti di eliminare account di servizio che Google Cloud sono stati identificati come importanti.
Se elimini un account di servizio e ne crei uno nuovo con lo stesso nome, il nuovo account di servizio viene trattato come un'identità separata e non eredita i ruoli concessi al account di servizio eliminato. Al contrario, quando elimini un account di servizio e poi ne annulli l'eliminazione, l'identità del service account non cambia e il account di servizio mantiene i suoi ruoli.
Quando un account di servizio viene eliminato, le relative associazioni di ruoli non vengono rimosse immediatamente, ma vengono eliminate automaticamente dal sistema dopo un massimo di 60 giorni. Fino a quel momento, il account di servizio viene visualizzato nei
binding dei ruoli con un prefisso deleted: e un
suffisso ?uid=NUMERIC_ID, dove
NUMERIC_ID è un ID numerico univoco per il service
account.
Gli account di servizio eliminati non vengono conteggiati ai fini della quota degli account di servizio.
Console
Nella Google Cloud console, vai alla pagina Service account.
Seleziona un progetto.
Seleziona il account di servizio da eliminare, quindi fai clic su Elimina .
gcloud
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
-
Esegui il comando
gcloud iam service-accounts deleteper eliminare un account di servizio.Comando:
gcloud iam service-accounts delete \ SA_NAME@PROJECT_ID.iam.gserviceaccount.comOutput:
Deleted service account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
C++
Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM C++.
Per eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.
C#
Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM C#.
Per eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.
Go
Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Go.
Per eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.
Java
Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Java.
Per eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.
Python
Per scoprire come installare e utilizzare la libreria client per IAM, consulta Librerie client IAM. Per saperne di più, consulta la documentazione di riferimento dell'API IAM Python.
Per eseguire l'autenticazione in IAM, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Prima di iniziare.
REST
Il metodo
serviceAccounts.delete
elimina un account di servizio.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: il tuo ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-project.SA_ID: l'ID del tuo account di servizio. Può trattarsi dell'indirizzo email del account di servizio nel formatoSA_NAME@PROJECT_ID.iam.gserviceaccount.como dell'ID numerico univoco del service account.
Metodo HTTP e URL:
DELETE https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID
Per inviare la richiesta, espandi una di queste opzioni:
In caso di esito positivo, il corpo della risposta sarà vuoto.
Annullare l'eliminazione di un account di servizio
In alcuni casi, puoi utilizzare il comando undelete per annullare l'eliminazione di un account di servizio. In genere puoi annullare l'eliminazione di un account di servizio eliminato se soddisfa questi
criteri:
Il account di servizio è stato eliminato meno di 30 giorni fa.
Dopo 30 giorni, IAM rimuove definitivamente il service account. Google Cloud Non è possibile recuperare ilaccount di serviziot dopo la rimozione definitiva, anche se invii una richiesta di assistenza.
Non esiste un account di servizio con lo stesso nome di quello eliminato.
Ad esempio, supponiamo di eliminare accidentalmente il account di servizio
my-service-account@project-id.iam.gserviceaccount.com. Hai ancora bisogno di un account di servizio con quel nome, quindi ne crei uno nuovo con lo stesso nome,my-service-account@project-id.iam.gserviceaccount.com.Il nuovo account di servizio non eredita le autorizzazioni del account di servizio eliminato. In effetti, è completamente separato dal account di servizio eliminato. Tuttavia, non puoi annullare l'eliminazione del account di servizio originale perché il nuovoaccount di serviziot ha lo stesso nome.
Per risolvere il problema, elimina il nuovo account di servizio, quindi prova ad annullare l'eliminazione del account di servizio originale.
Se non riesci ad annullare l'eliminazione del account di servizio, puoi crearne uno nuovo con lo stesso nome, revocare tutti i ruoli delaccount di serviziot eliminato e concedere gli stessi ruoli al nuovoaccount di serviziot. Per maggiori dettagli, consulta Policy con entità eliminate.
Trovare l'ID numerico di un account di servizio eliminato
Quando annulli l'eliminazione di un account di servizio, devi fornire il relativo ID numerico. L'ID numerico è un numero di 21 cifre, ad esempio 123456789012345678901, che identifica in modo univoco il account di servizio. Ad esempio, se elimini un account di servizio e poi ne crei uno nuovo con lo stesso nome, il service account originale e quello nuovo avranno ID numerici diversi.
Se sai che un'associazione in una policy di autorizzazione include il service account eliminato, puoi recuperare la policy di autorizzazione, quindi trovare l'ID numerico nella policy di autorizzazione. L'ID numerico viene aggiunto al nome del account di servizio eliminato. Ad esempio, in questa policy di autorizzazione, l'ID numerico per il
account di serviziot eliminato è 123456789012345678901:
{ "version": 1, "etag": "BwUjMhCsNvY=", "bindings": [ { "members": [ "deleted:serviceAccount:my-service-account@project-id.iam.gserviceaccount.com?uid=123456789012345678901" ], "role": "roles/iam.serviceAccountUser" }, ] }
Gli ID numerici vengono aggiunti solo ai nomi delle entità eliminate.
In alternativa, puoi cercare nei log di controllo l'operazione DeleteServiceAccount
che ha eliminato ilaccount di serviziot:
Nella console Google Cloud , vai alla pagina Esplora log.
Nell'editor di query, inserisci la seguente query, sostituendo
SERVICE_ACCOUNT_EMAILcon l'indirizzo email del tuo account di servizio (ad esempio,my-service-account@project-id.iam.gserviceaccount.com):resource.type="service_account" resource.labels.email_id="SERVICE_ACCOUNT_EMAIL" "DeleteServiceAccount"
Se il account di servizio è stato eliminato più di un'ora fa, fai clic su Ultima ora, seleziona un periodo di tempo più lungo dall'elenco a discesa, poi fai clic su Applica.
Fai clic su Esegui query. Esplora log mostra le operazioni
DeleteServiceAccountche hanno interessato i service account con il nome specificato.Trova e annota l'ID numerico del account di servizio eliminato in uno dei seguenti modi:
- Se i risultati di ricerca includono una sola operazione
DeleteServiceAccount, trova l'ID numerico nel campo ID univoco del riquadro Campi log.

Se i risultati di ricerca mostrano più di un log, procedi nel seguente modo:
Trova la voce di log corretta. Per trovare la voce di log corretta, fai clic sulla freccia di espansione accanto a una voce di log. Esamina i dettagli della voce di log e determina se la voce di log mostra l'operazione che vuoi annullare. Ripeti questa procedura finché non trovi la voce di log corretta.
Nella voce di log corretta, individua l'ID numerico dell'account di servizio. Per individuare l'ID numerico, espandi il campo
protoPayloaddella voce di log, quindi individua il camporesourceName.

L'ID numerico è tutto ciò che segue
serviceAccountsnel camporesourceName.
- Se i risultati di ricerca includono una sola operazione
Annulla l'eliminazione del account di servizio in base all'ID numerico
Dopo aver trovato l'ID numerico del account di servizio eliminato, puoi provare ad annullarne l'eliminazione.
gcloud
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
-
Esegui il comando
gcloud beta iam service-accounts undeleteper annullare l'eliminazione di un account di servizio.Comando:
gcloud beta iam service-accounts undelete ACCOUNT_ID
Output:
restoredAccount: email: SA_NAME@PROJECT_ID.iam.gserviceaccount.com etag: BwWWE7zpApg= name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com oauth2ClientId: '123456789012345678901' projectId: PROJECT_ID uniqueId: 'ACCOUNT_ID'
REST
Il metodo
serviceAccounts.undelete
ripristina un account di servizio eliminato.
Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
PROJECT_ID: il tuo ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-project.SA_NUMERIC_ID: l'ID numerico univoco del account di servizio.
Metodo HTTP e URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NUMERIC_ID:undelete
Per inviare la richiesta, espandi una di queste opzioni:
Se l'account può essere ripristinato, ricevi un codice di risposta 200 OK
con i dettagli sul account di servizio ripristinato, ad esempio:
{
"restoredAccount": {
"name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com",
"projectId": "my-project",
"uniqueId": "123456789012345678901",
"email": "my-service-account@my-project.iam.gserviceaccount.com",
"displayName": "My service account",
"etag": "BwUp3rVlzes=",
"description": "A service account for running jobs in my project",
"oauth2ClientId": "987654321098765432109"
}
}
Passaggi successivi
- Scopri come elencare e modificare i service account.
- Esamina la procedura per concedere ruoli IAM a tutti i tipi di entità, inclusi i service account.
- Scopri come collegare i service account alle risorse.
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 senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
Inizia senza costi