Il Controllo dell'accesso determina chi è autorizzato ad accedere a servizi e risorse in un progetto Google Cloud. In App Engine esistono alcuni casi d'uso distinti per la configurazione del controllo dell'accesso:
Concedere ai membri del team l'accesso al tuo progetto Cloud in modo che possano configurare i servizi ed eseguire il deployment delle app.
Concedere l'accesso delle tue app ai servizi Google Cloud, come Cloud Storage. Tutti i servizi cloud richiedono l'autenticazione e l'autorizzazione per ogni chiamata API, incluse le chiamate dell'app App Engine.
Concedere agli utenti l'accesso alle risorse in un progetto 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, l'app potrebbe dover accedere ai dati che appartengono agli utenti.
Questa pagina fornisce una panoramica della configurazione del controllo dell'accesso in ogni caso d'uso.
Per informazioni di base su come Google Cloud Platform gestisce il controllo dell'accesso, consulta la panoramica di Identity and Access Management (IAM).
Concessione dell'accesso ai membri del team
Per consentire a uno sviluppatore di accedere al tuo progetto Cloud, crea una o entrambe le seguenti opzioni:
Un account utente, che è associato a un Account Google ed è destinato a rappresentare una persona specifica nel tuo progetto.
Un account utente può essere utilizzato per l'autenticazione dai seguenti strumenti:
- console Google Cloud
- interfaccia a riga di comando di Google Cloud
- IDE e creazione di strumenti che utilizzano l'interfaccia a riga di comando gcloud per testare ed eseguire il deployment delle app di App Engine
Un account di servizio, che ha lo scopo di rappresentare un'applicazione o un processo invece che una persona. Utilizza gli account di servizio nei processi di compilazione, test e deployment automatizzati, soprattutto se più sviluppatori possono eseguirli.
Un account di servizio può essere utilizzato per l'autenticazione dai seguenti strumenti:
- Interfaccia a riga di comando gcloud
- IDE e creazione di strumenti che utilizzano gli strumenti dell'interfaccia a riga di comando gcloud per testare ed eseguire il deployment delle app di App Engine
Creare un account utente
Apri la pagina IAM in Google Cloud Console.
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 consentono l'accesso alle funzionalità di App Engine.
Se l'utente deve 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 a Google Cloud Console e autorizzare l'interfaccia a riga di comando gcloud.
Puoi anche creare account utente da gcloud, l'API REST o le librerie client.
Creazione di un account di servizio
Apri la pagina Account di servizio in Google Cloud Console.
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 visualizzare per la schermata.
Fai clic su Crea.
Seleziona i ruoli che consentono 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 di account di servizio esistenti.
Facoltativamente, se devi utilizzare l'account di servizio all'esterno di Google Cloud, segui le istruzioni per creare una chiave dell'account di servizio.
Passaggi successivi
- Se utilizzi l'account di servizio nei processi di compilazione e deployment automatizzati, autorizza l'interfaccia a riga di comando gcloud con un account di servizio.
- Se utilizzi l'account di servizio con un IDE, segui le istruzioni fornite dall'IDE.
- Se devi utilizzare un'identità univoca per una versione della tua 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.
Concessione dell'accesso dell'app 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, le chiamate dall'app App Engine ai servizi nello stesso progetto sono autorizzate. Ecco come funziona il flusso predefinito:
Per avviare le chiamate a un servizio Cloud, l'app crea un oggetto client, che contiene le credenziali e altri dati necessari per interagire con il servizio. Se non specifichi credenziali nel costruttore del client, il client 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
- Per impostazione predefinita, l'ambiente dell'app contiene le credenziali dell'account di servizio predefinito di App Engine.
Questo account di servizio viene creato da Google quando crei un'app App Engine e dispone delle autorizzazioni complete per gestire e utilizzare tutti i servizi Cloud in un progetto GCP.
Puoi sostituire questo flusso predefinito eseguendo una delle seguenti operazioni:
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, potrebbe essere necessario trasmettere le credenziali manualmente.
- Archivia le tue credenziali in una posizione sicura come Firestore in modalità Datastore (Datastore) e recuperale in fase di esecuzione.
- Conservare le credenziali nel codice, ma criptarle con un archivio chiavi, come Cloud KMS.
Per scoprire i vantaggi di ciascun approccio, consulta 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 le 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 mantenendo privati i dati, come nomi utente e password.
Delega dell'autorità a livello di dominio Google Workspace
Se hai un dominio Google Workspace (ex G Suite), un amministratore del dominio può autorizzare un'applicazione ad accedere ai dati degli utenti 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 utilizza 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 è detta "delega a livello di dominio" a un account di servizio. Viene comunque utilizzato OAuth 2.0 e un amministratore di dominio Google Workspace deve autorizzare l'autorità a livello di dominio all'account di servizio.
Specifica di un account di servizio
App Engine ti consente di utilizzare due tipi di account di servizio:
- L'account di servizio predefinito di App Engine viene creato automaticamente con il ruolo Editor ed è l'identità predefinita per tutte le versioni dell'app App Engine, se non è specificato un account di servizio gestito dall'utente. Ti consigliamo di modificare le autorizzazioni predefinite per il tuo account di servizio predefinito scegliendo i ruoli che meglio rappresentano le esigenze di accesso della tua applicazione App Engine.
- L'account di servizio gestito dall'utente è un account di servizio che crei in Identity and Access Management (IAM). Puoi specificare un account di servizio gestito dall'utente per una versione, che verrà utilizzata per accedere ad altri servizi di App Engine ed eseguire le attività per quella versione.