GSP499

Panoramica
In questo lab, creerai un'applicazione web minima con Google App Engine, 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
- Scrivere ed eseguire il deployment di una semplice app di App Engine con Python
- Abilitare e disabilitare IAP per limitare l'accesso all'app
- Far arrivare le informazioni sull'identità utente da IAP alla tua app
- Verificare tramite crittografia le informazioni ricevute da IAP per proteggerle dallo spoofing
Prerequisiti
Una conoscenza di base del linguaggio di programmazione Python migliorerà la tua esperienza di apprendimento.
Questo lab riguarda specificamente Google App Engine 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 di 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 avviare il lab e accedere alla console Google Cloud
-
Fai clic sul pulsante Avvia lab. Se devi effettuare il pagamento per il lab, si aprirà una finestra di dialogo per permetterti di selezionare il metodo di pagamento.
A sinistra, trovi il riquadro Dettagli lab con le seguenti informazioni:
- Il pulsante Apri la console Google Cloud
- Tempo rimanente
- Credenziali temporanee da utilizzare per il lab
- Altre informazioni per seguire questo lab, se necessario
-
Fai clic su Apri console Google Cloud (o fai clic con il tasto destro del mouse e seleziona Apri link in finestra di navigazione in 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 di accesso.
{{{user_0.username | "Username"}}}
Puoi trovare il Nome utente anche nel riquadro Dettagli lab.
-
Fai clic su Avanti.
-
Copia la Password di seguito e incollala nella finestra di dialogo di benvenuto.
{{{user_0.password | "Password"}}}
Puoi trovare la Password anche nel riquadro Dettagli 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 gratuite.
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:
gsutil cp gs://spls/gsp499/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: esegui il deployment dell'applicazione e proteggila con IAP
Questa è un'applicazione standard di App Engine scritta in Python che visualizza semplicemente una pagina di benvenuto "Hello World". Eseguiremo 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 modello. Il file modello si trova in templates/index.html
e per questo passaggio contiene solo HTML normale. Un secondo file modello contiene uno schema essenziale di norme sulla privacy di esempio in templates/privacy.html
.
Sono presenti due altri file: requirements.txt
, che elenca tutte le librerie Python non predefinite utilizzate dall'applicazione, e app.yaml
, che informa Google Cloud che questa è un'applicazione App Engine in Python.
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 a forma di matita nell'angolo in alto a destra della finestra di Cloud Shell ed esaminare il codice in questo modo.
Per questo passaggio non è necessario modificare alcun file.
Esegui il deployment in App Engine
- Aggiorna il runtime di Python in
python39
.
sed -i 's/python37/python39/g' app.yaml
- Esegui il deployment dell'app nell'ambiente standard di App Engine per Python.
gcloud app deploy
-
Seleziona una regione .
-
Quando ti viene chiesto se vuoi continuare, digita Y per confermare.
Nota:
se ricevi un messaggio di errore relativo alla propagazione di Gaia, esegui nuovamente il comando gcloud app deploy
.
Il deployment viene completato in pochi minuti. Verrà visualizzato un messaggio che indica che puoi visualizzare la tua applicazione con gcloud app browse
.
- Inserisci il comando:
gcloud app browse
- Fai clic sul link visualizzato per aprirlo in una nuova scheda o copialo in una nuova scheda che avrai aperto manualmente, se necessario. Poiché questa è la prima volta che l'app viene eseguita, serviranno alcuni secondi perché sia visualizzata e si avvii l'istanza cloud; dovresti vedere la finestra seguente.

Puoi aprire lo stesso URL da qualsiasi computer connesso a internet per vedere la pagina web. L'accesso non è ancora limitato.
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Esegui il deployment di un'applicazione App Engine.
Limita l'accesso con IAP
-
Nella finestra della console Cloud, fai clic su Menu di navigazione
> Sicurezza > Identity-Aware Proxy.
-
Fai clic su Abilita API.
-
Fai clic su Vai a Identity-Aware Proxy.
-
Per configurare la schermata per il consenso OAuth del progetto, vai alla schermata per il consenso OAuth.
-
Fai clic su Inizia.
-
In Nome dell'app, digita Esempio IAP
.
-
Fai clic su Email per assistenza utenti, quindi sull'indirizzo email dello studente e poi su Avanti.
-
Per Pubblico, seleziona Interno e fai clic su Avanti.
Gli utenti con accesso al progetto devono essere in grado di accedere all'app.
-
Nel riquadro di sinistra delle istruzioni del lab, copia il Nome utente.
-
In Dati di contatto, incolla il nome utente copiato.
-
Fai clic su Avanti.
-
Fai clic su Casella di controllo per accettare le Norme relative ai dati utente, poi su Continua e infine su Crea.
La schermata per il consenso è ora configurata.
-
In Cloud Shell, esegui questo comando per disattivare l'API Flex:
gcloud services disable appengineflex.googleapis.com
Nota:
App Engine ha i suoi ambienti standard e flessibili, ottimizzati per diverse architetture dell'applicazione. Attualmente, quando si attiva IAP per App Engine, se l'API Flex è abilitata, Google Cloud cercherà un account di servizio Flex. Il progetto del lab viene fornito con una moltitudine di API già abilitate, per motivi di praticità. Tuttavia, ciò crea una situazione unica in cui l'API Flex è abilitata senza che sia stato creato un account di servizio.
- Torna alla pagina Identity-Aware Proxy e aggiornala. A questo punto, dovresti vedere un elenco delle risorse che puoi proteggere.
Fai clic sul pulsante di attivazione/disattivazione nella colonna IAP della riga dell'app App Engine per attivare IAP.
- Il dominio sarà protetto tramite IAP. Fai clic su Attiva.
Verifica che IAP sia attivato
-
Apri una scheda del browser e vai all'URL della tua app. Si aprirà una schermata Accedi con Google in cui inserire le credenziali per accedere all'app.
-
Accedi con l'account 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 specificato in IAP quali account possono accedere.
- Torna alla pagina Identity-Aware Proxy della console e seleziona la casella di controllo accanto all'app App Engine e dai uno sguardo alla barra laterale App Engine a destra.
Devi aggiungere come membri tutti gli indirizzi email (o indirizzi di Google Gruppi o nomi di dominio Workspace) che devono essere autorizzati ad accedere.
-
Fai clic su Aggiungi entità.
-
Inserisci il tuo indirizzo email Studente.
-
Quindi scegli il ruolo Cloud IAP > IAP-Secured Web App User da assegnare a quell'indirizzo.
Puoi inserire altri indirizzi o domini Workspace nello stesso modo.

- Fai clic su Salva.
In fondo alla finestra viene visualizzato il messaggio "Policy aggiornata".
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Abilita e aggiungi una policy a IAP.
Controlla l'accesso
Torna alla tua app e ricarica la pagina. A questo punto dovresti vedere la tua app web, in quanto hai già eseguito l'accesso con un utente autorizzato.
Se è visualizzata ancora la pagina "Non disponi dei diritti di accesso", è possibile che IAP non abbia ripetuto la verifica della tua autorizzazione. In questo caso, segui questi passaggi:
- Apri il browser web all'indirizzo della home page aggiungendo
/_gcp_iap/clear_login_cookie
alla fine dell'URL, ovvero https://iap-example-999999.appspot.com/_gcp_iap/clear_login_cookie
.
- Viene visualizzata una nuova schermata Accedi con Google relativa al tuo account. Non fare clic sull'account, seleziona invece Utilizza un altro account e reinserisci le tue credenziali.
Nota:
affinché la modifica del ruolo abbia effetto, è necessario un minuto. Se nella pagina è visualizzato ancora il messaggio "Non disponi dei diritti di accesso" dopo aver seguito i passaggi precedenti, attendi un minuto e prova ad aggiornare la pagina.
Questa procedura fa sì che IAP verifichi nuovamente il tuo accesso. A questo punto dovresti vedere la schermata iniziale della tua applicazione.
Se hai accesso a un altro browser oppure alla Modalità di navigazione in incognito in quello in uso e disponi di un altro account Gmail o Workspace valido, puoi utilizzare quel browser per andare alla pagina della tua app e accedere con l'altro account. Dal momento che quell'account non è autorizzato, invece della tua app vedrai la schermata "Non disponi dei diritti di accesso".
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
Esegui il deployment in App Engine
- Aggiorna il runtime di Python in
python39
.
sed -i 's/python37/python39/g' app.yaml
- Dato che il deployment richiede alcuni minuti, inizia a eseguire il deployment dell'app nell'ambiente App Engine Standard per Python:
gcloud app deploy
- Quando ti viene chiesto se vuoi 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
Questa cartella contiene lo stesso set di file che abbiamo visto nell'app precedente di cui hai eseguito 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'IAP aggiornato
Se torni al deployment, una volta completato, vedrai un messaggio che informa che puoi visualizzare la tua applicazione con gcloud app browse
.
- Inserisci il comando:
gcloud app browse
- Se nel browser non si apre una nuova scheda, copia il link visualizzato in una nuova scheda come faresti normalmente. Dovresti visualizzare una pagina simile alla seguente:

Potresti dover attendere qualche minuto prima che la nuova versione della tua applicazione sostituisca quella precedente. Se necessario, aggiorna la pagina. Dovresti vedere una pagina simile a quella riportata sopra.
Disattiva IAP
Che cosa succede all'app se IAP viene disattivato o in qualche modo ignorato, ad esempio da altre applicazioni in esecuzione nello stesso progetto cloud? Disattiva IAP per scoprirlo.
- Nella finestra della console Cloud, fai clic su Menu di navigazione > Sicurezza > Identity-Aware Proxy.
- Fai clic sull'opzione attiva/disattiva di IAP accanto all'app di App Engine per disattivare IAP. Fai clic su DISATTIVA.
Sarà visualizzato un avviso che informa che tutti gli utenti potranno accedere all'app.
- 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, per farlo, puoi eseguire il seguente comando curl da Cloud Shell (sostituisci <your-url-here>
con l'URL della tua app):
curl -X GET <your-url-here> -H "X-Goog-Authenticated-User-Email: totally fake email"
La pagina web sarà visualizzata sulla riga di comando e avrà questo aspetto:
<!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
Esegui il deployment in App Engine
- Aggiorna il runtime di Python in
python39
.
sed -i 's/python37/python39/g' app.yaml
- Esegui il deployment dell'app nell'ambiente standard di App Engine per Python.
gcloud app deploy
- Quando ti viene chiesto se vuoi 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
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, un messaggio confermerà che puoi visualizzare l'applicazione con gcloud app browse
.
gcloud app browse
Se nel browser non si apre una nuova scheda, copia il link visualizzato in una nuova scheda come faresti normalmente.
Ricorda che in precedenza avevi disattivato IAP, pertanto l'applicazione non fornisce dati IAP. Dovresti visualizzare una pagina simile alla seguente:

Come in precedenza, potrebbe essere necessario attendere qualche minuto perché la nuova versione sia pubblicata e visibile online.
Dal momento che IAP è disattivato, non sono disponibili informazioni utente. A questo punto, riattiva IAP.
-
Nella finestra della console Cloud, fai clic su Menu di navigazione > Sicurezza > Identity-Aware Proxy.
-
Fai clic sull'opzione attiva/disattiva di IAP accanto all'app di App Engine per riattivarlo. Fai clic su ATTIVA.
-
Aggiorna la pagina. La pagina deve avere il seguente aspetto:

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 eseguito il deployment di un'applicazione web di App Engine. 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: 18 giugno 2025
Ultimo test del lab: 18 giugno 2025
Copyright 2025 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.