Consigliato: abilita IAP direttamente su un servizio Cloud Run, che offre i seguenti vantaggi:
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 posizionare un bilanciatore del carico davanti a Cloud Run, anche l'endpoint del bilanciatore del carico è protetto.
Abilita IAP sul servizio di backend che funge da frontend per i servizi Cloud Run: se esegui Cloud Run in più regioni collegate allo stesso servizio di backend globale del bilanciatore del carico e hai bisogno di una gestione centralizzata degli accessi, 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 Configura Cloud Run per limitare l'accesso.IAP si autentica in Cloud Run utilizzando l'intestazione
X-Serverless-Authorization. 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 i servizi 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 quanto segue:
- Un progetto della console Google Cloud con fatturazione abilitata.
- Un gruppo di uno o più servizi Cloud Run, gestito da un bilanciatore del carico.
- Scopri di più sulla configurazione di 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.
Abilitazione di IAP da un servizio di backend o un bilanciatore del carico
Nota: ti consigliamo di abilitare IAP direttamente su Cloud Run, come descritto nella documentazione di Cloud Run.Per attivare IAP su un servizio di backend di 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 Configurazione della schermata per il consenso OAuth.
Configurazione dell'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 app web con protezione IAP per il progetto. I seguenti tipi di account possono essere membri:
- Account Google: user@gmail.com. Può anche essere un account Google Workspace, ad esempio user@google.com o un altro dominio Workspace.
- Gruppo Google: admins@googlegroups.com
- Service account: server@example.iam.gserviceaccount.com
- Dominio Google Workspace: example.com
Seleziona Cloud IAP > Utente app web con protezione IAP dall'elenco a discesa Ruoli.
Fai clic su Salva.
Abilitazione dell'accesso per gli utenti esterni all'organizzazione
Per impostazione predefinita, quando attivi 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 consentire l'accesso agli utenti esterni alla tua organizzazione o senza un'organizzazione, aggiorna la configurazione del client OAuth in modo da utilizzare un client OAuth personalizzato, come descritto in Abilita IAP per le 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 di IAP.
Per attivare IAP:
- Almeno un protocollo nella configurazione del frontend del bilanciatore del carico deve essere HTTPS. Scopri di più sulla configurazione di un bilanciatore del carico.
- Devi disporre delle autorizzazioni
compute.backendServices.update,clientauthconfig.clients.createeclientauthconfig.clients.getWithSecret. Queste autorizzazioni vengono concesse da ruoli, come il ruolo Editor progetto. Per saperne di più, consulta Gestione dell'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 necessarie le credenziali di accesso per tutte le connessioni al bilanciatore del carico. L'accesso verrà concesso solo agli account con il ruolo IAP-Secured Web App User 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.iam.gserviceaccount.com - Ruolo: Cloud Run Invoker
Il account di servizio IAP viene creato quando IAP è abilitato. Se l'account di servizio IAP non è nell'elenco delle entità, puoi crearlo eseguendo il seguente comando gcloud:
gcloud services identity create \ --service=iap.googleapis.com \ --project=PROJECT_ID- Entità:
gcloud
- Se non l'hai ancora fatto nel progetto, crea l'agente di servizio IAP eseguendo questo comando. Se hai già creato l'agente di servizio, l'esecuzione del comando non lo duplica.
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
- Concedi l'autorizzazione Invoker al account di servizio creato nel passaggio precedente eseguendo questo comando.
gcloud run services add-iam-policy-binding [SERVICE-NAME] \ --member='serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker' Attiva 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 attivato IAP, puoi utilizzare Google Cloud CLI per manipolare una policy di accesso IAP utilizzando il ruolo Identity and Access Management
roles/iap.httpsResourceAccessor. Per saperne di più, consulta Gestione dell'accesso alle risorse protette da IAP.
Terraform
- Se non l'hai ancora fatto, in un progetto, crea l'agente di servizio IAP eseguendo questo comando. Se hai già creato l'agente di servizio, 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.invokerall'agente di servizio 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.iam.gserviceaccount.com" }Sostituisci PROJECT_NUMBER con il numero del 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" } }
Configurazione di Cloud Run per limitare l'accesso
Per impedire l'instradamento del traffico tramite l'URL
run.apppredefinito di un servizio Cloud Run, disattiva l'URL predefinito. In caso contrario, configura le impostazioni di traffico in entrata per limitare il traffico di rete in entrata 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 serverIAP 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.iam.gserviceaccount.com.Se hai concesso il ruolo Cloud Run Invoker al account di servizio precedente e il problema persiste, esegui nuovamente il deployment del servizio Cloud Run.
L'errore del service agent causa l'errore di impostazione di IAM
L'attivazione di IAP su un nuovo progetto per la prima volta può causare il seguente errore:
Setting IAM permissions failedQuesto perché l'agente di servizio Cloud Run non è riuscito. Per risolvere il problema, attiva nuovamente IAP o imposta manualmente la policy IAM.
Impossibile configurare IAP tramite gcloud CLI
The IAP service account is not provisionedSe visualizzi questo errore, esegui il seguente comando:
gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]Il account di servizio IAP non ha bisogno dell'autorizzazione
run.routes.invokeDurante l'anteprima di IAP con Cloud Run, Cloud Run non eseguiva il controllo delle autorizzazioni
run.routes.invokeper le chiamate da IAP che utilizzano il ruolo Invoker di Cloud Run. Con la disponibilità generale (GA), Cloud Run esegue questo controllo delle autorizzazioni.Per evitare modifiche che provocano un errore, 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 Cloud Run per rimuovere questi progetti dalla lista consentita solo per l'anteprima.
Passaggi successivi
Configura IAP per Cloud Run
Attivare IAP per Cloud Run
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Puoi attivare Identity-Aware Proxy per i tuoi servizi Cloud Run utilizzando uno dei seguenti metodi: