Backend-Dienste sichern
Zusätzlich zur 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 Functions, App Engine usw.) so verhindern:
- Nur authentifizierten Zugriff auf Ihren Backend-Dienst zulassen.
- Dem Dienstkonto, das mit der API-Konfiguration Ihres Gateways verknüpft ist, die erforderlichen Berechtigungen erteilen, damit Ihr Gateway das Backend aufrufen darf.
Auf dieser Seite werden die Schritte beschrieben, die zum Sichern Ihres Backend-Dienstes erforderlich sind. Außerdem werden 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 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 Cloud Run-IAM-Referenz.
Cloud Run-Funktionen
Bei Cloud Run Functions-Backend-Diensten wird Identity and Access Management (IAM) verwendet, um die Möglichkeit zum Aufrufen, Erstellen, Aktualisieren und Löschen von Funktionen zu steuern. IAM erzwingt die Authentifizierung von Aufrufern von Cloud Run Functions-Diensten wie API Gateway durch die Zuweisung von Rollen.
Wenn Sie Rollen und Berechtigungen mit IAM gewähren, können Sie zwei Arten 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.
Die Berechtigung zum Aufrufen einer Funktion unterscheidet sich bei HTTP-Funktionen und Hintergrundfunktionen.
- Für HTTP-Funktionen ist eine Authentifizierung standardmäßig erforderlich. Sie können IAM für HTTP-Funktionen konfigurieren, um anzugeben, ob eine Funktion einen nicht authentifizierten Aufruf zulässt.
- Hintergrundfunktionen können nur von der Ereignisquelle aufgerufen werden, die sie abonniert haben.
Damit API Gateway Ihren Cloud Run Functions-Backend-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 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 IAM-Referenz für Cloud Functions.
App Engine
Wenn Sie Ihre App Engine-Anwendung schützen möchten, müssen Sie Identity-Aware Proxy (IAP) verwenden, um sicherzustellen, dass Anfragen authentifiziert werden.
Folgen Sie der Anleitung zum Aktivieren von IAP 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, folgen Sie der Anleitung unter IAP-Zugriff einrichten, um dem mit Ihrem 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.updateclientauthconfig.clients.createclientauthconfig.clients.getWithSecret
Andere Google Cloud -APIs
Google Cloud -APIs wie aiplatform.googleapis.com oder bigquery.googleapis.com erfordern ein Zugriffstoken und lehnen das ID-Token ab, das API Gateway an andere Back-Ends sendet. Ob ein Gateway diese APIs aufrufen kann, hängt von seinem Streamingmodus ab:
Streaming-Gateways: Ein Gateway mit einem
effectiveStreamingModevonEFFECTIVE_STREAMING_MODE_ENABLEDauthentifiziert sich mit einem Zugriffstoken für das Dienstkonto des Gateways bei jedem Backend, dessen Host auf.googleapis.comoder.vertexai.googendet. Das Zugriffstoken hat nur den Bereichhttps://www.googleapis.com/auth/cloud-platform. Das Gateway kann also keine API-Methoden aufrufen, die einen anderen OAuth-Bereich erfordern.Andere Backends auf demselben Gateway erhalten weiterhin ein ID-Token. Ein Backend mit
disable_auth(OpenAPI 2.0) oderdisableAuth(OpenAPI 3.x) erhält kein Token. Die Felderjwt_audience(OpenAPI 2.0) undjwtAudience(OpenAPI 3.x) haben keine Auswirkungen auf diese Back-Ends.Weisen Sie dem Dienstkonto des Gateways die IAM-Rolle zu, die für die Ziel-API erforderlich ist, z. B. die Rolle „Agent Platform User“ (
roles/aiplatform.user) für die Gemini Enterprise Agent Platform (aiplatform.googleapis.com). Ein Streaming-Gateway, das noch keine Zugriffstokens sendet, beginnt damit, wenn API Gateway das nächste Mal ein Gateway-Update bereitstellt. Wenn Sie sofort wechseln möchten, aktualisieren Sie sie auf eine neue API-Konfiguration.Andere Gateways: Ein Gateway mit einem
effectiveStreamingModevonEFFECTIVE_STREAMING_MODE_DISABLEDunterstützt den Aufruf von Google Cloud-APIs nicht und Aufrufe können mit dem Antwortcode401fehlschlagen.