Le applicazioni App Engine richiedono un service account per accedere ad altri servizi Google Cloud ed eseguire attività.
Esistono due tipi di service account in App Engine e qualsiasi account di servizio nel tuo progetto Cloud può essere assegnato per agire come account di servizio predefinito a livello di app o per versione:
Service account predefinito a livello di app: questo account di servizio viene utilizzato per tutti i servizi di cui è stato 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 il service account predefinito creato automaticamente che viene creato quando esegui il deployment iniziale di un servizio nel tuo progetto Cloud. Ad esempio, il service account predefinito di App Engine (
PROJECT_ID@appspot.gserviceaccount.com).Service account 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 funga da identità della versione. Ad esempio, se una versione richiede autorizzazioni diverse dal 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 a livello di app corrente, esegui il comando gcloud app describe.
Per visualizzare il 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_IDcon l'ID della versione.SERVICE_NAMEcon 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 account di servizio specifico della 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, il account di servizio predefinito a livello di app è il account di servizio PROJECT_ID@appspot.gserviceaccount.com creato automaticamente. Puoi assegnare un altro service account da utilizzare come account di servizio predefinito a livello di app utilizzando Google Cloud CLI, la consoleGoogle Cloud o l'API Admin.
Specifica un account di servizio predefinito a livello di app durante la creazione dell'app
Durante il processo di creazione iniziale dell'applicazione App Engine, puoi scegliere di assegnare un account di servizio che hai creato o utilizzare il account di servizio PROJECT_ID@appspot.gserviceaccount.com creato automaticamente come predefinito.
Per creare l'applicazione App Engine e assegnare un account di servizio predefinito a livello di app, puoi utilizzare uno dei seguenti metodi:
gcloud
Esegui il comando gcloud app create:
gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci:
SERVICE_ACCOUNT_NAMEcon il nome del account di servizio che hai creato.PROJECT_IDcon l'ID del progetto Google Cloud in cui vuoi assegnare il account di servizio.
Console
Vai alla pagina App Engine:
Crea un progetto Google Cloud .
Nella sezione Crea app, seleziona un account di servizio da Identità e accesso API.
Aggiorna il account di servizio predefinito a livello di app per la tua app
Per aggiornare il account di servizio predefinito a livello di app per la tua applicazione, puoi utilizzare uno dei seguenti metodi per assegnare un nuovoaccount di serviziot:
gcloud
Esegui il comando gcloud app update.
gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci:
SERVICE_ACCOUNT_NAMEcon il nome del account di servizio che hai creato.PROJECT_IDcon l'ID del progetto Google Cloud in cui vuoi assegnare il account di servizio.
Ogni nuova versione che implementi in seguito utilizza il nuovo service account predefinito a livello di app, a meno che tu 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 da Seleziona un service account e fai clic su Salva.
Verrà visualizzata la scheda Impostazioni applicazione, dove potrai visualizzare l'indirizzo email del account di servizio predefinito a livello di app aggiornato. Esempio:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.Ogni nuova versione che implementi in seguito utilizza il nuovo service account predefinito a livello di app, a meno che tu 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 di nuove versioni. L'utilizzo di un account di servizio specifico per la versione ti consente di concedere privilegi diversi a ogni versione dell'applicazione, in base alle attività specifiche che svolge, ed evitare di concedere più privilegi del necessario.
Devi disporre di un account di servizio esistente prima di eseguire il deployment dell'applicazione. Il account di servizio specifico per la versione deve trovarsi nello stesso progetto in cui esegui il deployment dell'applicazione.
Dopo il 15 maggio 2024, Artifact Registry ospita le immagini per il dominio gcr.io nei progettiGoogle Cloud senza precedente utilizzo di Container Registry. Se esegui il deployment di un'applicazione esistente in un nuovo progetto creato dopo questa data, il account di servizio potrebbe non disporre delle autorizzazioni necessarie per eseguire il deployment dell'app. Per concedere le autorizzazioni necessarie, consulta Deployment su App Engine.
Imposta 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_NAMEcon il nome del account di servizio che hai creato.PROJECT_IDcon l'ID del progetto Google Cloud in cui vuoi assegnare il account di servizio. Il 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 account di servizio aggiungendo l'elemento
service_account:
service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Sostituisci:
SERVICE_ACCOUNT_NAMEcon il nome del account di servizio che hai creato.PROJECT_IDcon l'ID del progetto Google Cloud in cui vuoi assegnare il account di servizio. Il account di servizio specifico per la versione deve trovarsi nello stesso progetto in cui esegui il deployment dell'applicazione.
appengine-web.xml
Se utilizzi i runtime Java e includi i servizi in bundle legacy di App Engine,
specifica l'account di servizio aggiungendo l'elemento
<service-account>
nel file appengine-web.xml:
<service-account>SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com</service-account>
Sostituisci:
SERVICE_ACCOUNT_NAMEcon il nome del account di servizio che hai creato.PROJECT_IDcon l'ID del progetto Google Cloud in cui vuoi assegnare il account di servizio. Il 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
Il account di servizio predefinito di App Engine viene creato automaticamente quando utilizzi App Engine.
A seconda della configurazione della policy dell'organizzazione, al service account predefinito potrebbe
essere assegnato automaticamente il ruolo Editor nel
progetto. Ti consigliamo vivamente di disattivare la concessione automatica dei ruoli
forzando l'applicazione del vincolo iam.automaticIamGrantsForDefaultServiceAccounts della policy
dell'organizzazione. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo
vincolo viene imposto per impostazione predefinita.
Se disattivi la concessione automatica dei ruoli, devi decidere quali ruoli concedere ai service account predefiniti, quindi concedere personalmente questi ruoli.
Se il service account predefinito dispone già del ruolo Editor, ti consigliamo di sostituire il ruolo Editor con ruoli meno permissivi.Per modificare in sicurezza i ruoli del service account, utilizza Policy Simulator per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.
Per scoprire come concedere ruoli a service account e altre entità, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Dopo il 15 maggio 2024, Artifact Registry ospita le immagini per il dominio gcr.io nei progettiGoogle Cloud senza precedente utilizzo di Container Registry. Se esegui il deployment di un'applicazione esistente in un nuovo progetto creato dopo questa data, il account di servizio potrebbe non disporre delle autorizzazioni necessarie per eseguire il deployment dell'app. Per concedere le autorizzazioni necessarie, consulta Deployment su App Engine.
Per modificare le autorizzazioni, eliminare e ripristinare i service account, vedi Creazione e gestione dei service account.