API-Gateway-Architektur
API Gateway ist ein API-Verwaltungssystem, das Verwaltung, Monitoring und Authentifizierung für Ihre APIs bietet. Zu den Komponenten von API Gateway gehören:
- API-Gateway: zur Verwaltung aller Aspekte einer bereitgestellten API
- Service Control: zur Anwendung von API-Verwaltungsregeln
- Service Management: zum Verwalten von API-Konfigurationen
- gcloud CLI: zum Bereitstellen und Verwalten von APIs
- Google Cloud Console: für Logging, Monitoring und Freigabe
Architektur
Im Folgenden finden Sie eine Übersicht der wichtigsten Komponenten von API Gateway:
In diesem Diagramm:
Der API-Anbieter ist für das Erstellen und Bereitstellen einer API in API Gateway verantwortlich. Jede API wird durch eine Datei definiert, die als OpenAPI 2.0-Spezifikation geschrieben ist.
Die OpenAPI-Spezifikation definiert die öffentlich sichtbare URL des REST-Endpunkts für die API, den Back-End-Dienst, auf den von der API zugegriffen wird, sowie alle anderen Eigenschaften der API, wie Authentifizierung, Datenformat und Antwortoptionen.
Der API-Client stellt eine REST-Anfrage an eine in API Gateway gehostete API, um auf Back-End-Dienste zuzugreifen. Ein API-Client kann eine beliebige App sein, die einen REST-Aufruf tätigen kann, z. B. ein Browser, eine mobile App oder eine Web-App.
Der API-Client benötigt nur die URL der API, das Anfrageverb (z. B.
GET
,PUT
,POST
,DELETE
), Authentifizierungsanforderungen und das Format aller Daten, die an die API gesendet oder von dieser empfangen werden.Der API-Client muss nichts über die Back-End-Implementierung wissen. Eine einzelne auf API Gateway gehostete API kann so konfiguriert werden, dass sie anhand der in der Anfrage übergebenen Informationen auf verschiedene Back-Ends zugreift.
API Gateway-Komponenten
API Gateway
API Gateway bietet eine vollständig verwaltete, nutzungsabhängige Lösung für das Hosting Ihrer APIs. API Gateway bietet sicheren Zugriff auf Ihre Back-End-Dienste über eine klar definierte REST API, die unabhängig von der Dienstimplementierung für alle Ihre Dienste konsistent ist.
API Gateway ist in Google Cloud eingebunden. Sie können also dieselben Tools für Entwicklung, Monitoring, Logging und Trace verwenden, die Sie auch für andere Google Cloud-Produkte verwenden.
Wenn Sie eine Verbindung zu einem Back-End-Dienst herstellen, der außerhalb von Google Cloud gehostet wird, können Sie dennoch alle Google Cloud-Dienste nutzen, einschließlich der Authentifizierungs- und Autorisierungsdienste, mit denen der Zugriff auf Ihre APIs gesteuert wird.
Service Control API
Die Service Control API wendet API-Verwaltungsregeln zur Laufzeit an, z. B. Authentifizierung, Monitoring und Logging von API-Schlüsseln. Service Control bietet die folgenden Methoden:
- Überprüfung: verifiziert Authentifizierungs- und API-Schlüssel und gibt an, ob ein Aufruf zugelassen werden soll
- Bericht: benachrichtigt die Systeme über die Aufzeichnungen für Logging und Monitoring
Service Management API
Sie verwenden die OpenAPI-Spezifikation, um die API zu definieren. Anschließend laden Sie die OpenAPI-Spezifikation über die gcloud CLI in Service Management hoch, um die API-Konfiguration zu erstellen. Hier werden auch andere Aufgaben im Zusammenhang mit der Konfiguration ausgeführt, z. B. das Freigeben Ihrer API für andere Entwickler, das Aktivieren oder Deaktivieren der API in verschiedenen Projekten und das Generieren von API-Schlüsseln.
gcloud-CLI
Die gcloud CLI enthält das gcloud-Befehlszeilentool, mit dem Sie verschiedene Google Cloud-Dienste aufrufen können. Sie verwenden die Google Cloud CLI, um Ihre OpenAPI-Spezifikation hochzuladen, die die API-Konfiguration erstellt und dann die API-Konfiguration in API Gateway bereitzustellen.
Cloud Console
Google Cloud Console ist die grafische Benutzeroberfläche für die Google Cloud. Mit der Google Cloud Console können Sie von Service Control aufgezeichnete Monitoring- und Logging-Daten freigeben, die Authentifizierung und Autorisierung konfigurieren und API-Schlüssel zum Aufrufen der API generieren.
API-Anfrage verarbeiten
In einer API-Konfiguration gibt es zwei Arten von Endpunkten:
- API-Endpunkt: Definiert den öffentlich verfügbaren Endpunkt, den Clients verwenden, um Ihre APIs zu nutzen.
- Back-End-Endpunkt: Definiert den Endpunkt, über den die API eine Verbindung zu Ihrem Back-End-Dienst herstellt. Sicherheitseinstellungen wie HTTP- oder HTTPS-Zugriff werden durch die Implementierung des Back-End-Dienstes definiert.
Anfragen an Ihren API-Endpunkt werden an den Back-End-Endpunkt übergeben, einschließlich aller Daten, die als Teil der Anfrage übergeben werden. Antworten vom Back-End-Dienst, einschließlich aller vom Dienst zurückgegebenen Daten, werden an den Client zurückgegeben.
Routing anfordern
Wenn eine Anfrage eingeht, geschieht Folgendes:
API Gateway erstellt ein Trace-Token für Cloud Trace.
API Gateway stimmt mit dem Pfad der eingehenden Anfragen mit der Ziel-API überein. Nachdem eine übereinstimmende Route gefunden wurde, führt API Gateway alle Authentifizierungsschritte für die angegebene API aus.
Wenn eine JWT-Validierung erforderlich ist, validiert API Gateway die Authentifizierung mithilfe des entsprechenden öffentlichen Schlüssels für den Unterzeichner und validiert das Zielgruppenfeld im JWT. Wenn ein API-Schlüssel erforderlich ist, ruft API Gateway die Service Control API auf, um den Schlüssel zu validieren.
Service Control sucht nach dem Schlüssel, um ihn zu validieren, und stellt sicher, dass die API in dem mit dem Schlüssel verknüpften Projekt aktiviert wurde. Wenn der Schlüssel ungültig ist oder die API im Projekt nicht aktiviert wurde, wird der Aufruf abgelehnt und über die Service Control API protokolliert.
Falls Service Control den Schlüssel erfolgreich validiert, wird die Anfrage, zusammen mit den ursprünglichen Headern sowie, falls geeignet, einem JWT-Validierungs-Header an das Backend weitergeleitet.
Geht vom Backend eine Antwort ein, gibt API Gateway die Antwort an den Aufrufer zurück und schickt die endgültigen Zeitinformationen an Trace. Die Aufrufpunkte werden über die Service Control API erfasst, die Messdaten und Logs dann an die entsprechenden Ziele schreibt.