Traffic zu einem Dienst mit der Google Cloud Console schützen

Auf dieser Seite erfahren Sie, wie Sie eine API in API Gateway bereitstellen, um den Traffic zu einem Backend-Dienst zu sichern.

Führen Sie die folgenden Schritte aus, um eine neue API für den Zugriff auf einen Back-End-Dienst in Cloud Functions über die Google Cloud Console bereitzustellen. In dieser Kurzanleitung wird auch beschrieben, wie Sie Ihr Backend mithilfe eines API-Schlüssels vor unbefugtem Zugriff schützen.

Hinweise

  1. Rufen Sie in der Google Cloud Console die Seite API-Gateway auf und wählen Sie ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Seite "API Gateway"

  2. Für API Gateway müssen Sie die folgenden Google-Dienste aktivieren:

    Name Titel
    apigateway.googleapis.com API Gateway API
    servicemanagement.googleapis.com Service Management API
    servicecontrol.googleapis.com Service Control API

    Wenn Sie diese Dienste für das ausgewählte Projekt nicht aktiviert haben, werden Sie jetzt dazu aufgefordert.

  3. Hier kannst du überprüfen, ob das der Fall ist.

    Weitere Informationen zum Aktivieren der Abrechnung

API-Backend bereitstellen

API Gateway steht vor einem bereitgestellten Backend-Dienst und verarbeitet alle eingehenden Anfragen. In dieser Kurzanleitung leitet API Gateway eingehende Aufrufe an ein Cloud Functions-Backend namens helloGET weiter, das die unten gezeigte Funktion enthält:

/**
 * HTTP Cloud Function.
 * This function is exported by index.js, and is executed when
 * you make an HTTP request to the deployed function's endpoint.
 *
 * @param {Object} req Cloud Function request context.
 *                     More info: https://expressjs.com/en/api.html#req
 * @param {Object} res Cloud Function response context.
 *                     More info: https://expressjs.com/en/api.html#res
 */

exports.helloGET = (req, res) => {
  res.send('Hello World!');
};

Führen Sie die Schritte in der Kurzanleitung: Google Cloud CLI verwenden aus, um den Cloud Functions-Beispielcode herunterzuladen und den Backend-Dienst der Cloud Function bereitzustellen.

API-Definition erstellen

API Gateway verwendet eine API-Definition, um Aufrufe an den Backend-Dienst weiterzuleiten. Sie können eine OpenAPI-Spezifikation verwenden, die spezielle Annotationen enthält, um das gewünschte API Gateway-Verhalten zu definieren. Die OpenAPI-Spezifikation für diese Kurzanleitung enthält Routinganweisungen an das Cloud Functions-Backend:

# openapi2-functions.yaml
swagger: '2.0'
info:
  title: API_ID optional-string
  description: Sample API on API Gateway with a Google Cloud Functions backend
  version: 1.0.0
schemes:
  - https
produces:
  - application/json
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      x-google-backend:
        address: https://us-central1-PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

So verwenden Sie die oben gezeigte OpenAPI-Spezifikation, um Ihre API zu definieren:

  1. Erstellen Sie über die Befehlszeile eine neue Datei mit dem Namen openapi2-functions.yaml.

  2. Kopieren Sie den Inhalt der oben angezeigten OpenAPI-Spezifikation und fügen Sie ihn in die neu erstellte Datei ein

  3. Bearbeiten Sie die Datei so:

    1. Ersetzen Sie im Feld title den Namen API_ID durch den Namen Ihrer API (die im nächsten Schritt erstellt wird) und ersetzen Sie optional-string durch eine kurze Beschreibung Ihrer Wahl. Der Wert dieses Felds wird verwendet, wenn API-Schlüssel erstellt werden, die Zugriff auf diese API gewähren. Benennungsrichtlinien für API-IDs
    2. Ersetzen Sie im Feld address PROJECT_ID durch den Namen Ihres Google Cloud-Projekts.

Gateway erstellen

Jetzt können Sie ein Gateway auf API Gateway erstellen und bereitstellen.

  1. Öffnen Sie in der Google Cloud Console die Seite „API-Gateway“.

    Zur Seite "API Gateway"

  2. Klicken Sie auf Gateway erstellen.

  3. Im Abschnitt API:

    1. Sie können eine neue API erstellen oder eine vorhandene API aus dem Drop-down-Menü API auswählen auswählen. Wählen Sie für diese Anleitung Neue API erstellen aus.
    2. Geben Sie den Anzeigenamen für Ihre API ein.
    3. Geben Sie die API-ID für Ihre API ein.
    4. (Optional) Fügen Sie Ihrer API Labels in einem Schlüssel/Wert-Paar-Format hinzu. Wenn Sie mehrere Labels hinzufügen möchten, klicken Sie auf Label hinzufügen und geben Sie zusätzliche Werte ein.
  4. Im Abschnitt API-Konfiguration:

    1. Sie können eine neue API-Konfiguration erstellen oder eine vorhandene API-Konfiguration aus dem Drop-down-Menü Konfiguration auswählen auswählen. Wählen Sie für diese Anleitung Neue API-Konfiguration erstellen aus.
    2. Verwenden Sie den Dateibrowser, um die openapi2-functions.yaml zum Definieren der API hochzuladen.
    3. Geben Sie einen Anzeigenamen für die API-Konfiguration ein.
    4. Wählen Sie ein Dienstkonto aus der Drop-down-Liste aus. Das ausgewählte Dienstkonto wird als Identität für API Gateway verwendet.

    5. (Optional) Fügen Sie Ihrer API-Konfiguration Labels in einem Schlüssel/Wert-Paar-Format hinzu. Wenn Sie mehrere Labels hinzufügen möchten, klicken Sie auf Label hinzufügen und geben Sie zusätzliche Werte ein.

  5. Im Abschnitt Gatewaydetails:

    1. Geben Sie den Anzeigenamen des Gateways ein. Die URL für das Gateway wird automatisch generiert.
    2. Wählen Sie den Standort des Gateways aus dem Drop-down-Menü aus.
    3. (Optional) Fügen Sie dem Gateway Labels in einem Schlüssel/Wert-Format hinzu. Wenn Sie mehrere Labels hinzufügen möchten, klicken Sie auf Label hinzufügen und geben Sie zusätzliche Werte ein.
  6. Klicken Sie auf Gateway erstellen.

Dadurch wird die API-Konfiguration auf einem neu erstellten Gateway bereitgestellt. Durch das Bereitstellen einer API-Konfiguration auf einem Gateway wird eine externe URL definiert, über die API-Clients auf Ihre API zugreifen können.

Es kann einige Minuten dauern, bis der Vorgang abgeschlossen ist. Wenn Sie den Status des Erstellungs- und Bereitstellungsprozesses prüfen möchten, können Sie auf das Symbol Benachrichtigung in der Hauptnavigationsleiste klicken, um eine Statusbenachrichtigung anzuzeigen, wie in der folgenden Abbildung dargestellt:

Benachrichtigungsfeld

Nach erfolgreichem Abschluss können Sie sich Details zum Gateway auf der Landingpage des Gateways ansehen.

Zur Seite "Gateways"

Notieren Sie sich die Gateway-URL. Dies wird im nächsten Schritt zum Testen der Bereitstellung verwendet.

API-Bereitstellung testen

Jetzt können Sie Anfragen über die bei der Bereitstellung des Gateways generierte URL an Ihre API senden.

Geben Sie im Webbrowser die folgende URL ein. Dabei gilt:

  • GATEWAY_URL gibt die bereitgestellte Gateway-URL an.
  • hello ist der in Ihrer API-Konfiguration angegebene Pfad.
https://GATEWAY_URL/hello

Beispiel:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Die Meldung Hello World! sollte in Ihrem Browser angezeigt werden.

Sie haben erfolgreich ein API Gateway erstellt und bereitgestellt.

Zugriff mithilfe eines API-Schlüssels sichern

Um den Zugriff auf Ihr API-Backend zu sichern, können Sie einen mit Ihrem Projekt verknüpften API-Schlüssel generieren und diesem Schlüssel Zugriff zum Aufrufen der API gewähren. Weitere Informationen finden Sie unter API-Zugriff mit API-Schlüsseln einschränken.

Wenn dem Google Cloud-Projekt, das Sie in dieser Kurzanleitung verwenden, noch kein API-Schlüssel zugeordnet ist, können Sie einen hinzufügen. Führen Sie dazu die Schritte unter API-Schlüssel erstellen aus.

So sichern Sie den Zugriff auf Ihr Gateway mit einem API-Schlüssel:

  1. Aktivieren Sie die Unterstützung von API-Schlüsseln für Ihren Dienst:
    1. Rufen Sie in der Google Cloud Console APIs und Dienste > Bibliothek auf.
    2. Geben Sie in der Suchleiste den Namen des verwalteten Dienstes der soeben erstellten API ein. Sie finden diesen Wert in der Spalte Verwalteter Dienst für Ihre API auf der Landing page der APIs. Beispiel:
      my-api-123abc456def1.apigateway.my-project.cloud.goog
    3. Klicken Sie auf der Landing page für Ihren Dienst auf Aktivieren.
  2. Ändern Sie die OpenAPI-Spezifikation, mit der Sie Ihre API-Konfiguration erstellt haben, um Anweisungen zur Durchsetzung einer Sicherheitsrichtlinie für die API-Schlüsselvalidierung für den gesamten Traffic aufzunehmen. Fügen Sie den Typ security und securityDefinitions wie unten gezeigt hinzu:
        # openapi2-functions.yaml
        swagger: '2.0'
        info:
          title: API_ID optional-string
          description: Sample API on API Gateway with a Google Cloud Functions backend
          version: 1.0.0
        schemes:
          - https
        produces:
          - application/json
        paths:
          /hello:
            get:
              summary: Greet a user
              operationId: hello
              x-google-backend:
                address:https://us-central1.PROJECT_ID.cloudfunctions.net/helloGET
              security:
              - api_key: []
              responses:
                '200':
                  description: A successful response
                  schema:
                    type: string
        securityDefinitions:
          # This section configures basic authentication with an API key.
          api_key:
            type: "apiKey"
            name: "key"
            in: "query"
    Die securityDefinition konfiguriert die API so, dass ein API-Schlüssel als Abfrageparameter mit dem Namen key übergeben werden muss, wenn Zugriff auf alle in der Spezifikation definierten Pfade angefordert wird.
  3. Erstellen Sie eine neue API-Konfiguration und stellen Sie sie für Ihr vorhandenes Gateway bereit:
    1. Rufen Sie die Landingpage des Gateways auf.

      Zur Seite "Gateways"

    2. Wählen Sie das Gateway aus der Liste aus, um Details aufzurufen.
    3. Klicken Sie auf Bearbeiten, um den Bereich für die Gateway-Konfiguration zu öffnen.
    4. Im Bereich API-Konfiguration:
      1. Wählen Sie im verfügbaren Drop-down-Menü die Option Neue API-Konfiguration erstellen aus.
      2. Laden Sie Ihre geänderte OpenAPI-Spezifikation mit dem Dateibrowser hoch.
      3. Geben Sie den Anzeigenamen für die neue API-Konfiguration ein.
      4. Wählen Sie ein Dienstkonto aus der Drop-down-Liste aus. Das ausgewählte Dienstkonto wird als Identität für API Gateway verwendet.
      5. (Optional) Fügen Sie Ihrer API-Konfiguration Labels in einem Schlüssel/Wert-Paar-Format hinzu. Wenn Sie mehrere Labels hinzufügen möchten, klicken Sie auf Label hinzufügen und geben Sie zusätzliche Werte ein.
    5. Klicken Sie auf Aktualisieren.

API-Schlüssel testen

Nachdem Sie die geänderte API erstellt und bereitgestellt haben, versuchen Sie, eine Anfrage an sie zu senden.

Geben Sie im Webbrowser die folgende URL ein. Dabei gilt:

  • GATEWAY_URL gibt die bereitgestellte Gateway-URL an.
  • hello ist der in Ihrer API-Konfiguration angegebene Pfad.
https://GATEWAY_URL/hello

Beispiel:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Dies sollte zu folgendem Fehler führen:

UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.

Geben Sie jetzt im Webbrowser die folgende URL ein. Dabei gilt:

  • GATEWAY_URL gibt die bereitgestellte Gateway-URL an.
  • hello ist der in Ihrer API-Konfiguration angegebene Pfad.
  • API_KEY gibt den API-Schlüssel an, den Sie unter Zugriff mit einem API-Schlüssel sichern erstellt haben.
https://GATEWAY_URL/hello?key=API_KEY

Nun sollte Hello World! in Ihrem Browser angezeigt werden.

Glückwunsch! Sie haben Ihr API-Backend mit einem API Gateway erfolgreich geschützt. Sie können jetzt mit der Einrichtung neuer API-Clients beginnen. Generieren Sie dazu zusätzliche API-Schlüssel.

API-Aktivität verfolgen

  1. Sehen Sie sich in der Google Cloud Console auf der Seite API Gateway die Aktivitätsgrafiken für die API an. Klicken Sie auf die API, um die Aktivitätsgrafiken auf der Seite Übersicht aufzurufen. Es kann einen Moment dauern, bis die Anfragen in den Grafiken angezeigt werden.

  2. Sehen Sie sich auf der Seite Log-Explorer die Anfragelogs an. Einen Link zur Seite Log-Explorer finden Sie auf der Seite API-Gateway in der Google Cloud Console.

    Zur Seite "API Gateway"

    Auf der API Gateway-Seite:

    1. Wählen Sie die API aus, die Sie ansehen möchten.
    2. Klicken Sie auf den Tab Details.
    3. Klicken Sie auf den Link unter Logs.

Bereinigen

So vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Kurzanleitung verwendeten Ressourcen in Rechnung gestellt werden:

Alternativ können Sie auch das für diese Anleitung verwendete Google Cloud-Projekt löschen.

Nächste Schritte