Backend-Dienste sichern

Neben der Authentifizierung von Endnutzeranfragen an Ihr bereitgestelltes Gateway ist es wichtig, den Zugriff zwischen API Gateway und Ihren Backend-Diensten zu sichern. Sie können den öffentlichen Zugriff auf Ihre verwalteten Backend-Dienste (Cloud Run, Cloud Run-Funktionen, App Engine usw.) verhindern, indem Sie:

  • Nur authentifizierter Zugriff auf Ihren Backend-Dienst ist zulässig.
  • Erteilen Sie dem Dienstkonto, das der API-Konfiguration Ihres Gateways zugeordnet ist, die erforderlichen Berechtigungen, damit Ihr Gateway zum Aufrufen des Backends autorisiert ist.

Auf dieser Seite werden die Schritte beschrieben, die zum Sichern Ihres Backend-Dienstes erforderlich sind, sowie die Rollen und Berechtigungen, die das Dienstkonto Ihres Gateways für den Zugriff auf diese Dienste benötigt.

Cloud Run

Alle vollständig verwalteten Cloud Run-Dienste werden standardmäßig privat bereitgestellt. Das bedeutet, dass sie ohne Authentifizierungsanmeldedaten in der Anfrage nicht zugänglich sind.

Cloud Run-Dienste sind durch IAM gesichert. Standardmäßig können Cloud Run-Dienste von jeder Rolle aufgerufen werden, die die Berechtigung run.routes.invoke enthält.

Sie können IAM in (vollständig verwalteten) Cloud Run-Diensten konfigurieren, um weiteren Nutzern Zugriff zu gewähren.

Für API Gateway wird der Zugriff auf Cloud Run-Dienste aktiviert, indem dem Dienstkonto des Gateways die entsprechenden Rollen und Berechtigungen zugewiesen werden: die Rolle roles/run.invoker oder eine Rolle mit der Berechtigung run.routes.invoke.

Sie können den Zugriff eines Gateways auf einen einzelnen Dienst mit IAM auf Dienstebene oder auf alle Dienste in einem Projekt mit IAM auf Projektebene steuern.

Wenn die Anfrage eines Gateways an Ihren Cloud Run-Dienst abgelehnt wird, prüfen Sie, ob dem Dienstkonto des Gateways die Rolle roles/run.invoker zugewiesen ist und ob das Dienstkonto des Gateways die Berechtigung run.routes.invoke hat. Weitere Informationen zu den Aufruferrollen und ‑berechtigungen finden Sie in der IAM-Referenz zu Cloud Run.

Cloud Run-Funktionen

Für Backend-Dienste von Cloud Run Functions wird Identity and Access Management (IAM) verwendet, um zu steuern, ob ein Entwickler Funktionen ansehen, erstellen, aktualisieren und löschen kann. IAM erzwingt die Authentifizierung von Aufrufern von Cloud Run Functions-Diensten wie API Gateway, indem Rollen gewährt werden.

Das Erteilen von Rollen und Berechtigungen mit IAM ermöglicht die Steuerung für zwei Gruppen von Aktionen:

  • Entwicklervorgänge: Erstellen, Aktualisieren und Löschen von Funktionen sowie Verwalten des Zugriffs auf Funktionen
  • Funktionsaufruf: Auslösen der auszuführenden Funktion.

Das Erteilen der Berechtigung zum Aufrufen einer Funktion unterscheidet sich bei HTTP-Funktionen und Hintergrundfunktionen.

Damit API Gateway den Backend-Dienst Ihrer Cloud Run-Funktionen aufrufen kann, weisen Sie dem Dienstkonto des Gateways die Rolle roles/cloudfunctions.invoker oder eine beliebige Rolle mit der Berechtigung cloudfunctions.functions.invoke zu.

Sie können den Zugriff eines Gateways auf eine einzelne Funktion mit IAM auf Dienstebene oder auf alle Funktionen in einem Projekt mit IAM auf Projektebene steuern.

Wenn die Anfragen eines Gateways an Ihren Cloud Run Functions-Dienst abgelehnt werden, prüfen Sie, ob dem Dienstkonto des Gateways die Rolle roles/cloudfunctions.invoker zugewiesen ist und ob das Dienstkonto des Gateways die Berechtigung cloudfunctions.functions.invoke hat. Weitere Informationen zu Aufruferrollen und ‑berechtigungen finden Sie in der Cloud Functions-IAM-Referenz.

App Engine

Mit dem Identity-Aware Proxy (IAP) sichern Sie die App Engine-Anwendung und sorgen dafür, dass die Anfragen authentifiziert werden.

Führen Sie die Schritte aus, um IAP zu aktivieren für das Projekt, in dem Ihr App Engine-Backend-Dienst bereitgestellt wird. Wenn Sie IAP aktivieren, wird der Zugriff auf Ihre App Engine-Backend-Anwendung geschützt.

Damit API Gateway Ihren App Engine-Backend-Dienst aufrufen kann, müssen Sie die Schritte unter IAP-Zugriff einrichten ausführen, um dem mit Ihrem Gateway verknüpften Dienstkonto die Rolle IAP-secured Web App User zu gewähren. Weisen Sie dem Dienstkonto außerdem eine Rolle mit den folgenden Berechtigungen zu:

  • appengine.applications.update
  • clientauthconfig.clients.create
  • clientauthconfig.clients.getWithSecret

Andere Google Cloud APIs

API Gateway unterstützt kein Proxying zu anderen Google Cloud APIs. Das bedeutet, dass API-Konfigurationen, die auf ein oder mehrere Back-Ends mit *.googleapis.com verweisen (z. B. bigquery.googleapis.com), dazu führen, dass Aufrufe mit dem Antwortcode 401 fehlschlagen.

API Gateway authentifiziert sich mit einem ID-Token bei Backends, während für andere Google Cloud APIs ein Zugriffstoken erforderlich ist. Derzeit gibt es keine integrierten Problemumgehungen.