Configura gli account di servizio App Engine

Le applicazioni App Engine richiedono un account di servizio per accedere ad altri servizi Google Cloud ed eseguire attività.

Esistono due tipi di account di servizio in App Engine e qualsiasi account di servizio nel progetto Cloud può essere assegnato come account di servizio predefinito a livello di applicazione 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 il deployment iniziale di un servizio nel tuo progetto Cloud. Ad esempio, l'account di servizio 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 hai eseguito il deployment. Quando esegui il deployment di una versione esistente o di una nuova versione, puoi specificare un account di servizio che agisca come 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 a livello di app corrente, 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

  1. Vai alla scheda Versioni di App Engine nella console. Vai a Versioni
  2. Individua l'indirizzo email dell'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, l'account di servizio predefinito a livello di app è l'account di servizio PROJECT_ID@appspot.gserviceaccount.com creato automaticamente. Puoi assegnare un altro account di servizio che funga da 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 il processo iniziale di creazione dell'applicazione App Engine, puoi scegliere di assegnare un account di servizio creato o utilizzare quello creato automaticamente PROJECT_ID@appspot.gserviceaccount.com come account predefinito.

Per creare un'applicazione App Engine e assegnare un account di servizio predefinito a livello di applicazione, puoi utilizzare uno dei seguenti elementi:

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

  1. Vai alla pagina di App Engine:

    Vai ad App Engine

  2. Creare un progetto Google Cloud.

  3. Nella sezione Crea app, seleziona un account di servizio da 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 una delle seguenti opzioni 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 utilizza 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

  1. Vai alla scheda Impostazioni applicazione di App Engine nella console e fai clic su Modifica impostazioni applicazione.

    Vai a Impostazioni applicazione

  2. Scegli un account di servizio predefinito a livello di app da Seleziona un account di servizio e fai clic su Salva.

    Si aprirà la scheda Impostazioni applicazione, dove potrai visualizzare l'indirizzo email del tuo account di servizio predefinito a livello di applicazione aggiornato. Esempio: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

    Ogni nuova versione di cui esegui il deployment in seguito utilizza 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 della 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 consente di concedere privilegi diversi a ciascuna versione dell'applicazione, in base alle attività specifiche eseguite, ed evitare di concedere più privilegi del necessario.

Devi avere un account di servizio esistente prima di eseguire il deployment dell'applicazione.

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_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.

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.

appengine-web.xml

Se utilizzi i runtime Java e includi i servizi in bundle legacy di App Engine, specifica il tuo 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_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.

Account di servizio predefinito di App Engine

Per impostazione predefinita, l'account di servizio PROJECT_ID@appspot.gserviceaccount.com creato automaticamente dispone del ruolo Editor nel progetto. Se esegui il deployment della tua app App Engine utilizzando l'account di servizio PROJECT_ID@appspot.gserviceaccount.com creato automaticamente, l'app può accedere a tutte le risorse del progetto.

Per l'account di servizio PROJECT_ID@appspot.gserviceaccount.com creato automaticamente, se utilizzi un vincolo del criterio dell'organizzazione per impedire che il ruolo Editor predefinito venga concesso automaticamente, devi aggiornare i ruoli manualmente. I ruoli concessi all'account di servizio predefinito di App Engine devono consentire all'applicazione di accedere alle risorse richieste. Per scoprire come concedere ruoli ad account di servizio e altre entità, consulta Gestire l'accesso agli account di servizio.

Per modificare le autorizzazioni, eliminare e ripristinare gli account di servizio, consulta Creazione e gestione degli account di servizio.