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';
Copy

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

ENABLED

Steuert, ob die Integration aktiviert ist. Wenn die Integration deaktiviert ist, müssen lokale Anwendungen eine andere Authentifizierungsmethode verwenden.

OAUTH_ISSUE_REFRESH_TOKENS

Steuert, ob der Autorisierungsserver Aktualisierungstoken ausgibt.

OAUTH_REFRESH_TOKEN_VALIDITY

Legt die Gültigkeitsdauer von Aktualisierungstoken fest.

OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED

Steuert, ob der Autorisierungsserver einmalige Aktualisierungstoken ausgibt.

OAUTH_ACCESS_TOKEN_VALIDITY

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;
Copy

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:

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 authenticator=oauth_authorization_code in der Verbindungszeichenfolge fest.

Go

v1.14.1

Legen Sie authenticator=oauth_authorization_code in der Verbindungskonfiguration fest.

JDBC

v3.24.1

Legen Sie authenticator=oauth_authorization_code in der Verbindungszeichenfolge für den Treiber fest.

Node.js

v2.1.0

Legen Sie authenticator: 'oauth_authorization_code' in den Verbindungsoptionen fest.

ODBC

v3.9.0

  • Für Linux und macOS legen Sie authenticator=oauth_authorization_code in der odbc.ini-Datei fest.

  • Für Windows bearbeiten Sie im ODBC Data Source Administrator-Tool den DSN für Snowflake. Legen Sie für „Authentifikator“ den Wert oauth_authorization_code fest.

Python

v3.16.0

Übergeben Sie AUTHENTICATOR=OAUTH_AUTHORIZATION_CODE an die Funktion snowflake.connector.connect().

Snowflake CLI

v3.8.1

Fügen Sie die Option authenticator = "OAUTH_AUTHORIZATION_CODE" für die Verbindungsdefinition hinzu.

SnowSQL

v1.4.0

Fügen Sie den Parameter authenticator = "OAUTH_AUTHORIZATION_CODE" in der Konfigurationsdatei hinzu.

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_APPLICATION sein, und das Clientgeheimnis muss LOCAL_APPLICATION sein.

    • Wenn Sie Anmeldeinformationen des Clients im POST-Textkörper senden, muss die Client-ID LOCAL_APPLICATION sein. Die automatische Integration konfiguriert die lokale Anwendung als öffentlichen Client, sodass das Clientgeheimnis nicht erforderlich ist, wenn Sie die Client-ID als client_id=LOCAL_APPLICATION im 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.