Esistono due modi per abilitare Identity-Aware Proxy per i servizi Cloud Run.
- Consigliato: direttamente su un servizio Cloud Run:
- Protegge direttamente l'endpoint
run.appin modo da non dover eseguire il provisioning delle risorse del bilanciatore del carico. - Fornisce una configurazione più semplice ed evita costi aggiuntivi per il bilanciatore del carico.
- Se scegli di inserire un bilanciatore del carico davanti a Cloud Run, viene protetto anche l'endpoint del bilanciatore del carico.
- Protegge direttamente l'endpoint
- Sul servizio di backend che gestisce i servizi Cloud Run: se esegui Cloud Run in più regioni collegate allo stesso servizio di backend globale del bilanciatore del carico e richiedi la gestione centralizzata dell'accesso, segui le istruzioni riportate in questa pagina. In caso contrario, ti consigliamo di abilitare IAP direttamente sul servizio Cloud Run.
Limitazioni note
IAP non può essere utilizzato sia sui servizi Cloud Run sia sul bilanciatore del carico. Se abiliti IAP su un bilanciatore del carico, IAP protegge il traffico solo tramite il bilanciatore del carico e non con il traffico che potrebbe raggiungere il servizio Cloud Run tramite il relativo URL
run.app. Per consentire solo il traffico autorizzato da IAP, consulta Configurare Cloud Run per limitare l'accesso.IAP esegue l'autenticazione a Cloud Run utilizzando l'
X-Serverless-Authorizationintestazione. Cloud Run passa questa intestazione al tuo servizio dopo aver rimosso la firma. Se il tuo servizio è progettato per inoltrare la richiesta a un altro servizio Cloud Run che richiede l'autenticazione IAM, aggiorna il servizio per rimuovere prima questa intestazione.IAP non è compatibile con Cloud CDN.
IAP aumenta la latenza. Abilita IAP solo per le istanze che non sono sensibili alla latenza.
Prima di iniziare
Ti consigliamo di abilitare IAP direttamente su Cloud Run.
Se scegli di abilitare IAP per le risorse Cloud Run sul bilanciatore del carico anziché direttamente su Cloud Run, devi disporre di:
- Un progetto della Google Cloud console con la fatturazione abilitata.
- Un gruppo di uno o più servizi Cloud Run, gestiti da un bilanciatore del carico.
- Scopri come configurare un bilanciatore del carico HTTPS esterno.
- Scopri come configurare un bilanciatore del carico HTTPS interno.
- Un nome di dominio registrato all'indirizzo del bilanciatore del carico.
- Il codice dell'applicazione per verificare che tutte le richieste abbiano un'identità.
- Scopri di più sul recupero dell'identità dell'utente.
Abilitare IAP da un servizio di backend o da un bilanciatore del carico
Se devi abilitare IAP da IAP dietro un servizio di backend o un bilanciatore del carico, segui queste istruzioni.
Console
Se non hai configurato la schermata per il consenso OAuth del progetto, ti verrà chiesto di farlo. Per configurare la schermata per il consenso OAuth, consulta Configurare la schermata per il consenso OAuth.
Configurare l'accesso IAP
- Vai alla pagina Identity-Aware Proxy.
- Seleziona il progetto che vuoi proteggere con IAP.
- In APPLICAZIONI, seleziona la casella di controllo accanto al servizio di backend del bilanciatore del carico a cui vuoi aggiungere membri.
- Nel riquadro laterale a destra, fai clic su Aggiungi entità.
Nella finestra di dialogo Aggiungi entità, inserisci gli account dei gruppi o delle persone che devono avere il ruolo Utente applicazione web con protezione IAP per il progetto. I seguenti tipi di account possono essere membri:
- Account Google: user@gmail.com. Può essere anche un account Google Workspace, ad esempio user@google.com o un altro dominio Workspace.
- Gruppo Google: admins@googlegroups.com
- Service account: server@example.
- Dominio Google Workspace: example.com
Seleziona Cloud IAP > Utente applicazione web con protezione IAP dall'elenco a discesa Ruoli.
Fai clic su Salva.
Abilitare l'accesso agli utenti esterni all'organizzazione
Per impostazione predefinita, quando abiliti IAP, viene utilizzato un client OAuth gestito da Google per autenticare gli utenti. Di conseguenza, solo gli utenti all'interno dell'organizzazione possono accedere all'applicazione abilitata per IAP.
Per abilitare l'accesso agli utenti esterni all'organizzazione o senza un' organizzazione, aggiorna la configurazione del client OAuth in modo da utilizzare un client OAuth personalizzato, come descritto in Abilitare IAP per applicazioni esterne.
Attivazione di IAP
- Nella pagina IAP, in APPLICAZIONI, trova il servizio di backend del bilanciatore del carico a cui vuoi limitare l'accesso. Per attivare IAP per una risorsa, fai clic sul pulsante di attivazione/disattivazione IAP.
Per abilitare IAP:
- Almeno un protocollo nella configurazione frontend del bilanciatore del carico deve essere HTTPS. Scopri come configurare un bilanciatore del carico.
- Devi disporre delle autorizzazioni
compute.backendServices.update,clientauthconfig.clients.createeclientauthconfig.clients.getWithSecret. Queste autorizzazioni vengono concesse dai ruoli, ad esempio il ruolo Editor progetto. Per saperne di più, consulta Gestire l'accesso alle risorse protette da IAP.
- Nella finestra Attiva IAP visualizzata, fai clic su Attiva per confermare che vuoi che IAP protegga la tua risorsa. Dopo aver attivato IAP, sono richieste le credenziali di accesso per tutte le connessioni al bilanciatore del carico. Verrà concesso l'accesso solo agli account con il ruolo Utente applicazione web con protezione IAP nel progetto.
Segui le istruzioni riportate in Controllo dell'accesso con IAM per autorizzare IAP a inviare traffico al servizio Cloud Run di backend.
- Entità:
service-[PROJECT-NUMBER]@gcp-sa-iap. - Ruolo: Cloud Run Invoker
Il account di servizio IAP viene creato quando IAP è abilitato. Se il account di servizio IAP non è presente nell'elenco delle entità, puoi crearlo eseguendo il seguente comando gcloud:
gcloud beta services identity create --service=iap.googleapis.com --project=PROJECT_ID- Entità:
gcloud
- Se non l'hai ancora fatto nel progetto, crea il service agent IAP eseguendo il seguente comando. Se hai già creato il service agent, l'esecuzione del comando non lo duplica.
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- Concedi l'autorizzazione di invoker al account di servizio creato nel passaggio precedente eseguendo il seguente comando.
gcloud run services add-iam-policy-binding [SERVICE-NAME] \ --member='serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.' \ --role='roles/run.invoker' Abilita IAP eseguendo il comando con ambito globale o regionale, a seconda che il servizio di backend del bilanciatore del carico sia globale o regionale. Utilizza l'ID client OAuth e il secret del passaggio precedente.
Ambito globale
gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
Ambito regionale
Sostituisci quanto segue:gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
- BACKEND_SERVICE_NAME: il nome del servizio di backend.
- REGION_NAME: la regione in cui vuoi abilitare IAP.
Dopo aver abilitato IAP, puoi utilizzare la Google Cloud CLI per manipolare un criterio di accesso IAP utilizzando il ruolo Identity and Access Management roles/iap.httpsResourceAccessor. Per ulteriori informazioni, consulta Gestire l'accesso alle risorse protette da IAP.
Terraform
- Se non l'hai ancora fatto, crea il service agent IAP in un progetto eseguendo il seguente comando. Se hai già creato il service agent, l'esecuzione del comando non lo duplica.
resource "google_project_service" "project" { project = "your-project-id" service = "iap.googleapis.com" } Aggiungi quanto segue per concedere il ruolo
roles/run.invokeral service agent IAP.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "serviceAccount:service-"PROJECT_NUMBER@gcp-sa-iap." }Sostituisci PROJECT_NUMBER con il numero del tuo progetto.
Abilita IAP eseguendo il comando globale o regionale a seconda del bilanciatore del carico. Utilizza l'ID client OAuth e il secret del passaggio precedente.
Ambito globale
resource "google_compute_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }Ambito regionale
resource "google_compute_region_backend_service" "default" { name = "tf-test-backend-service-external" protocol = "HTTPS" load_balancing_scheme = "EXTERNAL_MANAGED" iap { enabled = true oauth2_client_id = "abc" oauth2_client_secret = "xyz" } }
Configurare Cloud Run per limitare l'accesso
Per impedire che il traffico venga instradato tramite l'URL
predefinito run.app di un servizio Cloud Run, disattiva l'URL predefinito.
In caso contrario, configura le impostazioni di traffico in entrata per limitare il traffico in entrata di rete per Cloud Run.
Risolvere gli errori
Autorizzazione negata per l'accesso a Cloud Run
Your client does not have permission to get URL from this server IAP utilizza le autorizzazioni del account di servizio IAP per richiamare il servizio Cloud Run. Assicurati di aver concesso il ruolo Cloud Run Invoker al seguente account di servizio:
service-[PROJECT-NUMBER]@gcp-sa-iap..Se hai concesso il ruolo Cloud Run Invoker al account di servizio precedente e il problema persiste, esegui di nuovo il deployment del servizio Cloud Run.
L'errore del service agent causa l'errore di impostazione di IAM
L'abilitazione di IAP in un nuovo progetto per la prima volta può causare il seguente errore:
Setting IAM permissions failedQuesto perché il service agent Cloud Run non è riuscito. Per risolvere il problema, abilita di nuovo IAP o imposta manualmente il criterio IAM.
Impossibile configurare IAP tramite la gcloud CLI
The IAP service account is not provisioned Se visualizzi questo errore, esegui il seguente comando:
gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
Il account di servizio IAP non richiede l'autorizzazione run.routes.invoke
Durante l'anteprima di IAP con Cloud Run, Cloud Run non ha eseguito il controllo dell'autorizzazione run.routes.invoke per le chiamate da IAP che utilizzano il ruolo Cloud Run Invoker. Con la disponibilità generale (GA), Cloud Run esegue questo controllo delle autorizzazioni.
Per evitare modifiche che causano interruzioni, alcuni progetti dei clienti che dipendevano da questo comportamento durante l'anteprima sono stati inseriti in una lista consentita in modo che l'autorizzazione non venisse controllata. Contatta l'assistenza di Cloud Run per rimuovere questi progetti dalla lista consentita solo per l'anteprima.