Schritt 5: Sicherheitsrichtlinie für den Proxydienst (Google Cloud API Gateway) festlegen

Diese Anleitung zeigt, wie Sie die Sicherheitsrichtlinie auf Ihrem Google Cloud API Gateway einrichten.

Mit den vorherigen Schritten wurde eine Google Cloud Function erstellt, die von jedem aufgerufen werden kann, der über den korrekten Google Cloud API Gateway-Endpunkt verfügt. Wenn Sie nicht möchten, dass Ihr Endpunkt öffentlich zugänglich ist, sollten Sie ihn durch Hinzufügen eines angepassten securityDefinitions-Abschnitts in der Konfigurationsdatei für die API-Definition sichern.

Unter diesem Thema:

Konfigurationsdatei aktualisieren

Der Name der Konfigurationsdatei ist im Feld „Configuration File Name“ des Arbeitsblatts erfasst. Die folgenden Anweisungen zeigen Ihnen, wie Sie der Konfigurationsdatei einen Abschnitt securityDefinitions hinzufügen. Nachdem dies hinzugefügt, angepasst, geladen und ausgeführt wurde, kann Ihre Cloudfunktion nur von Snowflake über das API-Gateway aufgerufen werden.

  1. Fügen Sie den folgenden Abschnitt securityDefinitions zur Konfigurationsdatei hinzu. Fügen Sie ihn direkt über dem Abschnitt schemes: der Konfigurationsdatei und auf der gleichen Einrückungsebene hinzu.

    securityDefinitions:
      <security-def-name>:
        authorizationUrl: ""
        flow: "implicit"
        type: "oauth2"
        x-google-issuer: "<gmail service account>"
        x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<gmail service account>"
    
  2. Ersetzen Sie den Wert für <security-def-name> durch einen eindeutigen Namen der Sicherheitsdefinition (z. B. snowflakeAccess01).

  3. Notieren Sie sich den Namen auf dem Arbeitsblatt im Feld „Security Definition Name“.

  4. Der Wert <gmail service account> wurde durch den Wert im Feld „API_GCP_SERVICE_ACCOUNT“ des Arbeitsblatts ersetzt. Nehmen Sie die Änderung in zwei Feldern der Konfigurationsdatei vor:

    1. Im Feld x-google-issuer.

    2. Am Ende des Feldes x-google-jwks_uri.

  5. Aktualisieren Sie in der Konfigurationsdatei den Abschnitt post:, um auf die oben erstellte Sicherheitsdefinition zu verweisen.

    1. Fügen Sie unter dem Feld operationId Folgendes hinzu:

      security:
        - <security-def-name>: []
      

      Dies sollte auf die gleiche Ebene wie das Feld operationId eingerückt werden.

      Ersetzen Sie <security-def-name> durch den Wert im Feld „Security Definition Name“ des Arbeitsblatts.

      Stellen Sie sicher, dass vor dem Namen der Sicherheitsdefinition ein Bindestrich und ein Leerzeichen stehen, wie oben gezeigt.

      Achten Sie darauf, dass die leeren eckigen Klammern ([]) nach dem Doppelpunkt enthalten sind.

      Beispiel:

      security:
        - snowflakeAccess01: []
      

      Ihre aktualisierte Konfigurationsdatei sollte ähnlich wie die folgende aussehen:

      swagger: '2.0'
      info:
        title: API Gateway config for Snowflake external function
        description: This configuration file connects the API Gateway resource to the remote service (Cloud Function).
        version: 1.0.0
      securityDefinitions:
        snowflakeAccess01:
          authorizationUrl: ""
          flow: "implicit"
          type: "oauth2"
          x-google-issuer: "<API_GCP_SERVICE_ACCOUNT>"
          x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<API_GCP_SERVICE_ACCOUNT>"
      schemes:
        - https
      produces:
        - application/json
      paths:
        /demo-func-resource:
          post:
            summary: Echo the input
            operationId: operationID
            security:
              - snowflakeAccess01: []
            x-google-backend:
              address: <Cloud Function Trigger URL>
              protocol: h2
            responses:
              '200':
                description: <DESCRIPTION>
                schema:
                  type: string
      
  6. Speichern Sie die Konfigurationsdatei.

Aktualisierte Konfigurationsdatei neu laden

  1. Klicken Sie auf der Seite Gateways auf den Namen Ihres Gateways.

  2. Klicken Sie auf EDIT.

  3. Klicken Sie unter API Config in das Feld mit der Bezeichnung Select a Config.

  4. Wählen Sie die Option Create new API config aus.

  5. Klicken Sie in dem Feld, das Upload an API Spec enthält, auf die Schaltfläche BROWSE.

  6. Wählen Sie die gewünschte YAML-Datei aus, die Sie zuvor erstellt haben. Prüfen Sie, ob sie die Erweiterung „.yaml“ oder „.yml“ hat.

  7. Geben Sie den Anzeigenamen aus Display Name ein. Verwenden Sie einen neuen, eindeutigen Namen, nicht den Namen, den Sie zuvor verwendet haben.

  8. Wenn Sie aufgefordert werden, unter Select a Service Account das Dienstkonto auszuwählen, dann wählen Sie die Option App Engine default service account aus.

    Wenn Sie eine Funktion erstellen, die in der Produktion verwendet werden soll (und nicht als Beispiel), können Sie ein anderes Dienstkonto auswählen.

    Das ausgewählte Dienstkonto muss über entsprechende Berechtigungen verfügen, einschließlich der Berechtigung zum Aufrufen der Google Cloud Function.

  9. Sie sollten sich nun wieder auf dem Bildschirm Ihres API-Gateways befinden. Wenn im Feld Config der Anzeigename der alten API Config-Datei angezeigt wird, dann gehen Sie wie folgt vor:

    1. Klicken Sie auf EDIT.

    2. Suchen Sie unter API Config wieder das Feld Select a Config, und klicken Sie in das Feld.

    3. Wählen Sie die neue API Config aus.

    4. Klicken Sie auf die Schaltfläche UPDATE.

      Dies bringt Sie zurück zur Liste der API-Gateways.

    5. Möglicherweise müssen Sie ein paar Minuten warten, bis die Aktualisierung des API-Gateways abgeschlossen ist.

      Möglicherweise sehen Sie links neben dem Namen des API-Gateways ein Symbol, das anzeigt, dass das Gateway gerade aktualisiert wird.

      Sie können oberhalb des Gateway-Namens auf die Schaltfläche REFRESH klicken, um zu prüfen, ob die Aktualisierung noch ausgeführt wird. Nachdem das Symbol links neben

      dem Gateway-Namen verschwunden ist, sollte das Gateway vollständig aktualisiert worden sein, und Sie können mit dem nächsten Schritt fortfahren.

  10. Um sicherzustellen, dass Ihre externe Funktion mit der neuen Sicherheitskonfigurationsdatei korrekt funktioniert, rufen Sie Ihre externe Funktion erneut auf. Weitere Details dazu finden Sie unter Aufrufen einer externen Funktion für GCP.