Domande frequenti e risoluzione dei problemi

Questo articolo contiene le domande frequenti su Identity-Aware Proxy (IAP).

Quali app posso proteggere con IAP?

IAP possono essere utilizzati con:

  • App per l'ambiente standard di App Engine e per l'ambiente flessibile di App Engine.
  • Istanze Compute Engine con servizi di backend per il bilanciamento del carico HTTP(S).
  • Container Google Kubernetes Engine.
  • App Cloud Run con servizi di backend per il bilanciamento del carico HTTP(S).

Al momento, IAP non può essere utilizzato con Cloud CDN.

Perché alla fine del mio URL è presente un # dopo aver eseguito l'accesso alla mia app?

In alcuni browser e in determinate condizioni, un # potrebbe essere aggiunto all'URL dopo l'autenticazione. Questo è normale e non causerà problemi di accesso.

Perché le mie richieste non vanno a buon fine e restituiscono un codice di stato 405 Method Not Allowed (Metodo non consentito)?

Ciò può essere causato dalla mancata associazione di cookie alle richieste. Per impostazione predefinita, i metodi JavaScript non allegheranno i cookie alle richieste.

Il modo in cui includi i cookie varia in base ai metodi di richiesta. Ad esempio, le richieste inviate con un oggetto XMLHttpRequest devono avere la proprietà withCredentials impostata su true, mentre le richieste inviate con l'API Fetch devono avere l'opzione credentials impostata su include o same-origin.

Per informazioni sulla gestione degli errori che si verificano solo dopo un po' di tempo, consulta Gestire le sessioni IAP.

Perché ricevo un codice di stato HTTP 401 Autorizzazione non consentita anziché un reindirizzamento HTTP 302?

IAP risponde con un codice di stato 302 Redirect quando un client è configurato per gestire i reindirizzamenti. Per indicare che il client può gestire i reindirizzamenti, assicurati che HTTP Accept="text/html,*/*" sia presente nell'intestazione delle richieste.

Perché le richieste POST non attivano i reindirizzamenti?

Per attivare i reindirizzamenti, assicurati che le chiamate all'IAP non siano richieste POST. I browser non eseguono reindirizzamenti in risposta alle richieste POST. Per questo motivo, IAP risponde con un codice di stato 401 Unauthorized anziché 302 Redirect.

Se hai bisogno di IAP per gestire le richieste POST, assicurati che il token ID o i cookie validi vengano trasmessi nell'intestazione della richiesta.

Includi il token ID in un'intestazione Authorization: Bearer per effettuare una richiesta autenticata alla risorsa protetta da IAP. Ottieni cookie validi aggiornando la sessione.

Posso utilizzare IAP se ho disattivato l'API?

Sì, l'accesso alle risorse protette con IAP funziona con l'API disabilitata, ma non potrai apportare modifiche alle autorizzazioni IAM.

Come faccio a impedire agli utenti con il ruolo Proprietario di utilizzare IAP per TCP?

Innanzitutto, evita di utilizzare il ruolo Proprietario (roles/owner) il più possibile. Il ruolo Proprietario concede autorizzazioni ampie in Google Cloud. L'assegnazione di ruoli e autorizzazioni più granulari può aumentare la sicurezza del progetto. Per scoprire di più, consulta le best practice per IAM.

Se non puoi ridurre l'utilizzo del ruolo Proprietario, puoi bloccare l'IAP per TCP utilizzando le regole del firewall.

Quale dominio utilizza IAP per TCP?

IAP utilizza i seguenti domini di proprietà di Google:

Se ti connetti tramite un server proxy o un firewall, assicurati che consentano il traffico verso questi domini e che non blocchino l'uso delle connessioni WebSocket.

Se blocchi il traffico verso questi domini, non potrai utilizzare IAP per TCP. Potresti ricevere uno dei diversi messaggi di errore.

Se utilizzi gcloud, il messaggio di errore potrebbe essere

Error while connecting [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

Se utilizzi SSH dal browser, il messaggio di errore è

Cloud Identity-Aware Proxy Failed

Non è associato alcun codice di errore.

Perché ricevo l'errore Server Error?

Se ricevi il seguente messaggio di errore, il firewall potrebbe non consentire gli IP 130.211.0.0/22 e 35.191.0.0/16:

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.

Se gli IP del bilanciatore del carico 130.211.0.0/22 e 35.191.0.0/16 non riescono a raggiungere il tuo backend, le tue applicazioni potrebbero non essere accessibili. Per ulteriori informazioni, consulta Configurazione di un bilanciatore del carico HTTPS esterno.

Se utilizzi IAP per TCP per connetterti a una VM specifica, la VM deve accettare connessioni da indirizzi nell'intervallo 35.235.240.0/20.

Perché ricevo errori interni del server intermittenti?

Un messaggio di errore nel seguente formato indica un errore interno:

An internal server error occurred while authorizing your request. Error code X

Gli errori interni con i codici di errore 1, 30, 62, 63, 64 o 703 indicano errori di backend. Una bassa percentuale di questi errori di backend indica spesso un problema temporaneo. I client devono riprovare a inviare la richiesta utilizzando il backoff esponenziale.

Come faccio a risolvere gli errori di quota superata (codice di errore 429)?

Il codice di errore 429 indica che il traffico verso l'applicazione viene limitato da IAP. IAP applica un limite di 360.000 richieste al minuto per progetto. Se sono presenti più applicazioni ospitate in un unico progetto, le quote vengono applicate alle richieste totali ricevute da tutte le applicazioni protette da acquisti IAP nel progetto.

Se riscontri errori di quota superata da IAP, ecco alcune tecniche che puoi applicare per risolvere il problema. * I test di carico nelle istanze di produzione sono sconsigliati. Se l'aumento del carico è dovuto ai test di carico, ti consigliamo di trovare percorsi di rete alternativi per la tua applicazione che non richiamino l'IAP.

  • Se la tua applicazione riceve un elevato traffico da servizio a servizio, ti consigliamo di implementare il backoff esponenziale lato client per gestire in modo corretto gli errori 429.

  • Se nello stesso progetto sono presenti più applicazioni con traffico elevato, valuta la possibilità di spostarne alcune in un progetto diverso.

  • Se l'applicazione è stata creata come API anziché come applicazione web, valuta la possibilità di utilizzare soluzioni di gateway API come Apigee.

  • Se il motivo dell'elevato traffico è la crescita organica, contatta l'assistenza Google Cloud per richiedere un aumento del limite di quota.

Codici di errore

La tabella seguente elenca i codici e i messaggi di errore comuni restituiti durante la configurazione e l'utilizzo dell'IAP.

Codice o messaggio di errore Descrizione Risoluzione dei problemi
Codice di errore 7 I valori dell'ID client OAuth o del client secret sono vuoti. Verifica che l'ID client e il client secret siano configurati correttamente per la tua app visualizzando la pagina Credenziali. Se l'ID client e il client secret sembrano essere configurati correttamente, utilizza il metodo GET per visualizzare lo stato corrente e il metodo PATCH per reimpostare l'ID client e il client secret:
API Compute Engine: GET, PATCH
API App Engine: GET, PATCH
Codice di errore 9 Un reindirizzamento OAuth non è stato completato. Si tratta di un errore interno che è stato registrato per la revisione.
Codice di errore 9 (con regole di riscrittura del percorso) Un reindirizzamento OAuth non è stato completato. Le regole di riscrittura dei percorsi del bilanciatore del carico di Google Cloud interferiscono con la capacità di IAP di completare correttamente un flusso OAuth. Se ospiti più backend dietro il bilanciatore del carico Google Cloud e utilizzi regole di riscrittura dei percorsi, assicurati che entrambi i backend utilizzino gli stessi ID client OAuth per l'IAP. Puoi modificare un ID client OAuth per un servizio di backend utilizzando il comando gcloud compute backend-services update.
Codice di errore 11 L'ID client OAuth non è configurato correttamente. Verifica che l'ID client e il client secret siano configurati correttamente per la tua app visualizzando la pagina Credenziali. Se l'ID client e il secret sembrano essere configurati correttamente, utilizza il metodo GET per visualizzare lo stato corrente e il metodo PATCH per reimpostare l'ID client e il secret:
API Compute Engine: GET, PATCH
API App Engine: GET, PATCH
Codice di errore 13 Il token OpenID Connect (OIDC) non è valido. Assicurati che l'ID client configurato per l'IAP non venga eliminato visualizzando la pagina Credenziali.
Codice di errore 51 Il tuo browser non supporta il pooling delle connessioni. Un browser aggiornato può gestire gli errori di pooling delle connessioni. Assicurati che gli utenti finali utilizzino un browser attuale e aggiornato. Per ulteriori informazioni, vedi Limitare l'accesso alle risorse a domini specifici.
Codice di errore 52 Il nome host fornito non corrisponde al certificato SSL sul server. L'amministratore di sistema potrebbe dover aggiornare il certificato SSL. Per ulteriori informazioni, vedi Limitare l'accesso alle risorse a domini specifici.
Codice di errore 53 Il nome host non corrisponde ai domini consentiti dall'amministratore IAP. L'amministratore deve aggiornare l'elenco dei domini consentiti in modo da includere il tuo nome host. Per ulteriori informazioni, vedi Limitare l'accesso alle risorse a domini specifici.
Codice di errore 429 Il tuo progetto supera la soglia di richieste al minuto. I progetti IAP sono limitati a un massimo di 360.000 richieste al minuto. Se si verifica questo errore, riduci il volume delle richieste per il tuo progetto. Per eventuali altre domande, puoi contattare l'assistenza Google Cloud.
Codice di errore 700, 701 Il pool di forza lavoro configurato non ha un provider (700) o più di un provider (701). Per utilizzare la federazione delle identità per la forza lavoro, IAP richiede esattamente un provider in un pool di forza lavoro. Consulta Limitazioni quando si utilizzano i pool di personale.
Codice di errore 705 L'ID client OAuth per l'utilizzo di IAP con la federazione delle identità della forza lavoro è vuoto. Verifica di aver seguito i passaggi per creare un ID client OAuth e un client secret e aggiornare le impostazioni IAP.
Codice di errore 708 Il pool di forza lavoro non esiste o il nome non è nel formato corretto. Assicurati che il pool di forza lavoro esista e che il nome sia nel seguente formato: locations/global/workforcePools/WORKFORCE_POOL_ID.
Codice di errore 4003 Ciò potrebbe significare che l'istanza non è in ascolto sulla porta a cui stai tentando di connetterti o che il firewall è chiuso. Entrambi questi problemi potrebbero anche causare il fallimento del test di connettività all'avvio dell'istanza VM. Assicurati che il processo di ascolto sulla VM sia in esecuzione e che ascolti sulla porta corretta. Verifica inoltre che il firewall di Google Cloud sia configurato correttamente e aperto sulla porta a cui ti connetti.
Codice di errore 4010 È stata stabilita una connessione, ma è stata chiusa dall'istanza di destinazione. In genere, questo indica un problema nell'istanza o nel programma in ascolto sulla porta di destinazione. Reimposta l'istanza. Se utilizzi SSH per la connessione, controlla il log auth.log per verificare la presenza di errori imprevisti. La posizione predefinita per il file di log è /var/log/. Se non riesci ad accedere ai log utilizzando SSH, prova a utilizzare la console seriale o scollega e ricollega il disco a una nuova VM per visualizzarli. Allega i log quando contatti l'assistenza clienti.
Codice di errore 4033 Non disponi dell'autorizzazione per accedere all'istanza, l'istanza non esiste o è stata interrotta. Per verificare che il ruolo IAM Utente del tunnel con protezione IAP sia applicato alla risorsa a cui ti connetti, consulta la pagina Identity-Aware Proxy.
Codice di errore 4047 L'istanza non esiste o è stata arrestata. Assicurati che la VM sia accesa e che abbia completato l'avvio.

Se non riesci a risolvere il problema o non visualizzi l'errore elencato su questa pagina, contatta l'assistenza clienti Google Cloud. Fornisci la descrizione dell'errore e la risposta che ricevi da una chiamata GET all'API. Assicurati di rimuovere il client secret dalla risposta.