Beispiel – Externer Zugriff mit OAuth und Referenzen¶
Unter diesem Thema wird anhand eines Beispiels beschrieben, wie Anbieter mithilfe von Referenzen Zugriff auf einen Endpunkt gewähren können, der nicht zu Snowflake gehört. Dieses Beispiel verwendet ein OAuth2-Geheimnis und eine Integration für den externen Zugriff, um den Zugriff zu ermöglichen.
Wichtig
Dieses Beispiel zeigt die manuelle Methode mit Referenzen, bei denen Verbrauchende selbst Integrationen erstellen müssen. Für neue Apps empfiehlt Snowflake stattdessen die Verwendung des automatisierten Gewährens von Berechtigungen anhand von App-Spezifikationen. Siehe Integrationen für den externen Zugriff (EAIs) mit App-Spezifikationen anfordern für Integrationen für den externen Zugriff und Sicherheitsintegrationen mit App-Spezifikationen anfordern für Sicherheitsintegrationen.
Referenzen zur Manifest-Datei hinzufügen¶
Um den Zugriff auf einen externen Endpunkt über OAuth zu ermöglichen, kann ein Anbietender die folgenden Einträge zur Manifest-Datei hinzufügen:
EXTERNAL ACCESS INTEGRATION-Referenz mit der Berechtigung USAGE
SECRET-Referenz mit der Berechtigung READ
Das folgende Beispiel einer Manifest-Datei zeigt, wie Sie diese Referenzen definieren:
Bemerkung
Bei diesen Referenzen darf die Eigenschaft multi_valued nicht auf „true“ gesetzt sein.
Referenzen auf Geheimnisse und externe Zugriffsobjekte erfordern ebenfalls eine configuration_callback-Funktion im Setup-Skript. Weitere Informationen dazu finden Sie unter Funktion „configuration_callback“ zu Setup-Skript hinzufügen.
Funktion „configuration_callback“ zu Setup-Skript hinzufügen¶
Nachdem Sie die Verweise für die Integration das Geheimnis und die Integration für den externen Zugriff hinzugefügt haben, müssen Sie die Funktion configuration_callback in das Setup-Skript einfügen. Um eine Integration für den externen Zugriff oder ein Geheimnis zu erstellen, muss die Anwendung in der Lage sein, Werte für den Port des Hosts, den Typ des Geheimnisses, die Autorisierung und den Token-Endpunkt für OAuth usw. zu bestimmen. Mit der Funktion configuration_callback werden diese Informationen der Anwendung vom Verbraucherkonto bereitgestellt.
Snowsight führt diese Callback-Prozedur aus, um den Konfigurationsdialog zu füllen, der den Benutzer auffordert, die Objekte zu konfigurieren. Damit die Prozedur ausgeführt wird, muss sie einer App-Rolle zugewiesen werden.
Bemerkung
Die Funktion „configuration_callback“ wird nur bei Integrationen für den externen Zugriff und Geheimnisobjekten unterstützt.
Die Callback-Funktion hat die folgenden Voraussetzungen:
Die Callback-Funktion muss ein Argument akzeptieren, das einen Referenznamen enthält. So kann dieselbe Callback-Funktion mehrere Referenzen verarbeiten.
Die Callback-Funktion muss ein wohlgeformtes JSON-Objekt zurückgeben. Das JSON-Objekt enthält die folgenden Eigenschaften:
typeGibt den Typ der Meldung an. Gültige Werte:
CONFIGURATION: Gibt einen Payload mit den Konfigurationswerten für das Objekt basierend auf dem Objekttyp zurück.ERROR: Gibt einen Fehler mit der zugehörigen Meldung zurück, die in Snowsight angezeigt wird.
payloadEnthält den Inhalt der Antwort basierend auf dem Wert der Eigenschaft
typeund dem konfigurierten Objekttyp.
Die Signatur für den Konfigurations-Callback ist wie folgt:
Innerhalb des Setup-Skripts müssen Sie den Anwendungsrollen, die für die Konfiguration der App verwendet werden, die Berechtigung USAGE zuweisen, damit sie die gespeicherte Prozedur aufrufen dürfen. Das folgende Beispiel zeigt, wie Sie die Berechtigung USAGE einer gespeicherten Prozedur zuweisen:
Die Callback-Funktion gibt ein JSON-Objekt zurück. Weitere Informationen dazu finden Sie unter JSON-Format für die Konfigurations-Callback-Antwort.
Das folgende Beispiel zeigt eine typische Callback-Funktion für den Umgang mit Referenzen auf externe Zugriffe und Geheimnisse.
Diese Funktion macht Folgendes:
Für eine Referenz auf eine Integration für den externen Zugriff gibt die Prozedur ein JSON-Objekt zurück, das die erforderlichen Konfigurationsinformationen enthält. Weitere Informationen dazu finden Sie unter JSON-Format für Integration für den externen Zugriff.
Für eine Referenz auf ein Geheimnis gibt die Prozedur ein JSON-Objekt zurück, das eine Geheimniskonfiguration vom Typ OAuth2 enthält. Weitere Informationen dazu finden Sie unter JSON-Format bei Geheimnisreferenzen.
Verwenden der Python Permission SDK für Geheimnisse und Integrationen für den externen Zugriff¶
Das Python Permission SDK unterstützt Geheimnisse und Integrationen für den externen Zugriff. Allerdings ist das Verhalten bei diesen Objekten etwas anders.
Wenn ein Anbieter permission.request_reference() aufruft und den Namen einer Referenz mit einem object_type-Wert von SECRET oder EXTERNAL ACCESS INTEGRATION übergibt, führt Snowsight automatisch Folgendes aus:
Ruft die Funktion
configuration_callbackim Setup-Skript auf.Validiert die von der Funktion
configuration_callbackzurückgegebenen Werte.Zeigt den Konfigurationsdialog für den Verbraucher an.
Bemerkung
Wenn ein Anbieter eine Integration für den externen Zugriff mit der Eigenschaft payload.allow_secrets konfiguriert, die auf LIST eingestellt ist, ist es nicht erforderlich, einen separaten Aufruf zu tätigen, um eine Referenz für das Geheimnis anzufordern. Die Geheimniskonfiguration ist implizit Teil der Konfiguration für die Integration des externen Zugriffs.