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:
Vorheriger Schritt¶
Konfigurationsdatei aktualisieren¶
Bemerkung
Der Name der Konfigurationsdatei ist im Feld Configuration File Name
des Arbeitsblatts erfasst.
Fügen Sie den folgenden
securityDefinitions
-Abschnitt zur Konfigurationsdatei hinzu bzw. aktualisieren Sie ihn. Fügen Sie diesen Abschnitt direkt über dem Abschnittschemes
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
). Wenn Sie die temporäre Sicherheitsdefinition in Schritt 2 des Tutorials (Schritt 2: Proxydienst (Google Cloud API Gateway) über die Konsole erstellen) hinzugefügt haben, haben Sie die Änderung bereits vorgenommen.Notieren Sie sich außerdem diesen Namen auf dem Arbeitsblatt unter
Security Definition Name
.Ersetzen Sie
<gmail service account>
durch den Wert im FeldAPI_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)
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 FeldSecurity Definition Name
Ihres Arbeitsblatts, wenn Sie dies noch nicht getan haben.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: []
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:
Klicken Sie auf der Seite Gateways auf den Namen Ihres Gateways.
Klicken Sie auf EDIT.
Klicken Sie unter API Config in das Feld mit der Bezeichnung Select a Config.
Wählen Sie die Option Create new API config aus.
Klicken Sie in dem Feld, das Upload an API Spec enthält, auf die Schaltfläche BROWSE.
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.Geben Sie den Anzeigenamen aus Display Name ein. Verwenden Sie einen neuen, eindeutigen Namen, nicht den Namen, den Sie zuvor verwendet haben.
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.
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:
Klicken Sie auf EDIT.
Suchen Sie unter API Config wieder das Feld Select a Config, und klicken Sie in das Feld.
Wählen Sie die neue API Config aus.
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.