Backend-Dienste sichern

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

  • Nur authentifizierter Zugriff auf Ihren Back-End-Dienst wird zugelassen.
  • Erteilen Sie dem Dienstkonto, das der API-Konfiguration Ihres Gateways zugeordnet ist, die erforderlichen Berechtigungen, damit Ihr Gateway zum Aufrufen des Back-Ends autorisiert ist.

Auf dieser Seite werden die Schritte zum Sichern Ihres Back-End-Dienstes sowie die Rollen und Berechtigungen beschrieben, die das Dienstkonto des 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.

Mit IAM auf Dienstebene können Sie den Zugriff eines Gateways auf einen einzelnen Dienst oder mit IAM auf Projektebene auf alle Dienste in einem Projekt 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 und dem Dienstkonto des Gateways die Berechtigung run.routes.invoke zugewiesen ist. Weitere Informationen zu den Invoker-Rollen und -Berechtigungen finden Sie in der IAM-Referenz zu Cloud Run.

Cloud Functions

Bei Back-End-Diensten von Cloud Functions wird die Identitäts- und Zugriffsverwaltung (IAM) verwendet, um zu steuern, ob Funktionen angezeigt, erstellt, aktualisiert und gelöscht werden können. IAM erzwingt die Authentifizierung von Aufrufern bei Cloud Functions-Diensten wie API Gateway, indem Rollen gewährt werden.

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

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

Ob eine Funktion aufgerufen werden kann, ist bei HTTP-Funktionen und Hintergrundfunktionen unterschiedlich.

Damit API Gateway Ihren Cloud Functions-Back-End-Dienst 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 Functions-Dienst abgelehnt werden, prüfen Sie, ob dem Dienstkonto des Gateways die Rolle roles/cloudfunctions.invoker gewährt wurde und dass das Dienstkonto des Gateways die Berechtigung cloudfunctions.functions.invoke hat. Weitere Informationen zu Invoker-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 zum Aktivieren von IAP für das Projekt aus, in dem der App Engine-Back-End-Dienst bereitgestellt wird. Durch Aktivieren von IAP wird sichergestellt, dass der Zugriff auf Ihre App Engine-Back-End-Anwendung gesichert ist.

Damit API Gateway den App Engine-Back-End-Dienst aufrufen kann, führen Sie die Schritte unter IAP-Zugriff einrichten aus, um dem mit dem Gateway verknüpften Dienstkonto die Rolle IAP-secured Web App User zuzuweisen. Weisen Sie dem Dienstkonto außerdem eine Rolle mit den folgenden Berechtigungen zu:

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