Il controllo degli accessi 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 degli accessi:
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 all'app 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 Cloud. Anche se questo caso d'uso non è frequente, in alcuni casi l'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 sulla configurazione del controllo degli accessi in ogni caso d'uso.
Per informazioni di base su come Google Cloud Platform gestisce il controllo degli accessi, 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 cloud, crea uno o entrambi i seguenti elementi:
Un account utente, che è associato a un Account Google e che rappresenta una persona specifica nel tuo progetto.
Un account utente può essere utilizzato per l'autenticazione tramite i seguenti strumenti:
- Google Cloud Console
- Interfaccia a riga di comando di Google Cloud
- IDE e strumenti di sviluppo che utilizzano l'interfaccia a riga di comando gcloud per testare ed eseguire il deployment delle app di App Engine
Un account di servizio, destinato a rappresentare un'applicazione o un processo invece di una persona. Utilizza gli account di servizio nei processi automatizzati di creazione, test e deployment, soprattutto se più sviluppatori possono eseguire questi processi.
Un account di servizio può essere utilizzato per l'autenticazione mediante i seguenti strumenti:
- interfaccia a riga di comando gcloud
- IDE e strumenti di sviluppo che utilizzano gli strumenti dell'interfaccia a riga di comando gcloud per testare ed eseguire il deployment delle app di App Engine
Creazione di un account utente
Apri la pagina IAM in 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 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.
Ora l'utente può accedere a Google Cloud Console e autorizzare l'interfaccia a riga di comando gcloud.
Puoi creare account utente anche da gcloud, dall'API REST o dalle librerie client.
Creazione di un account di servizio
Apri la pagina Account di servizio in 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 utilizzare per la visualizzazione.
Fai clic su Crea.
Seleziona i ruoli che concedono l'accesso alle funzionalità di App Engine.
Se l'account di servizio richiede l'accesso anche ad altri servizi cloud, seleziona 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 anche specificare 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 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 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 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.
Concessione dell'accesso dell'app ai servizi Cloud
Ogni chiamata a un servizio Cloud deve essere autenticata e autorizzata, comprese le chiamate da un'app di 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 chiamate a un servizio Cloud, la tua app crea un oggetto client che contiene le credenziali e altri dati necessari per interagire 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
- Per impostazione predefinita, l'ambiente dell'app contiene credenziali dell'account di servizio App Engine predefinito.
Questo account di servizio viene creato da Google quando crei un'app di App Engine e dispone di autorizzazioni complete per gestire e utilizzare tutti i servizi Cloud in un progetto GCP.
Puoi ignorare questo flusso predefinito in uno dei seguenti modi:
Imposta la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
. Se è impostata, i servizi Cloud utilizzano le credenziali specificate dalla variabile anziché l'account di servizio predefinito.Specifica le credenziali quando crei l'istanza dell'oggetto
Client
per un servizio Cloud. Ad esempio, se la tua app chiama un servizio Cloud in un progetto diverso, potresti dover trasmettere le credenziali manualmente.
- Archivia le credenziali in una posizione sicura come Datastore e recuperale in fase di runtime.
- Mantieni le credenziali nel 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.
Concessione degli utenti di 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 applicazione, utilizza OAuth 2.0 per le applicazioni server web per condividere dati specifici mantenendo altri dati privati, come nomi utente e password.
Delega dell'autorità a livello di dominio Google Workspace
Se hai un dominio Google Workspace (precedentemente noto come 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 utilizzerà un account di servizio per accedere all'API di Google Calendar per conto degli utenti.
L'autorizzazione di un account di servizio per l'accesso ai dati per conto degli utenti di un dominio è a volte definita "delega a livello di dominio dell'autorità" a un account di servizio. Tuttavia, utilizza OAuth 2.0 e richiede un amministratore di dominio di Google Workspace per autorizzare l'autorizzazione a livello di dominio nell'account di servizio.
Specifica di un account di servizio
App Engine consente di utilizzare due tipi di account di servizio:
- L'account di servizio predefinito di App Engine viene creato automaticamente con il ruolo di Editor per impostazione predefinita ed è l'identità predefinita per tutte le versioni dell'app App Engine se un account di servizio gestito dall'utente non è specificato. Ti consigliamo di modificare le autorizzazioni predefinite per l'account di servizio predefinito in base ai ruoli che meglio rappresentano le esigenze di accesso della tua applicazione App Engine.
- L'account di servizio gestito dall'utente (Anteprima) è un account di servizio creato in Identity and Access Management (IAM). Puoi specificare un account di servizio gestito dall'utente per una versione, che verrà utilizzato per accedere agli altri servizi di App Engine ed eseguire attività per quella versione.