Come utilizzare Identity-Aware Proxy (IAP) con un solo clic con Cloud Run

1. Introduzione

Panoramica

Questo codelab illustra come attivare Identity-Aware Proxy da Cloud Run e proteggere il traffico destinato a un servizio Cloud Run instradandolo su IAP per l'autenticazione. Se attivi l'IAP da Cloud Run, puoi instradare il traffico con un solo clic da tutti i percorsi di ingresso, inclusi gli URL run.app e i bilanciatori del carico predefiniti.

In questo codelab, eseguirai il deployment del servizio container hello. Solo gli utenti inseriti nella lista consentita utilizzando l'IAP hanno accesso al servizio.

Per altre limitazioni note, consulta la documentazione di IAP su Cloud Run.

Obiettivi didattici

  • Come attivare l'IAP con un solo clic per Cloud Run
  • Come concedere a un'identità utente l'accesso a un servizio Cloud Run tramite IAP

2. Prima di iniziare

abilita le 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. Creare variabili di ambiente

Imposta le variabili di ambiente che verranno utilizzate durante 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 l'account di servizio (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 l'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, visualizzerai 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 agli acquisti in-app

Crea l'agente di servizio IAP.

gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}

Assegna il ruolo Invoker Cloud Run all'account di servizio 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 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 anche utilizzare group:tuo-gruppo@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 vedere il messaggio "È in esecuzione! Congratulazioni, hai eseguito correttamente il deployment di un'immagine container in Cloud Run"

Verificare la rimozione dell'accesso all'app

Puoi rimuovere il tuo accesso all'app eseguendo il seguente 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 per la propagazione del criterio IAM. Ora prova ad aprire l'URL nel browser e vedrai la pagina di errore You don't have access.

7. Complimenti!

Complimenti per aver completato il codelab.

Ti consigliamo di consultare la documentazione relativa a Cloud Run IAP.

Argomenti trattati

  • Come attivare l'IAP con un solo 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 invocati inavvertitamente più volte rispetto alla allocazione mensile di invocazioni Cloud Run nel livello senza costi, puoi eliminare il servizio Cloud Run iap-example 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 modificare i progetti nel tuo Cloud SDK. Puoi visualizzare l'elenco di tutti i progetti disponibili eseguendo gcloud projects list.