Häufig gestellte Fragen und Fehlerbehebung

Dieser Artikel enthält häufig gestellte Fragen zum Identity-Aware Proxy (IAP).

Welche Anwendungen kann ich mit IAP schützen?

IAP kann verwendet werden mit:

  • Anwendungen für die App Engine-Standardumgebung und die flexible App Engine-Umgebung
  • Compute Engine-Instanzen mit HTTP(S)-Back-End-Lastenausgleichsdiensten
  • Google Kubernetes Engine-Container
  • Cloud Run-Anwendungen mit HTTP(S)-Load-Balancing-Back-End-Diensten

Derzeit kann IAP nicht mit Cloud CDN verwendet werden.

Warum steht ein # am Ende meiner URL, nachdem ich mich bei meiner Anwendung angemeldet habe?

In einigen Browsern und unter bestimmten Bedingungen wird nach der Authentifizierung ein # an die URL angehängt. Das hat keine spezielle Bedeutung und verursacht beim Anmelden keine Probleme.

Warum schlagen meine Anfragen fehl und geben den Statuscode "405 Method Not Allowed" (Methode nicht zulässig) zurück?

Dies kann daran liegen, dass Ihren Anfragen keine Cookies angehängt werden. Bei JavaScript-Methoden werden Anfragen standardmäßig keine Cookies angehängt.

Die Vorgehensweise zum Hinzufügen von Cookies hängt von der Anfragemethode ab. Bei Anfragen, die mit einem XMLHttpRequest-Objekt gesendet werden, muss z. B. für das Attribut withCredentials der Wert true festgelegt sein und bei Anfragen, die mit der Fetch API gesendet werden, muss für die Option credentials der Wert include oder same-origin ausgewählt sein.

Informationen zur Behebung von Fehlern, die erst nach einer gewissen Zeit auftreten, finden Sie unter Cloud IAP-Sitzungen verwalten.

Warum erhalte ich anstelle des Statuscodes "HTTP 302 Redirect" (Weiterleitung) den Statuscode "HTTP 401 Unauthorized" (Nicht autorisiert)?

IAP antwortet mit dem Statuscode 302 Redirect, wenn ein Client für die Verarbeitung von Weiterleitungen konfiguriert ist. Damit Ihr Client Weiterleitungen verarbeiten kann, muss im Header der Anfrage unbedingt HTTP Accept="text/html,*/*" angegeben sein.

Warum lösen POST-Anfragen keine Weiterleitungen aus?

Stellen Sie für das Weiterleiten von Anfragen sicher, dass Aufrufe an IAP keine POST-Anfragen sind. Browser führen keine Weiterleitungen als Antwort auf POST-Anfragen aus. Daher antwortet IAP mit dem Statuscode 401 Unauthorized anstelle von 302 Redirect.

Damit IAP POST-Anfragen verarbeitet, müssen im Header der Anfrage entweder das ID-Token oder gültige Cookies übergeben werden.

Fügen Sie das ID-Token in einen Authorization: Bearer-Header ein, um eine authentifizierte Anfrage an die mit IAP gesicherte Ressource zu senden. Rufen Sie gültige Cookies durch Aktualisieren der Sitzung ab.

Kann ich IAP verwenden, wenn ich die API deaktiviert habe?

Ja, der Zugriff auf mit IAP gesicherte Ressourcen funktioniert bei deaktivierter API. Sie können jedoch keine Änderungen an IAM-Berechtigungen vornehmen.

Wie kann ich verhindern, dass Nutzer mit der Rolle "Inhaber" IAP für TCP verwenden?

Vermeiden Sie das Zuweisen der Rolle "Inhaber" (roles/owner) so weit wie möglich. Die Rolle "Inhaber" gewährt umfassende Berechtigungen in Google Cloud. Durch Zuweisen detaillierter Rollen und Berechtigungen können Sie die Sicherheit Ihres Projekts erhöhen. Weitere Informationen finden sich in den Best Practices für IAM.

Wenn sich die Nutzung der Rolle "Inhaber" nicht einschränken lässt, können Sie IAP für TCP mithilfe von Firewallregeln blockieren.

Welche Domain verwendet IAP für TCP?

IAP verwendet die folgenden Domains, die Google gehören:

Wenn Sie eine Verbindung über einen Proxyserver oder eine Firewall herstellen, achten Sie darauf, dass sie Traffic zu diesen Domains zulassen und die Verwendung von WebSocket-Verbindungen nicht blockiert wird.

Wenn Sie den Traffic zu diesen Domains blockieren, können Sie IAP für TCP nicht verwenden. Möglicherweise erhalten Sie eine von mehreren Fehlermeldungen.

Wenn Sie gcloud verwenden, kann die Fehlermeldung folgendermaßen lauten

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

Wenn Sie SSH über den Browser verwenden, wird die Fehlermeldung folgendermaßen lauten

Cloud Identity-Aware Proxy Failed

Es ist kein Fehlercode vorhanden.

Warum erhalte ich die Fehlermeldung Server Error?

Wenn Sie die folgende Fehlermeldung erhalten, blockiert Ihre Firewall möglicherweise die IP-Adressen 130.211.0.0/22 und 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.

Wenn die Load-Balancer-IP-Adressen 130.211.0.0/22 und 35.191.0.0/16 Ihr Back-End nicht erreichen können, sind Ihre Anwendungen möglicherweise nicht zugänglich. Weitere Informationen finden Sie unter Externen HTTPS-Load-Balancer einrichten.

Wenn Sie IAP für TCP verwenden, um eine Verbindung zu einer bestimmten VM herzustellen, muss die VM Verbindungen von Adressen im Bereich 35.235.240.0/20 akzeptieren.

Warum erhalte ich zeitweise interne Serverfehler?

Eine Fehlermeldung im folgenden Format wird angezeigt: An internal server error occurred while authorizing your request. Error code X Dies weist auf einen internen Fehler hin. Interne Fehler mit den Fehlercodes 1 oder 30 weisen auf Back-End-Fehler hin. Eine niedrige Rate dieser Back-End-Fehler weist oft auf ein vorübergehendes Problem hin. Clients sollten die Anfrage mit exponentiellem Backoff wiederholen.

Fehlercodes

In der folgenden Tabelle sind häufig auftretende Fehlercodes und Nachrichten aufgeführt, die beim Konfigurieren und Anwenden von IAP zurückgegeben werden.

Fehlercode oder Fehlermeldung Beschreibung Fehlerbehebung
Fehlercode 7 Ihre OAuth-Client-ID oder Secret-Werte sind leer. Prüfen Sie, ob Ihre Client-ID und Ihr Secret für Ihre Anwendung korrekt konfiguriert sind. Rufen Sie dazu die Seite "Anmeldedaten" auf. Wenn Ihre Client-ID und Ihr Secret offenbar korrekt konfiguriert sind, rufen Sie mit der Methode GET den aktuellen Status ab und setzen mit der Methode PATCH die Client-ID und das Secret zurück:
Compute Engine API: GET, PATCH
App Engine API: GET, PATCH
Fehlercode 9 Eine OAuth-Weiterleitung wurde nicht abgeschlossen. Dies ist ein interner Fehler, der zur Überprüfung in einem Log erfasst wurde.
Fehlercode 9 (mit Pfadumschreibungsregeln) Eine OAuth-Weiterleitung wurde nicht abgeschlossen. Die Regeln zum Umschreiben von Google Cloud-Load-Balancer-Pfaden beeinträchtigen die Fähigkeit von IAP, einen OAuth-Ablauf erfolgreich abzuschließen. Wenn Sie mehrere Back-Ends hinter dem Google Cloud-Load-Balancer hosten und Regeln zum Umschreiben von Pfaden verwenden, achten Sie darauf, dass beide Back-Ends dieselben OAuth-Client-IDs für IAP verwenden. Sie können eine OAuth-Client-ID für einen Back-End-Dienst mit dem Befehl gcloud compute Back-End-services update ändern.
Fehlercode 11 Ihre OAuth-Client-ID ist falsch konfiguriert. Prüfen Sie, ob Ihre Client-ID und Ihr Secret für Ihre Anwendung korrekt konfiguriert sind. Rufen Sie dazu die Seite "Anmeldedaten" auf. Wenn Ihre Client-ID und Ihr Secret offenbar korrekt konfiguriert sind, rufen Sie mit der Methode GET den aktuellen Status ab und setzen mit der Methode PATCH die Client-ID und das Secret zurück:
Compute Engine API: GET, PATCH
App Engine API: GET, PATCH
Fehlercode 13 Ihr OIDC-Token (OpenID Connect) ist ungültig. Prüfen Sie, ob die für IAP konfigurierte Client-ID gelöscht wurde. Rufen Sie dazu die Seite "Anmeldedaten" auf.
Fehlercode 51 Ihr Browser unterstützt kein Verbindungs-Pooling. Ein aktueller, aktueller Browser kann Verbindungs-Pooling-Fehler beheben. Stellen Sie sicher, dass Endnutzer einen aktuellen und aktuellen Browser verwenden. Weitere Informationen finden Sie unter Ressourcenzugriff auf bestimmte Domains beschränken.
Fehlercode 52 Der angegebene Hostname stimmt nicht mit dem SSL-Zertifikat auf dem Server überein. Der Systemadministrator muss möglicherweise das SSL-Zertifikat aktualisieren. Weitere Informationen finden Sie unter Ressourcenzugriff auf bestimmte Domains beschränken.
Fehlercode 53 Der Hostname stimmt nicht mit den Domains überein, die vom IAP-Administrator zugelassen wurden. Der Administrator muss die Liste der zulässigen Domains so aktualisieren, dass sie Ihren Hostnamen enthält. Weitere Informationen finden Sie unter Ressourcenzugriff auf bestimmte Domains beschränken.
Fehlercode 429 Ihr Projekt überschreitet den Grenzwert pro Minute für Anfragen. IAP-Projekte sind auf maximal 360.000 Anfragen pro Minute beschränkt. Wenn dieser Fehler auftritt, reduzieren Sie die Anzahl der Anfragen für Ihr Projekt. Sie können sich an den Google Cloud-Support wenden, wenn Sie weitere Fragen haben.
Fehlercode 4003 Dies kann bedeuten, dass die Instanz nicht den Port überwacht, zu dem Sie eine Verbindung herstellen möchten, oder dass die Firewall geschlossen ist. Eines dieser Probleme könnte auch dazu führen, dass der anfängliche Konnektivitätstest zur VM-Instanz fehlschlägt. Prüfen Sie, ob der Überwachungsvorgang auf der VM ausgeführt wird und ob der richtige Port überwacht wird. Prüfen Sie außerdem, ob Ihre Google Cloud-Firewall ordnungsgemäß konfiguriert ist, und öffnen Sie die Firewall auf dem Port, zu dem Sie eine Verbindung herstellen.
Fehlercode 4010 Eine Verbindung wurde von der Zielinstanz hergestellt, aber geschlossen. Dies weist in der Regel auf ein Problem mit der Instanz oder dem Programm hin, das den Zielport überwacht. Setzen Sie die Instanz zurück. Wenn Sie eine Verbindung über SSH herstellen, prüfen Sie das auth.log-Log auf unerwartete Fehler. Der Standardspeicherort für die Logdatei ist /var/log/. Wenn Sie mit SSH nicht auf die Logs zugreifen können, versuchen Sie es über die serielle Konsole. Alternativ können Sie das Laufwerk auch trennen und an eine neue VM anhängen, um sich die Logs anzusehen. Hängen Sie die Protokolle an, wenn Sie den Kundensupport kontaktieren.
Fehlercode 4033 Entweder haben Sie keine Zugriffsberechtigung für die Instanz oder die Instanz ist nicht vorhanden oder wurde beendet. Prüfen Sie, ob die IAM-Rolle "Nutzer IAP-gesicherter Tunnel" auf die Ressource angewendet wurde, zu der Sie eine Verbindung herstellen. Rufen Sie dazu die Seite "Identity-Aware Proxy" auf.
Fehlercode 4047 Entweder ist die Instanz nicht vorhanden oder die Instanz wurde beendet. Prüfen Sie, ob die VM eingeschaltet ist und den Startvorgang abgeschlossen hat.

Wenn Sie das Problem nicht lösen können, wenden Sie sich mit der Fehlerbeschreibung und der Antwort, die Sie beim Aufruf von GET an die API erhalten, an den Kundensupport. Den Clientschlüssel können Sie dafür aus der Antwort entfernen.