Il controllo dell'accesso determina chi dispone dell'autorizzazione per accedere a servizi e risorse in un progetto Google Cloud. In App Engine, esistono alcuni casi d'uso distinti per configurare controllo dell'accesso'accesso:
Concedere ai membri del team l'accesso al tuo progetto Google Cloud in modo che possano configurare i servizi ed eseguire il deployment delle app.
Concedere alla tua app l'accesso ai servizi Google Cloud come Cloud Storage. Tutti i servizi Cloud richiedono autenticazione e autorizzazione per ogni chiamata API, comprese le chiamate dall'app App Engine.
Concedere agli utenti l'accesso alle risorse in un progetto Google Cloud. Sebbene questo caso d'uso non sia comune, potrebbero verificarsi casi in cui la tua app deve richiedere l'accesso a una risorsa Cloud per conto di un utente. Ad esempio, la tua app potrebbe dover accedere a dati appartenenti ai tuoi utenti.
Questa pagina fornisce una panoramica della configurazione del controllo dell'accesso in ogni caso d'uso.
Per informazioni di base su come la Google Cloud Platform gestisce il controllo dell'accesso#39;accesso, consulta la panoramica di Identity and Access Management (IAM).
Concessione dell'accesso ai membri del team
Per concedere a uno sviluppatore l'accesso al tuo progetto Google Cloud, crea uno degli elementi seguenti o entrambi:
Un account utente, associato a un Account Google e destinato a rappresentare una persona specifica nel tuo progetto.
È possibile utilizzare un account utente per l'autenticazione dai seguenti strumenti:
- Console Google Cloud
- Google Cloud CLI
- IDE e strumenti di creazione che usano gcloud CLI per testare ed eseguire il deployment delle app App Engine
Un account di servizio, destinato a rappresentare un'applicazione o un processo anziché una persona. Utilizza gli account di servizio nei processi automatizzati di creazione, test e deployment, soprattutto se più sviluppatori possono eseguire questi processi.
È possibile utilizzare un account di servizio per l'autenticazione dai seguenti strumenti:
- Interfaccia a riga di comando gcloud
- IDE e strumenti di creazione che usano gli strumenti gcloud CLI per testare le app App Engine e eseguirne il deployment
Creazione di un account utente
Apri la pagina IAM nella console Google Cloud.
Fai clic su Seleziona un progetto, scegli un progetto e fai clic su Apri.
Fai clic su Aggiungi.
Inserisci un indirizzo email.
Seleziona i ruoli che concedono l'accesso alle funzionalità di App Engine.
Se l'utente ha bisogno di accedere anche ad altri servizi Cloud, seleziona i ruoli che concedono l'accesso ad altri servizi Cloud.
Fai clic su Salva.
L'utente può ora accedere alla console Google Cloud e autorizzare gcloud CLI.
Puoi anche creare account utente da gcloud, dall'API REST o dalle librerie client.
Creazione di un account di servizio
Apri la pagina Account di servizio nella console Google Cloud.
Seleziona il progetto e fai clic su Apri.
Fai clic su Crea account di servizio.
Inserisci un nome per l'account di servizio. Deve essere un nome facile da usare per il display.
Fai clic su Crea.
Seleziona i ruoli che concedono l'accesso alle funzionalità di App Engine.
Se l'account di servizio deve accedere anche ad altri servizi Cloud, seleziona i ruoli che concedono l'accesso ad altri servizi Cloud.
Fai clic su Continua.
(Facoltativo) Specifica gli account utente che possono gestire l'account di servizio. Puoi inoltre specificare gli account utente che possono utilizzare l'account di servizio per accedere indirettamente a tutte le risorse a cui ha accesso l'account di servizio.
Fai clic su Salva.
Viene visualizzato un elenco degli account di servizio esistenti.
Facoltativamente, se devi utilizzare il tuo account di servizio al di fuori di Google Cloud, segui le istruzioni per creare una chiave dell'account di servizio.
Passaggi successivi
- Se utilizzi l'account di servizio nei processi automatizzati di creazione e deployment, autorizza gcloud CLI con un account di servizio.
- Se utilizzi l'account di servizio con un IDE, segui le istruzioni fornite dall'IDE.
- Se hai bisogno di utilizzare un'identità univoca per una versione dell'app App Engine quando accedi ad altri servizi Google Cloud o esegui attività, puoi specificare un account di servizio gestito dall'utente in App Engine.
Concedere alla tua app l'accesso ai servizi Cloud
Ogni chiamata a un servizio Cloud deve essere autenticata e autorizzata, incluse le chiamate da un'app App Engine ad altri servizi Cloud come Cloud Storage.
Per impostazione predefinita, sono autorizzate le chiamate dall'app App Engine ai servizi nello stesso progetto. Ecco come funziona il flusso predefinito:
Per avviare chiamate a un servizio Cloud, la tua app crea un oggetto client, che contiene le credenziali e altri dati necessari per far interagire l'app con il servizio. Se non specifichi le credenziali nel costruttore del client, quest'ultimo cerca le credenziali nell'ambiente dell'app.
Ecco un esempio di creazione di un client per Cloud Storage:
Go
Java
Node.js
PHP
Python
Ruby
C#
- Per impostazione predefinita, l'ambiente dell'app contiene le credenziali dell'account di servizio App Engine predefinito.
Questo account di servizio viene creato da Google quando crei un'app App Engine e ti vengono concesse le autorizzazioni complete per gestire e utilizzare tutti i servizi Cloud in un progetto Google Cloud.
Puoi ignorare questo flusso predefinito in uno dei seguenti modi:
Imposta la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
. Se questa variabile è impostata, i servizi Cloud utilizzano le credenziali specificate dalla variabile anziché l'account di servizio predefinito.Specifica le credenziali quando crei un'istanza dell'oggetto
Client
per un servizio Cloud. Ad esempio, se la tua app chiama un servizio Cloud in un altro progetto, potresti dover passare manualmente le credenziali.
- Archivia le tue credenziali in una posizione sicura, ad esempio Firestore, in modalità Datastore (Datastore) e recuperale in fase di runtime.
- Conserva le credenziali nel tuo codice, ma criptale con un archivio chiavi, come Cloud KMS.
Per scoprire i vantaggi di ciascun approccio, vedi Scegliere una soluzione di gestione dei secret.
Concedere agli utenti l'accesso alle risorse Cloud
Se vuoi che la tua app legga i dati utente da un altro servizio Google, devi configurare OAuth 2.0 per applicazioni server web. Ad esempio, se vuoi estrarre i dati di un utente da Google Drive e trasferirli nella tua app, utilizza OAuth 2.0 per le applicazioni server web per condividere dati specifici e mantenere privati altri dati, come nomi utente e password.
Delega dell'autorità a livello di dominio di Google Workspace
Se hai un dominio Google Workspace (in precedenza G Suite), un amministratore del dominio può autorizzare un'applicazione ad accedere ai dati utente per conto degli utenti nel dominio Google Workspace. Ad esempio, un'applicazione che utilizza l'API Google Calendar per aggiungere eventi ai calendari di tutti gli utenti di un dominio Google Workspace userebbe un account di servizio per accedere all'API Google Calendar per conto degli utenti.
L'autorizzazione di un account di servizio ad accedere ai dati per conto degli utenti di un dominio è a volte definita "delega dell'autorità a livello di dominio" a un account di servizio. Per farlo, viene comunque utilizzato OAuth 2.0 e è necessario che un amministratore di dominio di Google Workspace autorizza l'autorità a livello di dominio all'account di servizio.
Specifica di un account di servizio
App Engine consente di utilizzare due tipi di account di servizio:
- 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 funga da identità di tale versione. Ad esempio, se una versione richiede autorizzazioni diverse da quelle dell'account di servizio predefinito a livello di app, puoi assegnare un account di servizio specifico per quella versione. Per ulteriori informazioni, consulta Configurare gli account di servizio App Engine.
Account di servizio predefinito a livello di app: se non configuri un account di servizio per versione, Google Cloud utilizza l'account di servizio predefinito a livello di app per tutti i servizi di cui hai eseguito il deployment. L'account di servizio predefinito a livello di app viene assegnato quando crei l'app. Per ulteriori informazioni, vedi Assegnare un account di servizio predefinito a livello di app.
Se non assegni un account di servizio predefinito a livello di app, Google Cloud utilizza l'account di servizio predefinito di App Engine (
PROJECT_ID@appspot.gserviceaccount.com
) creato automaticamente.A seconda della configurazione dei criteri dell'organizzazione, all'account di servizio predefinito potrebbe essere concesso automaticamente il ruolo Editor per il progetto. Ti consigliamo vivamente di disabilitare la concessione automatica del ruolo applicando il vincolo del criterio dell'organizzazione
iam.automaticIamGrantsForDefaultServiceAccounts
. Se hai creato la tua organizzazione dopo il 3 maggio 2024, questo vincolo viene applicato per impostazione predefinita.Se disabiliti la concessione automatica dei ruoli, devi decidere quali ruoli concedere agli account di servizio predefiniti e poi concedere personalmente questi ruoli.
Se l'account di servizio predefinito dispone già del ruolo Editor, ti consigliamo di sostituire il ruolo Editor con ruoli meno permissivi. Per modificare in modo sicuro i ruoli dell'account di servizio, utilizza il Simulatore di criteri per vedere l'impatto della modifica, quindi concedi e revoca i ruoli appropriati.