Übersicht zu External OAuth

Unter diesem Thema erfahren Sie, wie Sie External OAuth-Server konfigurieren, die OAuth 2.0 für den Zugriff auf Snowflake verwenden.

External OAuth integriert den OAuth 2.0-Server des Kunden, um ein nahtloses SSO-Erlebnis zu bieten und externen Clients den Zugriff auf Snowflake zu ermöglichen.

Snowflake unterstützt die folgenden externen Autorisierungsserver, kundenspezifische Clients und Partneranwendungen:

Nach der Konfiguration des External OAuth-Servers Ihrer Organisation, der alle erforderlichen OAuth 2.0-Bereiche für die Zuordnung zu Snowflake-Rollen enthält, kann der Benutzer sicher und programmgesteuert eine Verbindung zu Snowflake herstellen, ohne zusätzliche Authentifizierungs- oder Autorisierungsfaktoren oder -methoden eingeben zu müssen. Der Zugriff des Benutzers auf Snowflake-Daten hängt sowohl von seiner Rolle als auch von der Rolle ab, die in das Zugriffstoken für die Sitzung integriert wird. Weitere Informationen dazu finden Sie unter Geltungsbereiche (unter diesem Thema).

Anwendungsfälle und Vorteile

  1. Snowflake delegiert die Token-Ausgabe an einen dedizierten Autorisierungsserver, um sicherzustellen, dass sich der OAuth-Client und der Benutzer ordnungsgemäß authentifizieren. Das Ergebnis ist eine zentralisierte Verwaltung der an Snowflake ausgegebenen Token.

  2. Kunden können ihre Richtlinien für die Authentifizierung (z. B. Multi-Faktor, Subnetz, biometrisch) und Autorisierung (z. B. keine Genehmigung, Managergenehmigung erforderlich) in den Autorisierungsserver integrieren. Das Ergebnis ist eine höhere Sicherheit, die zu einem robusteren Datenschutz führt, indem der Benutzer vor Herausforderungen gestellt wird. Wenn der Benutzer die Richtlinienherausforderungen nicht besteht, wird die Snowflake-Sitzung nicht instanziiert und es erfolgt kein Zugriff auf Snowflake-Daten.

  3. Für programmgesteuerte Clients, die auf Snowflake zugreifen können, und Benutzer, die ihre Snowflake-Sitzungen nur über External OAuth initiieren, ist in Snowflake keine zusätzliche Authentifizierungskonfiguration (d. h. Festlegen eines Kennworts) erforderlich. Das Ergebnis ist, dass Dienstkonten oder Benutzer, die ausschließlich für den programmgesteuerten Zugriff verwendet werden, Snowflake-Daten immer nur verwenden können, wenn sie den mit External OAuth konfigurierten Service durchlaufen.

  4. Clients können sich ohne Browserzugriff bei Snowflake authentifizieren, was die Integration mit dem External OAuth-Server erleichtert.

  5. Die Integration von Snowflake in External OAuth-Server ist cloudunabhängig.

    • Es spielt keine Rolle, ob der Autorisierungsserver in der Cloud eines Cloudanbieters vorhanden ist oder ob der Autorisierungsserver lokal ist. Das Ergebnis ist, dass Kunden viele Optionen haben, um den Autorisierungsserver für die Interaktion mit Snowflake zu konfigurieren.

Allgemeiner Workflow

Für jeden der unterstützten Identitätsanbieter kann der Workflow für OAuth in Bezug auf External OAuth-Autorisierungsserver wie folgt zusammengefasst werden. Beachten Sie, dass der erste Schritt nur einmal ausgeführt wird und die verbleibenden Schritte bei jedem Versuch des Zugriffs auf Snowflake-Daten ausgeführt werden.

workflow overview
  1. Konfigurieren Sie Ihren External OAuth-Autorisierungsserver in Ihrer Umgebung und die Sicherheitsintegration in Snowflake, um eine Vertrauensstellung herzustellen.

  2. Ein Benutzer versucht, über seine Business Intelligence-Anwendung auf Snowflake-Daten zuzugreifen, und die Anwendung versucht, den Benutzer zu überprüfen.

  3. Bei der Überprüfung sendet der Autorisierungsserver ein JSON-Webtoken (d. h. OAuth-Token) an die Clientanwendung.

  4. Der Snowflake-Treiber übergibt eine Verbindungszeichenfolge mit dem OAuth-Token an Snowflake.

  5. Snowflake validiert das OAuth-Token.

  6. Snowflake führt eine Benutzersuche durch.

  7. Bei der Überprüfung instanziiert Snowflake eine Sitzung, in der der Benutzer basierend auf seiner Rolle auf Daten in Snowflake zugreifen kann.

Bereiche

Der Bereichsparameter auf dem Autorisierungsserver begrenzt die vom Zugriffstoken zugelassenen Operationen und Rollen sowie den Zugriff des Benutzers nach dem Instanziieren einer Snowflake-Sitzung.

Beachten Sie, dass die Rollen ACCOUNTADMIN, ORGADMIN und SECURITYADMIN standardmäßig blockiert sind. Wenn eine oder beide Rollen verwendet werden müssen, setzen Sie mit dem Befehl ALTER ACCOUNT den Kontoparameter EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST auf FALSE.

  • Verwenden Sie für Okta, PingFederate und Kundenspezifisch das Rollenbereichsmuster der folgenden Tabelle.

  • Weitere Informationen zu Azure AD finden Sie unter Vorbereitender Schritt: OAuth-Ablauf in Azure AD bestimmen.

  • Wenn Sie Snowflake-Rollen nicht auf Ihrem External OAuth-Server verwalten möchten, übergeben Sie den statischen Wert von SESSION:ROLE-ANY an das Bereichsattribut des Tokens.

In der folgenden Tabelle sind die External OAuth-Bereiche zusammengefasst. Beachten Sie, dass Sie einen Bereich definieren müssen, da sonst der Verbindungsversuch zu Snowflake fehlschlägt.

Verbindungsparameter für Geltungsbereich/Rolle

Beschreibung

session:role-any

Wird der Rolle ANY in Snowflake zugeordnet.

Verwenden Sie diesen Geltungsbereich, wenn die Standardrolle des Benutzers in Snowflake erwünscht ist.

Der external_oauth_any_role_mode-Parameter der Sicherheitsintegration muss konfiguriert sein, um die ANY-Rolle für einen bestimmten External OAuth-Anbieter zu aktivieren. Weitere Informationen zur Konfiguration finden Sie im Abschnitt zur ANY-Rolle unter Okta, Azure AD, PingFederate oder Kundenspezifisch.

Beachten Sie, dass bei einer Power BI-Snowflake-Integration der PowerBI-Benutzer bei diesem Geltungsbereich keine Rollen wechseln kann.

session:role:custom_role

Wird einer kundenspezifischen Snowflake-Rolle zugeordnet. Wenn Ihre kundenspezifische Rolle beispielsweise ANALYST lautet, lautet Ihr Gültigkeitsbereich session:role:analyst.

session:role:public

Ordnet die Snowflake-Rolle PUBLIC zu.

Verwenden von Sekundärrollen mit External OAuth

Snowflake unterstützt die Verwendung von Sekundärrollen mit External OAuth.

Snowflake OAuth unterstützt keinen Rollenwechsel zu Sekundärrollen während der Sitzung.

Weitere Informationen dazu finden Sie unter:

Konfigurieren der Unterstützung von External OAuth

Snowflake unterstützt die Verwendung von Partneranwendungen und kundenspezifischen Clients, die External OAuth unterstützen.

Beachten Sie die folgende Liste, wenn Sie Partneranwendungen oder kundenspezifische Clients konfigurieren müssen:

OAuth und Sekundärrollen

Snowflake unterstützt die Verwendung von Sekundärrollen mit External OAuth.

Weitere Informationen dazu finden Sie unter Verwenden von Sekundärrollen mit External OAuth.

Fehlercodes

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

Fehlercode

Fehler

Beschreibung

390318

OAUTH_ACCESS_TOKEN_EXPIRED

OAuth-Zugriffstoken ist abgelaufen. {0}

390144

JWT_TOKEN_INVALID

JWT-Token ist ungültig.

Problembehandlung

  • Verwenden Sie die Funktion SYSTEM$VERIFY_EXTERNAL_OAUTH_TOKEN, um festzustellen, ob Ihr External OAuth-Zugriffstoken gültig ist oder neu generiert werden muss.

  • Wenn eine Fehlermeldung im Zusammenhang mit einem fehlgeschlagenen External OAuth-Anmeldeversuch steht und die Fehlermeldung eine UUID enthält, können Sie einen Administrator mit zugewiesener MONITOR-Berechtigung darum bitten, die UUID aus der Fehlermeldung zu verwenden, um mit der Funktion SYSTEM$GET_LOGIN_FAILURE_DETAILS eine genauere Beschreibung des Fehlers zu erhalten.