GSP499
Panoramica
In questo lab, creerai un'applicazione web minima con Cloud Run, quindi esplorerai vari modi di utilizzare Identity-Aware Proxy (IAP) per limitare l'accesso all'applicazione e per fornire informazioni sull'identità utente. La tua app sarà in grado di:
- Visualizzare una pagina di benvenuto.
- Accedere alle informazioni sull'identità utente fornite tramite IAP.
- Utilizzare la verifica crittografica per prevenire lo spoofing delle informazioni dell'identità utente.
Obiettivi didattici
In questo lab imparerai a:
- Scrivere e fare il deployment di un semplice servizio Cloud Run utilizzando Python.
- Abilitare e disabilitare IAP per limitare l'accesso all'app.
- Trasferire le informazioni sull'identità utente da IAP alla tua app.
- Verificare le informazioni ricevute da IAP tramite crittografia per proteggerle dallo spoofing.
Prerequisiti
Una conoscenza di base del linguaggio di programmazione Python migliorerà la tua esperienza di apprendimento.
Questo lab riguarda specificamente Cloud Run e IAP. Concetti e blocchi di codice non pertinenti sono trattati solo superficialmente e sono forniti solo per operazioni di copia e incolla.
Introduzione a Identity-Aware Proxy
Spesso l'autenticazione degli utenti di un'app web è un'operazione necessaria e, in genere, richiede una programmazione speciale nell'app. Per le app Google Cloud puoi delegare queste responsabilità al servizio Identity-Aware Proxy. Se devi semplicemente limitare l'accesso a utenti selezionati, non sono necessarie modifiche all'applicazione. Se l'applicazione deve conoscere l'identità dell'utente (ad esempio per memorizzare le preferenze dell'utente sul lato server), Identity-Aware Proxy può fornirla tramite un codice dell'applicazione minimo.
Che cos'è Identity-Aware Proxy?
Identity-Aware Proxy (IAP) è un servizio di Google Cloud che intercetta le richieste web inviate alla tua applicazione, autentica l'utente che fa la richiesta utilizzando Google Identity Service e fa passare solo le richieste che provengono da un utente che hai autorizzato. Inoltre, può modificare le intestazioni della richiesta per includere informazioni sull'utente autenticato.
Configurazione e requisiti
Prima di fare clic sul pulsante Avvia lab
Leggi le seguenti istruzioni. I lab sono a tempo e non possono essere messi in pausa. Il timer si avvia quando fai clic su Inizia il lab e ti mostra per quanto tempo avrai a disposizione le risorse Google Cloud.
Con questo lab pratico avrai la possibilità di completare le attività in un ambiente cloud reale e non di simulazione o demo. Riceverai delle nuove credenziali temporanee che potrai utilizzare per accedere a Google Cloud per la durata del lab.
Per completare il lab, avrai bisogno di:
- Accesso a un browser internet standard (Chrome è il browser consigliato).
Nota: per eseguire questo lab, utilizza una finestra del browser in modalità di navigazione in incognito (consigliata) o privata. Ciò evita conflitti tra il tuo account personale e l'account studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
- È ora di completare il lab: ricorda che, una volta iniziato, non puoi metterlo in pausa.
Nota: utilizza solo l'account studente per questo lab. Se utilizzi un altro account Google Cloud, potrebbero essere addebitati costi su quell'account.
Come iniziare il lab e accedere alla console Google Cloud
-
Fai clic sul pulsante Inizia il lab. Se devi effettuare il pagamento per il lab, si aprirà una finestra di dialogo per permetterti di selezionare il metodo di pagamento.
A destra, trovi il riquadro Configurazione e accesso al lab con le seguenti informazioni:
- Il pulsante Apri console Google Cloud
- Le credenziali temporanee (nome utente e password) da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
Tieni presente che il timer del lab si trova nella parte superiore della pagina e mostra il tempo rimanente.
-
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra Incognito se utilizzi il browser Chrome).
Il lab avvia le risorse e apre un'altra scheda con la pagina di accesso.
Suggerimento: disponi le schede in finestre separate posizionate fianco a fianco.
Nota: se visualizzi la finestra di dialogo Scegli un account, fai clic su Usa un altro account.
-
Se necessario, copia il Nome utente di seguito e incollalo nella finestra di dialogo Accedi.
{{{user_0.username | "Username"}}}
Puoi trovare il Nome utente anche nel riquadro Configurazione e accesso al lab.
-
Fai clic su Avanti.
-
Copia la Password di seguito e incollala nella finestra di dialogo Ti diamo il benvenuto.
{{{user_0.password | "Password"}}}
Puoi trovare la Password anche nel riquadro Configurazione e accesso al lab.
-
Fai clic su Avanti.
Importante: devi utilizzare le credenziali fornite dal lab. Non utilizzare le credenziali del tuo account Google Cloud.
Nota: utilizzare il tuo account Google Cloud per questo lab potrebbe comportare addebiti aggiuntivi.
-
Fai clic nelle pagine successive:
- Accetta i termini e le condizioni.
- Non inserire opzioni di recupero o l'autenticazione a due fattori, perché si tratta di un account temporaneo.
- Non registrarti per le prove senza costi.
Dopo qualche istante, la console Google Cloud si apre in questa scheda.
Nota: per accedere ai prodotti e ai servizi Google Cloud, fai clic sul menu di navigazione o digita il nome del servizio o del prodotto nel campo Cerca.
Attiva Cloud Shell
Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud. Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
-
Fai clic su Attiva Cloud Shell
nella parte superiore della console Google Cloud.
-
Fai clic nelle seguenti finestre:
- Continua nella finestra delle informazioni di Cloud Shell.
- Autorizza Cloud Shell a utilizzare le tue credenziali per effettuare chiamate API Google Cloud.
Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo Project_ID, . L'output contiene una riga che dichiara il Project_ID per questa sessione:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento tramite tasto Tab.
- (Facoltativo) Puoi visualizzare il nome dell'account attivo con questo comando:
gcloud auth list
- Fai clic su Autorizza.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facoltativo) Puoi elencare l'ID progetto con questo comando:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: per la documentazione completa di gcloud, in Google Cloud, fai riferimento alla guida Panoramica dell'interfaccia a riga di comando gcloud.
Scarica il codice
Fai clic sull'area della riga di comando in Cloud Shell per digitare i comandi.
Scarica il codice da un bucket di archiviazione pubblico e poi passa alla cartella del codice:
gcloud storage cp gs://{{{project_0.project_id}}}-bucket/user-authentication-with-iap.zip .
unzip user-authentication-with-iap.zip
cd user-authentication-with-iap
Questa cartella contiene una sottocartella per ogni passaggio del lab. Dovrai passare alla cartella corretta per eseguire i singoli passaggi.
Attività 1: fai il deployment dell'applicazione e proteggila con IAP
Questo è un servizio Cloud Run scritto in Python che visualizza semplicemente una pagina di benvenuto "Hello World". Faremo il deployment e la testeremo, quindi ne limiteremo l'accesso utilizzando IAP.
Esamina il codice dell'applicazione
- Passa dalla cartella del progetto principale alla sottocartella
1-HelloWorld che contiene il codice da utilizzare in questo passaggio.
cd 1-HelloWorld
Il codice dell'applicazione è nel file main.py. Utilizza il framework web Flask per rispondere alle richieste web con i contenuti di un template. Il file del template si trova in templates/index.html e per questo passaggio contiene solo HTML normale. Un secondo file di template contiene uno schema essenziale di norme sulla privacy di esempio in templates/privacy.html.
È presente un altro file: requirements.txt, che elenca tutte le librerie Python non predefinite utilizzate dall'applicazione.
Puoi elencare ciascun file della shell utilizzando il comando cat, ad esempio:
cat main.py
Oppure puoi lanciare l'editor di codice di Cloud Shell facendo clic sull'icona Apri editor (icona con la matita) nella barra degli strumenti di Cloud Shell ed esaminare il codice in questo modo.
Per questo passaggio non è necessario modificare alcun file.
Fai il deployment su Cloud Run
- Fai il deployment dell'app su Cloud Run:
gcloud run deploy user-auth-lab --source . --allow-unauthenticated --region={{{ project_0.default_region | "REGION" }}}
- Se ti viene richiesto di abilitare l'API, inserisci Y per confermare. Se ti viene richiesto di creare un repository Artifact Registry per continuare, inserisci Y per confermare.
Il deployment viene completato in pochi minuti. Verrà visualizzato un messaggio con l'URL del servizio.
- Apri l'URL del servizio visualizzato in una nuova scheda del browser per visualizzare la pagina web. L'accesso non è ancora limitato.

Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Fai il deployment di un servizio Cloud Run
Limita l'accesso con IAP
-
Nel menu di navigazione (
) della console Google Cloud, fai clic su Sicurezza > Identity-Aware Proxy.
-
Fai clic su Abilita API.
-
Fai clic su Vai a Identity-Aware Proxy.
-
Fai clic sul pulsante di attivazione/disattivazione nella colonna IAP accanto a user-auth-lab per attivare IAP.
-
Fai clic su Attiva per confermare.
Verifica che IAP sia attivato
-
Apri una nuova scheda del browser e vai all'URL della tua app. Si aprirà una pagina Accedi con Google.
-
Accedi con le credenziali dell'account studente che hai utilizzato per accedere alla console.
Verrà visualizzata una schermata che ti nega l'accesso.
La tua app è correttamente protetta tramite IAP, ma non hai ancora autorizzato alcun account utente.
-
Torna alla pagina Identity-Aware Proxy nella console.
-
Seleziona la casella di controllo accanto al servizio Cloud Run user-auth-lab per aprire la barra laterale dei dettagli a destra.
-
Fai clic su Aggiungi entità.
-
In Nuove entità, inserisci il tuo indirizzo email studente.
-
Per Seleziona un ruolo, seleziona Cloud IAP > IAP-Secured Web App User.
-
Fai clic su Salva.
In fondo alla pagina viene visualizzato il messaggio "Policy aggiornata".
-
Torna alla tua app e ricarica la pagina. Poiché hai già fatto l'accesso con un account autorizzato, ora dovresti vedere la tua app web.
Nota:
affinché la modifica del ruolo abbia effetto, è necessario un minuto. Se nella pagina è visualizzato ancora il messaggio "Non hai l'autorizzazione di accesso", attendi un minuto e prova ad aggiornare la pagina.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Abilita e aggiungi una policy a IAP
Se visualizzi ancora la pagina di accesso negato, cancella il cookie di accesso IAP:
- Aggiungi
/_gcp_iap/clear_login_cookie alla fine dell'URL del servizio (ad esempio https://user-auth-lab-[random-hash].run.app/_gcp_iap/clear_login_cookie) e aprilo.
- Quando viene visualizzata la nuova pagina Accedi con Google, fai clic su Utilizza un altro account e reinserisci le credenziali studente.
Attività 2: accedi alle informazioni sull'identità utente
Quando un'app è protetta con IAP, può utilizzare le informazioni sull'identità che IAP fornisce nelle intestazioni delle richieste web che lascia passare. In questo passaggio, l'applicazione riceve l'indirizzo email dell'utente che ha eseguito l'accesso e un ID utente univoco assegnato dal servizio di identità Google (Google Identity Service) a quell'utente. I dati vengono mostrati all'utente nella pagina di benvenuto.
- In Cloud Shell, passa alla cartella per questo passaggio:
cd ~/user-authentication-with-iap/2-HelloUser
Fai il deployment su Cloud Run
- Fai il deployment dell'app su Cloud Run:
gcloud run deploy user-auth-lab --source . --region={{{ project_0.default_region | "REGION" }}}
- Se ti viene chiesto di continuare, digita Y per confermare.
Il deployment dovrebbe completarsi in pochi minuti. Mentre aspetti, puoi esaminare i file dell'applicazione descritti di seguito.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Accedi alle informazioni sull'identità utente.
Esamina i file dell'applicazione
- Visualizza il file dell'applicazione principale in Cloud Shell utilizzando il comando
cat:
cat main.py
- Esamina il file del modello per vedere come vengono visualizzati i dati utente:
cat templates/index.html
Questa cartella contiene lo stesso set di file che abbiamo visto nell'app precedente di cui hai fatto il deployment, 1-HelloWorld, ma due file sono stati cambiati: main.py e templates/index.html. Il programma è stato cambiato per recuperare le informazioni utente che IAP fornisce nelle intestazioni delle richieste: ora il modello visualizza quei dati.
In main.py sono presenti due righe che recuperano i dati di identità forniti da IAP:
user_email = request.headers.get('X-Goog-Authenticated-User-Email')
user_id = request.headers.get('X-Goog-Authenticated-User-ID')
Le intestazioni X-Goog-Authenticated-User- sono fornite da IAP; i nomi sono senza distinzione tra maiuscole e minuscole, pertanto possono essere forniti a caratteri tutti minuscoli o tutti maiuscoli, se preferibile. L'istruzione render_template ora include quei valori, che possono quindi essere visualizzati:
page = render_template('index.html', email=user_email, id=user_id)
Il modello index.html può visualizzare quei valori racchiudendo i nomi tra doppie parentesi graffe:
Hello, {{ email }}! Your persistent ID is {{ id }}.
Come puoi vedere, i dati forniti hanno come prefisso accounts.google.com, per indicare da dove provengono le informazioni. La tua applicazione può rimuovere tutto fino ai due punti inclusi per prendere i valori non elaborati, se opportuno.
Testa l'app aggiornata
- Recupera l'URL per la tua applicazione:
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Apri l'URL in una nuova scheda del browser.
- Se necessario, aggiorna la pagina per visualizzare il tuo indirizzo email e l'ID permanente.
Disattiva IAP
Che cosa succede all'app se IAP viene disattivato o ignorato? Disattiva IAP per scoprirlo.
- Nel menu di navigazione della finestra della console Cloud, fai clic su Sicurezza > Identity-Aware Proxy.
- Fai clic sull'opzione di attivazione/disattivazione di IAP accanto al tuo servizio Cloud Run (ad es.
user-auth-lab) per disattivare IAP.
- Fai clic su Consenti accesso pubblico.
- Aggiorna la pagina web dell'applicazione. Dovresti vedere la stessa pagina ma senza alcuna informazione utente.
Ora che l'applicazione non è più protetta, un utente potrebbe inviare una richiesta web che sembra essere passata attraverso IAP. Ad esempio, esegui questo comando curl da Cloud Shell (sostituisci <your-url-here> con l'URL della tua app):
curl -X GET YOUR_URL -H "X-Goog-Authenticated-User-Email: totally fake email"
La pagina web verrà visualizzata sulla riga di comando, mostrando l'email falsa:
<!doctype html>
<html>
<head>
<title>IAP Hello User</title>
</head>
<body>
<h1>Hello World</h1>
<p>
Hello, totally fake email! Your persistent ID is None.
</p>
<p>
This is step 2 of the User Authentication with IAP</em>
codelab.
</p>
</body>
</html>
L'applicazione non è in grado in alcun modo di sapere che IAP è stato disattivato o ignorato. Per i casi in cui esiste questo rischio potenziale, una soluzione è la verifica crittografica.
Attività 3: utilizza la verifica crittografica
Se esiste il rischio che IAP sia disattivato o ignorato, la tua app può eseguire un controllo per verificare che le informazioni sull'identità ricevute siano valide. A questo scopo viene utilizzata una terza intestazione della richiesta web aggiunta da IAP e denominata X-Goog-IAP-JWT-Assertion. Il valore dell'intestazione è un oggetto firmato in modo crittografico che contiene anche i dati dell'identità utente. La tua applicazione può verificare la firma digitale e utilizzare i dati forniti nell'oggetto per avere la certezza che siano forniti da IAP senza alterazioni.
La verifica della firma digitale richiede vari altri passaggi, quali ad esempio il recupero del set più recente di chiavi pubbliche di Google. Puoi decidere se la tua applicazione necessita di questi ulteriori passaggi in base al rischio che qualcuno possa disattivare o ignorare l'IAP e in base alla sensibilità dell'applicazione.
- In Cloud Shell, passa alla cartella per questo passaggio:
cd ~/user-authentication-with-iap/3-HelloVerifiedUser
Fai il deployment su Cloud Run
-
Trova l'ID client Pubblico JWT con intestazione firmata per il tuo servizio Cloud Run protetto da IAP:
-
Vai alla pagina Identity-Aware Proxy nella console Cloud.
-
Individua user-auth-lab nell'elenco.
-
Nota: potrebbe essere necessario scorrere la tabella delle risorse verso destra (utilizzando la barra di scorrimento orizzontale nella parte inferiore della tabella) per visualizzare la colonna Azioni all'estrema destra.
-
In Azioni, fai clic sul pulsante con i tre puntini verticali accanto alla risorsa e seleziona Ottieni il codice del pubblico JWT.
-
Dal modale che viene visualizzato, copia e incolla in un editor di testo la stringa ID client visualizzata e seleziona Ok.
-
Fai il deployment dell'app su Cloud Run, impostando la variabile di ambiente IAP_AUDIENCE con il valore dell'ID client che hai copiato:
gcloud run deploy user-auth-lab --source . --set-env-vars IAP_AUDIENCE="YOUR_CLIENT_ID" --region={{{ project_0.default_region | "REGION" }}}
- Se ti viene chiesto di continuare, digita Y per confermare.
Il deployment dovrebbe completarsi in pochi minuti. Mentre aspetti, puoi esaminare i file dell'applicazione descritti di seguito.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Utilizza la verifica crittografica.
Esamina i file dell'applicazione
- Visualizza il nuovo file helper di autenticazione in Cloud Shell utilizzando il comando
cat:
cat auth.py
- Visualizza il file dell'applicazione principale per controllare in che modo il metodo di verifica dell'utente viene integrato:
cat main.py
Questa cartella contiene lo stesso set di file di 2-HelloUser, con due file modificati e un nuovo file. Il nuovo file è auth.py e fornisce un metodo user() per recuperare e verificare le informazioni sull'identità firmate tramite crittografia. I file modificati sono main.py e templates/index.html, che ora utilizzano i risultati di quel metodo. Vengono mostrate a titolo comparativo le intestazioni riscontrate nell'ultimo deployment.
- La nuova funzionalità consiste principalmente nella funzione
user():
def user():
assertion = request.headers.get('X-Goog-IAP-JWT-Assertion')
if assertion is None:
return None, None
info = jwt.decode(
assertion,
keys(),
algorithms=['ES256'],
audience=audience()
)
return info['email'], info['sub']
Con assertion si intende l'insieme di dati firmati in forma criptata forniti nell'intestazione della richiesta specificata. Il codice utilizza una libreria per convalidare e decodificare quei dati. La convalida utilizza le chiavi pubbliche che Google fornisce per controllare i dati che firma e per conoscere i destinatari per cui i dati sono stati preparati (in pratica il progetto Google Cloud che viene protetto). Le funzioni helper keys() e audience() raccolgono e restituiscono questi valori.
L'oggetto firmato contiene due dati che ci servono: l'indirizzo email verificato e il valore ID univoco (disponibile nel campo standard sub, come subscriber).
Il passaggio 3 è completato.
Testa la verifica crittografica
Quando il deployment è pronto, puoi ottenere l'URL per la tua applicazione tramite:
gcloud run services describe user-auth-lab --region={{{ project_0.default_region | "REGION" }}} --format='value(status.url)'
- Apri l'URL in una nuova scheda del browser.
- Ricorda che in precedenza avevi disattivato IAP, pertanto l'applicazione non fornisce dati IAP. Verifica che nella pagina sia visualizzato Nessuno per email e ID.
- Vai alla pagina Identity-Aware Proxy nella console.
- Fai clic sull'opzione di attivazione/disattivazione di IAP accanto al tuo servizio Cloud Run per riattivare IAP.
- Fai clic su Attiva per confermare.
- In Cloud Shell, esegui questo comando per concedere al service agent IAP l'autorizzazione a richiamare il tuo servizio Cloud Run:
gcloud run services add-iam-policy-binding user-auth-lab \
--member="serviceAccount:service-$(gcloud projects describe {{{project_0.project_id}}} --format='value(projectNumber)')@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker" \
--region={{{ project_0.default_region | "REGION" }}}
- Aggiorna la pagina dell'applicazione. Verifica che l'email e l'ID utente firmati tramite crittografia siano ora visualizzati e verificati correttamente.
Osserva che l'indirizzo email fornito dal metodo verificato non ha il prefisso accounts.google.com:.
Se IAP è disattivato o ignorato, i dati verificati mancano o non sono validi, in quanto non possono avere una firma valida a meno che non siano creati da chi detiene le chiavi private di Google.
Complimenti!
Hai fatto il deployment di un servizio Cloud Run. In primo luogo hai limitato l'accesso all'applicazione ai soli utenti scelti da te. A seguire, hai recuperato e visualizzato l'identità degli utenti che IAP ha autorizzato ad accedere alla tua applicazione e hai visto come le informazioni possono essere soggette a spoofing se IAP è disattivato o ignorato. Infine hai verificato le asserzioni con firma criptata dell'identità utente, che non possono essere soggette a spoofing.
Prossimi passi/Scopri di più
Formazione e certificazione Google Cloud
… per utilizzare al meglio le tecnologie Google Cloud. I nostri corsi ti consentono di sviluppare competenze tecniche e best practice per aiutarti a metterti subito al passo e avanzare nel tuo percorso di apprendimento. Offriamo vari livelli di formazione, dal livello base a quello avanzato, con opzioni di corsi on demand, dal vivo e virtuali, in modo da poter scegliere il più adatto in base ai tuoi impegni. Le certificazioni ti permettono di confermare e dimostrare le tue abilità e competenze relative alle tecnologie Google Cloud.
Ultimo aggiornamento del manuale: 28 maggio 2026
Ultimo test del lab: 28 maggio 2026
Copyright 2026 Google LLC. Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.