Back-End-Dienste sichern

Zusätzlich zur Authentifizierung von Endnutzeranfragen an das bereitgestellte Gateway ist es wichtig, den Zugriff zwischen API Gateway und Back-End-Diensten zu sichern. So können Sie den öffentlichen Zugriff auf von Back-End verwaltete Dienste verhindern (Cloud Run, Cloud Functions, App Engine usw.):

  • Nur authentifizierten Zugriff auf Ihren Back-End-Dienst zulassen.
  • Erteilen Sie die erforderlichen Berechtigungen für das Dienstkonto, das der API-Konfiguration Ihres Gateways zugeordnet ist, damit Ihr Gateway zum Aufrufen des Back-Ends berechtigt ist.

Auf dieser Seite werden die Schritte zum Schutz Ihres Back-End-Dienstes sowie die Rollen und Berechtigungen beschrieben, die das Dienstkonto Ihres Gateways benötigt, um auf diese Dienste zuzugreifen.

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 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 dass das Dienstkonto des Gateways die Berechtigung run.routes.invoke hat. Weitere Informationen zu Aufruferrollen und Berechtigungen finden Sie in der IAM-Referenz zu Cloud Run.

Cloud Functions

Bei Cloud Functions-Back-End-Diensten wird die Identitäts- und Zugriffsverwaltung (IAM) verwendet, um das Aufrufen, Erstellen, Aktualisieren und Löschen von Funktionen zu steuern. IAM erzwingt die Authentifizierung von Aufrufern für Cloud Functions-Dienste wie API Gateway durch Zuweisen von Rollen.

Durch das Zuweisen 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.

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

Damit API Gateway Ihren Cloud Functions-Back-End-Dienst 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 einzelne Funktionen 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 zugewiesen wurde und dass das Dienstkonto des Gateways die Berechtigung cloudfunctions.functions.invoke hat. Weitere Informationen zu Aufruferrollen und -berechtigungen finden Sie in der IAM-Referenz zu Cloud Functions.

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 des IAP für das Projekt aus, in dem Ihr App Engine-Back-End-Dienst bereitgestellt wird. Durch die Aktivierung von IAP wird der Zugriff auf Ihre App Engine-Back-End-Anwendung gesichert.

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

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