Le applicazioni App Engine richiedono un account di servizio per accedere ad altri servizi Google Cloud ed eseguire attività.
In App Engine esistono due tipi di account di servizio e qualsiasi account di servizio nel tuo progetto Cloud può essere assegnato per fungere da account di servizio predefinito a livello di app o per versione:
Account di servizio predefinito a livello di app: questo account di servizio viene utilizzato per tutti i servizi di cui hai eseguito il deployment quando non configuri un "account di servizio per versione". Puoi scegliere di assegnare un account di servizio che hai creato o utilizzare l'account di servizio predefinito creato automaticamente che viene creato quando esegui inizialmente il deployment di un servizio nel tuo progetto Cloud. Ad esempio, il service account predefinito di App Engine (
PROJECT_ID@appspot.gserviceaccount.com
).Account di servizio per versione: un account di servizio configurato come identità per una versione specifica del servizio di cui è stato eseguito il deployment. Quando esegui il deployment di una versione esistente o di una nuova versione, puoi specificare un account di servizio che fungerà da identità della versione. Ad esempio, se una versione richiede autorizzazioni diverse dall'account di servizio predefinito a livello di app, puoi assegnare un account di servizio specifico per quella versione.
Visualizzare gli account di servizio configurati
Per visualizzare l'account di servizio predefinito corrente a livello di app, esegui il comando gcloud app describe
.
Per visualizzare l'account di servizio utilizzato da una versione di cui è stato eseguito il deployment:
gcloud
Esegui il comando gcloud app versions describe
:
gcloud app versions describe VERSION_ID --service=SERVICE_NAME
Sostituisci:
VERSION_ID
con l'ID della versione.SERVICE_NAME
con il nome del servizio che hai creato.
Console
- Vai alla scheda Versioni di App Engine nella console. Vai a Versioni
- Individua l'indirizzo email del tuo account di servizio specifico per la versione di App Engine. Esempio:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Assegna un account di servizio predefinito a livello di app
Per impostazione predefinita, l'account di servizio predefinito a livello di app è l'account di servizio creato automaticamente
PROJECT_ID@appspot.gserviceaccount.com
. Puoi assegnare un altro account di servizio da utilizzare come account di servizio predefinito a livello di app utilizzando Google Cloud CLI, la console Google Cloud o l'API Admin.
Specifica un account di servizio predefinito a livello di app durante la creazione dell'app
Durante la procedura di creazione iniziale dell'applicazione App Engine,
puoi scegliere di assegnare un account di servizio che hai
creato o utilizzare l'account di servizio
PROJECT_ID@appspot.gserviceaccount.com
creato automaticamente come predefinito.
Per creare un'applicazione App Engine e assegnare un account di servizio predefinito a livello di app, puoi utilizzare una delle seguenti opzioni:
gcloud
Esegui il comando gcloud app create
:
gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci:
SERVICE_ACCOUNT_NAME
con il nome dell'account di servizio che hai creato.PROJECT_ID
con l'ID del progetto Google Cloud in cui vuoi assegnare l'account di servizio.
Console
Vai alla pagina App Engine:
Crea un progetto Google Cloud.
Nella sezione Crea app, seleziona un account di servizio in Identità e accesso API.
Aggiornare l'account di servizio predefinito a livello di app per l'app
Per aggiornare l'account di servizio predefinito a livello di app per la tua applicazione, puoi utilizzare uno dei seguenti metodi per assegnare un nuovo account di servizio:
gcloud
Esegui il comando gcloud app update
.
gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci:
SERVICE_ACCOUNT_NAME
con il nome dell'account di servizio che hai creato.PROJECT_ID
con l'ID del progetto Google Cloud in cui vuoi assegnare l'account di servizio.
Ogni nuova versione di cui esegui il deployment in seguito utilizzerà il nuovo account di servizio predefinito a livello di app, a meno che non assegni esplicitamente un account di servizio specifico per la versione.
Console
Vai alla scheda Impostazioni applicazione di App Engine nella console e fai clic su Modifica impostazioni applicazione.
Scegli un account di servizio predefinito a livello di app in Seleziona un account di servizio e fai clic su Salva.
Verrà visualizzata la scheda Impostazioni applicazione, in cui potrai visualizzare l'indirizzo email dell'account di servizio predefinito aggiornato a livello di app. Esempio:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
.Ogni nuova versione di cui esegui il deployment in seguito utilizzerà il nuovo account di servizio predefinito a livello di app, a meno che non assegni esplicitamente un account di servizio specifico per la versione.
Esegui il deployment con un account di servizio specifico per la versione
Puoi impostare un account di servizio specifico per la versione solo durante il deployment delle nuove versioni. L'utilizzo di un account di servizio specifico per la versione ti consente di concedere diversi privilegi a ogni versione dell'applicazione, in base alle attività specifiche che esegue, e di evitare di concedere più privilegi del necessario.
Devi disporre di un account servizio esistente prima di eseguire il deployment dell'applicazione. L'account di servizio specifico per la versione deve trovarsi nello stesso progetto in cui esegui il deployment dell'applicazione.
Impostare un account di servizio specifico per la versione
gcloud
Esegui il comando gcloud app deploy
:
gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci:
SERVICE_ACCOUNT_NAME
con il nome dell'account di servizio che hai creato.PROJECT_ID
con l'ID del progetto Google Cloud in cui vuoi assegnare l'account di servizio. L'account di servizio specifico per la versione deve trovarsi nello stesso progetto in cui esegui il deployment dell'applicazione.
app.yaml
Nel
file app.yaml
, specifica il tuo account di servizio aggiungendo l'elemento
service_account
:
service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci:
SERVICE_ACCOUNT_NAME
con il nome dell'account di servizio che hai creato.PROJECT_ID
con l'ID del progetto Google Cloud in cui vuoi assegnare l'account di servizio. L'account di servizio specifico per la versione deve trovarsi nello stesso progetto in cui esegui il deployment dell'applicazione.
Service account predefinito di App Engine
L'account di servizio App Engine predefinito viene creato automaticamente quando utilizzi App Engine.
A seconda della configurazione dei criteri dell'organizzazione, all'account di servizio predefinito potrebbe essere assegnato automaticamente il ruolo Editor nel progetto. Ti consigliamo vivamente di disattivare la concessione automatica dei ruoli
applicando il vincolo iam.automaticIamGrantsForDefaultServiceAccounts
delle norme dell'organizzazione. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo vincolo viene applicato per impostazione predefinita.
Se disattivi la concessione automatica dei ruoli, devi decidere quali ruoli concedere agli account di servizio predefiniti, quindi concedere personalmente questi ruoli.
Se l'account di servizio predefinito ha già il ruolo Editor, ti consigliamo di sostituire il ruolo Editor con ruoli meno permissivi. Per modificare in sicurezza i ruoli dell'account di servizio, utilizza Policy Simulator per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.
Per scoprire come concedere ruoli agli account di servizio e ad altri principali, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Per modificare le autorizzazioni, eliminare e ripristinare gli account di servizio, consulta Creare e gestire gli account di servizio.