Übersicht zu Snowflake OAuth

Snowflake OAuth verwendet den in Snowflake integrierten OAuth-Dienst, um eine OAuth-basierte Authentifizierung bereitzustellen.

Unter diesem Thema wird Snowflake OAuth und die Verwendung von Snowflake als OAuth-Ressource und Autorisierungsserver für den sicheren Zugriff auf Snowflake-Daten beschrieben.

Snowflake OAuth verwendet den integrierten OAuth-Dienst von Snowflake und unterstützt die folgenden Anwendungen:

Snowflake OAuth-Autorisierungsablauf

Der OAuth-Autorisierungsablauf sieht wie folgt aus:

Snowflake OAuth workflow
  1. Im Client versucht der Benutzer, mit OAuth eine Verbindung zu Snowflake herzustellen.

    Die Anwendung sendet eine Autorisierungsanforderung an den Snowflake-Autorisierungsserver. Daraufhin wird ein Autorisierungsbildschirm angezeigt, in dem der Benutzer aufgefordert wird, den Zugriff zu autorisieren.

  2. Der Benutzer gibt seinen Snowflake-Anmeldenamen und sein Kennwort ein. Daraufhin wird ihm ein Zustimmungsdialogfeld angezeigt, in dem er Snowflake den Clientzugriff unter Verwendung einer bestimmten Rolle in einer Benutzersitzung (z. B. SYSADMIN oder CUSTOM_ROLE1) erlaubt.

    Der Benutzer übermittelt seine Zustimmung, die spezifische Rolle in einer Sitzung zu verwenden.

    Der Snowflake-Autorisierungsserver sendet einen Autorisierungscode an den Client zurück.

  3. Der Client sendet den Autorisierungscode zurück an den Snowflake-Autorisierungsserver, um ein Zugriffstoken und optional ein Aktualisierungstoken anzufordern, damit der Client neue Zugriffstoken abrufen kann.

    Der Snowflake-Autorisierungsserver akzeptiert den Autorisierungscode und stellt dem Client ein Zugriffstoken zur Verfügung, das für die Benutzerressourcen im Snowflake-Ressourcenserver spezifisch ist. Je nach den Einstellungen in der Autorisierungsanforderung stellt der Autorisierungsserver ein Aktualisierungstoken aus, damit sich neue Zugriffstoken abrufen lassen, die an die bestimmte Ressource gebunden sind.

  4. Der Client sendet das Zugriffstoken an den Snowflake-Ressourcenserver.

    Der Ressourcenserver erkennt das gültige Zugriffstoken und richtet eine Benutzersitzung mit der autorisierten Rolle ein. Der Client hat jetzt Zugriff auf die Snowflake-Ressourcen, beschränkt durch die im Zugriffstoken angegebene Rolle.

    Standardmäßig verhindert Snowflake, dass sich die Rollen ACCOUNTADMIN, ORGADMIN und SECURITYADMIN authentifizieren können. Um diesen berechtigten Rollen die Authentifizierung zu ermöglichen, setzen Sie mit dem Befehl ALTER ACCOUNT den Kontoparameter OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST auf FALSE.

Zugriffstoken haben eine kurze Lebensdauer (normalerweise 10 Minuten). Wenn das Zugriffstoken abläuft, kann der Client ein Aktualisierungstoken senden, um neue Zugriffstoken anzufordern. Ein Aktualisierungstoken wird an den Snowflake-Autorisierungsserver gesendet, um jedes Mal, wenn das aktuelle Zugriffstoken abläuft, ein neues Zugriffstoken anzufordern (Schritte 3-6). Wenn die Integration so konfiguriert ist, dass das Senden von Aktualisierungstoken verhindert wird, muss der Benutzer die oben genannten Schritte wiederholen, um den Client neu zu autorisieren.

Partneranwendungen

Informationen zum Konfigurieren der Unterstützung finden Sie unter Snowflake OAuth für Partneranwendungen konfigurieren.

Weitere Informationen zur Verwendung von OAuth unter Umgehung des öffentlichen Internets finden Sie unter Partneranwendungen.

Kundenspezifische Clients

Snowflake unterstützt kundenspezifische Clients, die von Ihrer Organisation konfiguriert wurden. Informationen zum Konfigurieren der Unterstützung finden Sie unter Snowflake OAuth für kundenspezifische Clients konfigurieren.

Netzwerkrichtlinien

Sie können eine dedizierte Netzwerkrichtlinie nur mit Snowflake OAuth integrieren. Die External OAuth-Sicherheitsintegration unterstützt nicht das Festlegen einer separaten Netzwerkrichtlinie, aber Sie können dennoch eine allgemeine Netzwerkrichtlinie verwenden, die für das gesamte Snowflake-Konto gilt.

Die Snowflake OAuth-Sicherheitsintegration verfügt über einen network_policy-Parameter, sodass die Snowflake OAuth-Integration Benutzer authentifizieren und autorisieren kann, ohne diese IP-Adressen für den normalen Benutzerzugriff hinzuzufügen.

Durch das Einrichten einer für die Snowflake OAuth-Integration spezifischen Netzwerkrichtlinie kann sich die Snowflake OAuth-Netzwerkrichtlinie von anderen Netzwerkrichtlinien unterscheiden, die möglicherweise für das Snowflake-Konto gelten. Daher ermöglicht die Snowflake OAuth-Netzwerkrichtlinie die Authentifizierung und Autorisierung von Benutzern wie beabsichtigt.

Eine Netzwerkrichtlinie, die auf eine Snowflake OAuth-Integration angewendet wird, überschreibt die Netzwerkrichtlinie, die auf das gesamte Snowflake-Konto angewendet wird, sie kann aber selbst von einer Netzwerkrichtlinie überschieben werden, die einem Benutzer zugewiesen ist.

Wichtig

Wenn eine Netzwerkrichtlinie pro Benutzer oder Konto festgelegt ist und Sie einen Dienst verwenden, der an einem anderen Speicherort ausgeführt wird (z. B. Microsoft Power BI), können Sie keine Verbindung zu Snowflake herstellen.

Legen Sie nach dem Erstellen der Snowflake OAuth-Sicherheitsintegration die OAuth-Netzwerkrichtlinie mit dem folgenden Befehl fest:

ALTER SECURITY INTEGRATION <oauth_integration> SET NETWORK_POLICY = <oauth_network_policy>;
Copy

Verwenden Sie folgenden Befehl, um die OAuth-Netzwerkrichtlinie zu deaktivieren:

ALTER SECURITY INTEGRATION <oauth_integration> UNSET <oauth_network_policy>;
Copy

Wobei:

<oauth_integration>

Gibt den Namen der OAuth-Sicherheitsintegration an.

<oauth_network_policy>

Gibt die Snowflake OAuth-Netzwerkrichtlinie in Snowflake an.

Weitere Informationen dazu finden Sie unter Netzwerkrichtlinien und ALTER SECURITY INTEGRATION.

Fehlercodes

In der folgenden Tabelle finden Sie Beschreibungen der Fehlercodes im Zusammenhang mit Snowflake OAuth:

Fehlercode

Fehler

Beschreibung

390302

OAUTH_CONSENT_INVALID

Problem mit dem Generieren oder Validieren von Zustimmung für einen bestimmten Benutzer

390303

OAUTH_ACCESS_TOKEN_INVALID

Das Zugriffstoken, das beim Versuch, eine Snowflake-Sitzung herzustellen, angegeben wurde, ist abgelaufen oder ungültig.

390304

OAUTH_AUTHORIZE_INVALID_RESPONSE_TYPE

Es wurde ein ungültiger Antworttyp response_type als Parameter für den Autorisierungsendpunkt angegeben (er sollte höchstwahrscheinlich code lauten).

390305

OAUTH_AUTHORIZE_INVALID_STATE_LENGTH

Der Statusparameter, der als Parameter für den Autorisierungsendpunkt angegeben ist, überschreitet 2.048 Zeichen

390306

OAUTH_AUTHORIZE_INVALID_CLIENT_ID

Die mit einer angegebenen Client-ID verknüpfte Integration ist nicht vorhanden.

390307

OAUTH_AUTHORIZE_INVALID_REDIRECT_URI

Die redirect_uri, die als Parameter für den Autorisierungsendpunkt angegeben ist, stimmt nicht mit der redirect_uri der Integration überein, die mit der angegebenen client_id verknüpft ist, oder die redirect_uri ist nicht korrekt formatiert.

390308

OAUTH_AUTHORIZE_INVALID_SCOPE

Entweder ist der angeforderte Bereich kein gültiger Bereich, oder dem Benutzer kann kein vollständiger Zugriff auf die angeforderten Bereiche gewährt werden.

390309

OAUTH_USERNAMES_MISMATCH

Der Benutzer, als den Sie sich zu authentifizieren versuchten, unterscheidet sich von dem Benutzer, der an das Zugriffstoken gebunden ist.

390311

OAUTH_AUTHORIZE_INVALID_CODE_CHALLENGE_PARAMS

Entweder die Code-Challenge oder die Code-Challenge-Methode fehlt, ist ungültig oder wird nicht unterstützt.

Darüber hinaus werden die folgenden Fehler aus dem RFC übernommen und im JSON-Blob zurückgegeben, das während einer nicht erfolgreichen Tokenanforderung oder eines fehlgeschlagenen Tokenaustauschs erstellt wurde:

Fehler

Beschreibung

invalid_client

In Bezug auf die Clientauthentifizierung ist ein Fehler aufgetreten, z. B. war der Client unbekannt, lag ein Konflikt des Clientgeheimnisses vor usw.

invalid_grant

Die angegebene Autorisierungsgewährung oder das Aktualisierungstoken sind ungültig, abgelaufen, widerrufen, stimmen nicht mit dem in der Autorisierungsanforderung verwendeten Weiterleitungs-URI überein oder wurden an einen anderen Client ausgestellt.

unsupported_grant_type

Es wurde ein Gewährungstyp bereitgestellt, den Snowflake derzeit nicht unterstützt („refresh_token“ und „authorized_code“ sind derzeit die einzigen unterstützten Gewährungstypen).

invalid_request

Die Anforderung war falsch formatiert oder konnte nicht verarbeitet werden.