Schritt 5: GCP-Sicherheitsrichtlinie für Proxydienst über die Konsole erstellen

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 der Endpunkt öffentlich zugänglich ist, sollten Sie ihn durch Erstellen einer Sicherheitsrichtlinie auf dem Google Cloud API Gateway schützen.

Unter diesem Thema finden Sie eine Anleitung zum Erstellen einer Sicherheitsrichtlinie für das API Gateway durch Hinzufügen eines angepassten securityDefinitions-Abschnitts zur Konfigurationsdatei für die API-Definition.

Wichtig

Snowflake empfiehlt dringend die Erstellung einer Sicherheitsrichtlinie für das API Gateway. Nach Abschluss dieses Schritts darf nur Snowflake Ihre Google Cloud Function über das API Gateway aufrufen.

Unter diesem Thema:

Konfigurationsdatei aktualisieren

Bemerkung

Der Name der Konfigurationsdatei ist im Feld „Configuration File Name“ des Arbeitsblatts erfasst.

  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>"
    

    Im Abschnitt:

    • Ersetzen Sie <security-def-name> durch einen eindeutigen Namen für die Sicherheitsdefinition (z. B. snowflakeAccess01).

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

    • Ersetzen Sie <gmail service account> durch den Wert aus dem Feld „API_GCP_SERVICE_ACCOUNT“ Ihres Arbeitsblatts. Fügen Sie den Wert an zwei Stellen der Konfigurationsdatei ein:

      • Feld x-google-issuer

      • Feld x-google-jwks_uri (angehängt am Ende des Feldes)

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

    Fügen Sie unterhalb des Feldes 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 aus dem Feld „Security Definition Name“ Ihres 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: []
    
  3. Speichern Sie die Konfigurationsdatei.

Ihre aktualisierte Konfigurationsdatei sollte ungefähr wie folgt 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

Aktualisierte Datei neu laden

Nach dem Aktualisieren der Konfigurationsdatei müssen Sie die Datei in die Google Cloud Console 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 aufweist.

  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 Gateway befinden. Wenn im Feld Config der Anzeigename der alten API-Konfigurationsdatei 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.

    Möglicherweise müssen Sie ein paar Minuten warten, bis die Aktualisierung des API Gateway abgeschlossen ist. Möglicherweise sehen Sie links neben dem Namen des API Gateway ein Symbol, das anzeigt, dass das Gateway gerade aktualisiert wird.

Klicken Sie oberhalb des Gateway-Namens auf die Schaltfläche REFRESH, 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.

Externe Funktion testen

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.

Nächster Schritt

Keiner. Sie haben erfolgreich eine externe Funktion für GCP erstellt.