Verwenden von Snowflake OAuth für lokale Anwendungen¶
Snowflake OAuth wird durch die Erstellung einer Sicherheitsintegration implementiert, die eine Schnittstelle zwischen Snowflake als OAuth-Autorisierungsserver und der Anwendung definiert, die sich im Namen eines Benutzenden mit dem OAuth-Autorisierungscodeablauf authentifiziert. Snowflake OAuth ist eine starke Authentifizierungsoption, da die Anwendung keine Geheimnisse speichern oder verwalten muss und Sie keinen Identitätsanbietenden von Drittanbietenden wie External OAuth konfigurieren müssen.
Um zu vereinfachen, wie eine lokale Anwendung, d. h. eine Desktopanwendung, Snowflake OAuth zur Authentifizierung verwendet, verfügt Ihr Konto über eine integrierte Sicherheitsintegration namens SNOWFLAKE$LOCAL_APPLICATION. Da die Sicherheitsintegration bereits vorhanden ist, wenn eine lokale Anwendung einen Snowflake-Client wie den Python-Treiber oder Snowflake CLI verwendet, kann sich die Anwendung bei Snowflake authentifizieren, indem eine Eigenschaft oder ein Parameter des Clients festgelegt wird. Es ist keine weitere Einrichtung erforderlich. Die automatische Integration vereinfacht auch die Einrichtung für lokale Anwendungen, die die OAuth-Endpunkte direkt aufrufen, anstatt einen Snowflake-Client zu verwenden.
Ein Verwaltender kann die Parameter der SNOWFLAKE$LOCAL_APPLICATION-Integration ändern, um das Verhalten anzupassen, z. B. wie lange OAuth-Zugriffstoken und Aktualisierungstoken gültig sind.
Snowflake OAuth für lokale Anwendungen bietet folgende zusätzliche Vorteile:
Im Gegensatz zu von Benutzenden erstellten Snowflake OAuth-Integrationen wird ein Wechsel der Sitzungen innerhalb der Rolle unterstützt.
Es ist ein einfacher Ersatz für Anwendungen, die derzeit Kennwörter nur zur Authentifizierung von Benutzenden verwenden. Snowflake unterstützt nicht länger Ein-Faktor-Kennwörter. Snowflake OAuth für lokale Anwendungen bietet einen Weg, eine sicherere Form der Authentifizierung zu verwenden, ohne dass umfangreiche Einrichtungsschritte erforderlich sind.
Bemerkung
Die SNOWFLAKE$LOCAL_APPLICATION-Sicherheitsintegration wird langsam auf alle Konten eingeführt. Um festzustellen, ob diese automatische Integration in Ihrem Konto vorhanden ist, führen Sie den folgenden Befehl aus:
SHOW SECURITY INTEGRATION LIKE 'SNOWFLAKE$LOCAL_APPLICATION';
Konfigurieren der Snowflake OAuth-Integration¶
Die automatische SNOWFLAKE$LOCAL_APPLICATION-Sicherheitsintegration ist Eigentum des Systems, kann aber von Sicherheitsadministratoren (d. h. Benutzenden, denen die Systemrolle SECURITYADMIN zugewiesen wurde) konfiguriert werden.
Sicherheitsadministratoren können die folgenden Parameter der Sicherheitsintegration konfigurieren:
Parameter |
Beschreibung |
|---|---|
|
Steuert, ob die Integration aktiviert ist. Wenn die Integration deaktiviert ist, müssen lokale Anwendungen eine andere Authentifizierungsmethode verwenden. |
|
Steuert, ob der Autorisierungsserver Aktualisierungstoken ausgibt. |
|
Legt die Gültigkeitsdauer von Aktualisierungstoken fest. |
|
Steuert, ob der Autorisierungsserver einmalige Aktualisierungstoken ausgibt. |
|
Legt die Gültigkeitsdauer von Zugriffstoken fest. |
Um beispielsweise die automatische Sicherheitsintegration so zu ändern, dass der Autorisierungsserver mit der Ausgabe von einmaligen Aktualisierungstoken beginnt, führen Sie die folgenden Befehle aus:
USE ROLE SECURITYADMIN;
ALTER SECURITY INTEGRATION SNOWFLAKE$LOCAL_APPLICATION
SET OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED = TRUE;
Weitere Informationen zum Einstellen dieser Parameter finden Sie unter ALTER SECURITY INTEGRATION.
Überwachen der Anmeldefrequenz¶
Bei OAUTH_ISSUE_REFRESH_TOKENS = TRUE können Anwendungen Aktualisierungstoken verwenden, um neue Zugriffstoken zu erhalten, ohne dass Benutzende aufgefordert werden, sich erneut anzumelden. Benutzende müssen sich nur dann erneut authentifizieren, wenn das Aktualisierungstoken nach der durch den Parameter OAUTH_REFRESH_TOKEN_VALIDITY angegebenen Dauer abläuft.
Einrichten einer lokalen Anwendung für die Verwendung von Snowflake OAuth¶
Dieser Abschnitt enthält die Details, die ein Entwickelnder benötigt, um eine lokale Anwendung für die Authentifizierung mit Snowflake OAuth zu konfigurieren. Die folgenden Typen von lokalen Anwendungen können sich über die automatische Integration authentifizieren:
Eine lokale Anwendung, die einen Snowflake-Client wie den Python-Treiber oder Snowflake CLI verwendet. Siehe Anwendungen, die einen Snowflake-Client verwenden.
Eine lokale Anwendung, die REST-Anforderungen an den OAuth-Autorisierungsendpunkt und Token-Endpunkt direkt ohne die Verwendung eines Snowflake-Clients ausführt. Siehe Anwendungen, die OAuth-Endpunkte direkt aufrufen.
Anwendungen, die einen Snowflake-Client verwenden¶
Wenn eine lokale Anwendung einen Snowflake-Client wie den Snowflake ODBC-Treiber verwendet, kann sie sich mit Snowflake OAuth authentifizieren, indem die Verbindungsoption authenticator auf oauth_authorization_code festgelegt wird. Zusätzliche Entwicklungsarbeit ist nicht erforderlich.
Voraussetzung¶
Mit Snowflake OAuth für lokale Anwendungen muss der Snowflake-Client den Webbrowser des Benutzenden öffnen können. Aus diesem Grund müssen sowohl der Snowflake-Client als auch die lokale Anwendung, die ihn verwendet, auf dem Computer des Benutzenden installiert sein. Snowflake OAuth für lokale Anwendungen funktioniert nicht, wenn auf dem Snowflake-Client Code angewendet werden soll, der auf einem Server ausgeführt wird.
Unterstützte Clients¶
Ihre lokale Anwendung kann die folgenden Snowflake-Clients verwenden, um sich bei Snowflake OAuth für lokale Anwendungen zu authentifizieren:
Client |
Erforderliche Mindestversion |
Erforderliche Konfiguration |
|---|---|---|
.NET |
v4.8.0 |
Legen Sie |
Go |
v1.14.1 |
Legen Sie |
JDBC |
v3.24.1 |
Legen Sie |
Node.js |
v2.1.0 |
Legen Sie |
ODBC |
v3.9.0 |
|
Python |
v3.16.0 |
Übergeben Sie |
Snowflake CLI |
v3.8.1 |
Fügen Sie die Option |
SnowSQL |
v1.4.0 |
Fügen Sie den Parameter |
Anwendungen, die OAuth-Endpunkte direkt aufrufen¶
Ihre lokale Anwendung kann Snowflake OAuth verwenden, indem Anforderungen an den Autorisierungsendpunkt und den Token-Endpunkt von Snowflake als Autorisierungsserver gestellt werden. Sie müssen keinen Snowflake-Client verwenden. Die Anwendung sendet eine Anforderung an den Autorisierungsendpunkt von Snowflake, um den Benutzenden zu authentifizieren und einen Autorisierungscode zu erhalten. Anschließend wird eine Anforderung an den Token-Endpunkt gesendet, um diesen Code gegen ein Zugriffstoken auszutauschen.
Weitere Informationen zum Erstellen von REST-Anforderungen an die Autorisierungs- und Token-Endpunkte von Snowflake finden Sie unter OAuth-Endpunkte aufrufen.
Anfrageanforderungen¶
Die REST-Anforderungen Ihrer Anwendung an die Autorisierungs- und Token-Endpunkte müssen den folgenden Anforderungen entsprechen:
Die Umleitungs-URL in der Anforderung an den Autorisierungsendpunkt muss
http://127.0.0.1[:port][/path]lauten. Das heißt, dass Ihre lokale Anwendung bei einer Loopback-Adresse auf den Autorisierungscode achten muss, der von Snowflake als Autorisierungsserver zurückgegeben wird.Anforderungen an die Autorisierungs- und Token-Endpunkte müssen Proof Key for Code Exchange (PKCE) implementieren. Weitere Informationen dazu finden Sie unter Proof Key for Code Exchange (PKCE).
Wenn Sie den Token-Endpunkt aufrufen, um einen Autorisierungscode für ein Zugriffstoken auszutauschen, muss die Anwendung die korrekte Client-ID und das Clientgeheimnis bereitstellen. Diese Anforderung variiert etwas, je nachdem, wie Sie diese Anmeldeinformationen des Clients senden:
Wenn Sie Anmeldeinformationen des Clients im Anforderungs-Header senden, muss die Client-ID
LOCAL_APPLICATIONsein, und das Clientgeheimnis mussLOCAL_APPLICATIONsein.Wenn Sie Anmeldeinformationen des Clients im POST-Textkörper senden, muss die Client-ID
LOCAL_APPLICATIONsein. Die automatische Integration konfiguriert die lokale Anwendung als öffentlichen Client, sodass das Clientgeheimnis nicht erforderlich ist, wenn Sie die Client-ID alsclient_id=LOCAL_APPLICATIONim POST-Textkörper bereitstellen.
Nutzungshinweise¶
Jedes Konto hat eine SNOWFLAKE$LOCAL_APPLICATION-Integration, sodass diese Integration nicht repliziert wird. Die Konfiguration der automatischen Integration ist für jedes Konto eindeutig.