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. So können Sie den öffentlichen Zugriff auf Ihre verwalteten Backend-Dienste (z. B. Cloud Run, Cloud Run-Funktionen und App Engine) verhindern:

  • Nur authentifizierten Zugriff auf Ihren Backend-Dienst zulassen
  • Gewähren Sie dem Dienstkonto, das mit der API-Konfiguration Ihres Gateways verknüpft ist, die erforderlichen Berechtigungen, damit Ihr Gateway das Backend aufrufen kann.

Auf dieser Seite werden die Schritte zum Schützen Ihres Backend-Dienstes und die Rollen und Berechtigungen beschrieben, 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 werden durch IAM gesichert. Standardmäßig können Cloud Run-Dienste von jeder Rolle mit der Berechtigung run.routes.invoke aufgerufen werden.

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 innerhalb eines Projekts 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 wurde und ob es die Berechtigung run.routes.invoke hat. Weitere Informationen zu den Aufrufer-Rollen und -Berechtigungen finden Sie in der IAM-Referenz zu Cloud Run.

Cloud Functions

Bei Cloud Run-Funktionen wird die Möglichkeit, Funktionen anzusehen, zu erstellen, zu aktualisieren und zu löschen, über Identity and Access Management (IAM) gesteuert. IAM erzwingt die Authentifizierung von Aufrufern von Cloud Run Functions-Diensten wie API Gateway, indem Rollen gewährt werden.

Durch das Gewähren von Rollen und Berechtigungen mit IAM können zwei Gruppen von Aktionen gesteuert werden:

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

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

Damit API Gateway Ihren Cloud Functions-Backenddienst aufrufen kann, gewähren Sie dem Dienstkonto des Gateways die Rolle roles/cloudfunctions.invoker oder eine Rolle mit der Berechtigung cloudfunctions.functions.invoke.

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-Funktionsdienst abgelehnt werden, prüfen Sie, ob dem Dienstkonto des Gateways die Rolle roles/cloudfunctions.invoker zugewiesen wurde und ob es die Berechtigung cloudfunctions.functions.invoke hat. Weitere Informationen zu Aufrufer-Rollen 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 für das Projekt zu aktivieren, in dem Ihr App Engine-Backenddienst bereitgestellt wird. Wenn Sie IAP aktivieren, wird der Zugriff auf Ihre App Engine-Backend-Anwendung gesichert.

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

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