API-Gateway-Architektur
API Gateway ist ein API-Verwaltungssystem, das die Verwaltung, Überwachung und Authentifizierung Ihrer APIs bietet. API Gateway besteht aus folgenden Komponenten:
- 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 Ihrer APIs
- Google Cloud Console: zum Protokollieren, Überwachen und Freigeben
Architektur
Im Folgenden sehen 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 zugängliche URL des REST-Endpunkts für die API, den Back-End-Dienst, auf den die API zugreift, und alle anderen Merkmale der API wie Authentifizierung, Datenformat und Antwortoptionen.
Der API-Client sendet eine REST-Anfrage an eine API, die auf API Gateway gehostet wird, um auf Backend-Dienste zuzugreifen. Ein API-Client kann jede App sein, die einen REST-Aufruf ausführen kann, z. B. ein Browser, eine mobile App oder eine Webanwendung.
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 Backend-Implementierung wissen. Eine einzelne API, die auf API Gateway gehostet wird, kann so konfiguriert werden, dass sie basierend auf den in der Anfrage übergebenen Informationen auf verschiedene Backends zugreift.
API Gateway-Komponenten
API Gateway
API Gateway bietet eine vollständig verwaltete Lösung für das Pay-per-Use-Hosting Ihrer APIs. API Gateway bietet sicheren Zugriff auf Ihre Backend-Dienste über eine klar definierte REST API, die über alle Dienste hinweg unabhängig von der Dienstimplementierung konsistent ist.
API Gateway ist in Google Cloud integriert, sodass Sie dieselben Entwicklungs-, Überwachungs-, Logging- und Trace-Tools verwenden können, die Sie auch für andere Google Cloud-Produkte verwenden.
Wenn Sie eine Verbindung zu einem Backend-Dienst herstellen, der nicht in Google Cloud gehostet wird, können Sie weiterhin 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 wie API-Schlüsselauthentifizierung, Monitoring und Logging zur Laufzeit an. 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 Ihre API zu definieren. Anschließend laden Sie die OpenAPI-Spezifikation mit der gcloud CLI in Service Management hoch, wodurch die API-Konfiguration erstellt wird. Hier werden auch andere Konfigurationsaufgaben durchgeführt, z. B. das Freigeben der 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 Aufrufe an verschiedene Google Cloud-Dienste senden können. Sie verwenden die Google Cloud CLI, um Ihre OpenAPI-Spezifikation hochzuladen, mit der die API-Konfiguration erstellt wird, und um dann die API-Konfiguration für das API-Gateway bereitzustellen.
Cloud Console
Google Cloud Console ist die grafische Benutzeroberfläche für die Google Cloud. Verwenden Sie die Google Cloud Console, um Monitoring- und Loggingdaten anzuzeigen, die von Service Control aufgezeichnet wurden, um die Authentifizierung und Autorisierung zu konfigurieren und damit Entwickler API-Schlüssel zum Aufrufen der API generieren können.
API-Anfrage verarbeiten
In einer API-Konfiguration gibt es zwei Arten von Endpunkten:
- API-Endpunkt: definiert den öffentlich verfügbaren Endpunkt, über den Clients Ihre APIs nutzen.
- Backendendpunkt: Definiert den Endpunkt, über den die API eine Verbindung zu Ihrem Backenddienst herstellt. Sicherheitseinstellungen wie der HTTP- oder HTTPS-Zugriff werden durch die Implementierung des Back-End-Dienstes definiert.
Anfragen an Ihren API-Endpunkt werden an den Backend-Endpunkt weitergeleitet, einschließlich aller Daten, die im Rahmen der Anfrage übergeben wurden. 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:
API Gateway erstellt ein Trace-Token für Cloud Trace.
API Gateway gleicht den Pfad der eingehenden Anfragen mit der Ziel-API ab. Nachdem eine passende Route gefunden wurde, führt API Gateway alle Authentifizierungsschritte für die angegebene API aus.
Wenn eine JWT-Validierung notwendig ist, validiert API Gateway die Authentifizierung mithilfe des passenden öffentlichen Schlüssels für den Signer und validiert das Zielgruppenfeld in JWT. Falls ein API-Schlüssel benötigt wird, ruft API Gateway die Service Control API auf, um den Schlüssel zu validieren.
Service Control sucht den Schlüssel, um ihn zu validieren, und überprüft, ob in dem Projekt, zu dem der Schlüssel gehört, die API aktiviert ist. Falls der Schlüssel nicht gültig ist oder die API im Projekt nicht aktiviert ist, wird der Aufruf zurückgewiesen. Dies wird durch 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.