1. Introduzione
Panoramica
Questo codelab ti guida alla procedura per attivare Identity-Aware Proxy da Cloud Run e proteggere il traffico diretto a un servizio Cloud Run eseguendo il routing a IAP per l'autenticazione. Se abiliti IAP da Cloud Run, puoi instradare il traffico con un solo clic da tutti i percorsi di traffico in entrata, inclusi gli URL run.app predefiniti e i bilanciatori del carico.
In questo codelab, eseguirai il deployment del servizio contenitore hello. Solo gli utenti che sono stati inseriti nella lista consentita utilizzando IAP hanno accesso al servizio.
Per altre limitazioni note, consulta la documentazione di IAP su Cloud Run.
Obiettivi didattici
- Come abilitare IAP con un clic per Cloud Run
- Come concedere a un'identità utente l'accesso a un servizio Cloud Run tramite IAP
2. Prima di iniziare
Abilita API
Prima di poter iniziare a utilizzare questo codelab, abilita le seguenti API eseguendo:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. Crea variabili di ambiente
Imposta le variabili di ambiente che verranno utilizzate in questo codelab
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
4. Esegui il deployment di un servizio con IAP abilitato
Crea il service account (utilizzato come identità del servizio Cloud Run) eseguendo questo comando:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
Esegui il deployment dell'immagine container hello con IAP abilitato.
gcloud beta run deploy ${SERVICE_NAME} \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--region=${REGION} \
--service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
--no-allow-unauthenticated \
--iap
Nota: se provi ad accedere all'applicazione ora, vedrai la pagina di errore You don't have access. Nel passaggio successivo, concederai l'accesso a un utente tramite IAP.
5. Configura il controllo dell'accesso IAP
Crea l'agente di servizio IAP.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
Assegna il ruolo Invoker Cloud Run al service account IAP
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Concedere l'accesso a un utente consentendo a utenti o gruppi specifici tramite IAP
EMAIL_ADDRESS=<YOUR_EMAIL>
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor \
--condition=None
Nota: se preferisci, puoi utilizzare anche group:your-group@example.com nel parametro member.
6. testa l'applicazione
Verificare l'accesso all'app
Recupera l'URL del servizio Cloud Run di esempio.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
Apri l'URL nel browser e dovresti visualizzare il messaggio "It's Running! Congratulazioni, hai eseguito correttamente il deployment di un'immagine container in Cloud Run"
Verifica la rimozione dell'accesso all'app
Puoi rimuovere il tuo accesso all'app eseguendo questo comando.
gcloud beta iap web remove-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor
Attendi qualche minuto affinché il criterio IAM venga propagato. Ora prova ad aprire l'URL nel browser e vedrai la pagina di errore You don't have access.
7. Complimenti!
Congratulazioni per aver completato il codelab.
Ti consigliamo di consultare la documentazione relativa a Cloud Run IAP.
Argomenti trattati
- Come abilitare IAP con un clic per Cloud Run
- Come concedere a un'identità utente l'accesso a un servizio Cloud Run tramite IAP
8. Esegui la pulizia
Per evitare addebiti involontari, ad esempio se i servizi Cloud Run vengono richiamati inavvertitamente più volte rispetto all'allocazione mensile di chiamate di Cloud Run nel livello senza costi, puoi eliminare il servizio Cloud Run iap-example che hai creato nel passaggio 6.
Per eliminare il servizio Cloud Run, vai alla console Cloud Run all'indirizzo https://console.cloud.google.com/run ed elimina il servizio iap-example.
Per eliminare l'intero progetto, vai a Gestisci risorse, seleziona il progetto e scegli Elimina. Se elimini il progetto, dovrai cambiare progetto in Cloud SDK. Puoi visualizzare l'elenco di tutti i progetti disponibili eseguendo gcloud projects list.