Übersicht zu External OAuth

External OAuth integriert den OAuth 2.0-Server des Kunden, um eine nahtlose SSO-Erfahrung zu bieten, insbesondere für programmgesteuerte Clientanwendungen, die eine Verbindung zu Snowflake herstellen. Unter den External OAuth-Themen wird beschrieben, wie Sie External OAuth mithilfe von OAuth 2.0 konfigurieren, um den unterstützten Autorisierungsservern, den benutzerdefinierten Clients und den unterstützten Partneranwendungen einen sicheren, programmgesteuerten Zugriff auf Snowflake-Daten zu ermöglichen.

Snowflake unterstützt drei External OAuth-Server, eine benutzerdefinierte Integration und eine Partneranwendung.

  1. Okta

  2. Microsoft Azure AD

  3. Ping Identity PingFederate

  4. Benutzerdefinierte External OAuth-Clients

  5. Power BI SSO zu Snowflake

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 Bereiche (unter diesem Thema).

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 und SECURITYADMIN standardmäßig blockiert sind. Wenn Sie eine oder beide Rollen verwenden müssen, wenden Sie sich an den Snowflake-Support.

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

  • 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 Bereich/Rolle

Beschreibung

session:role-any

Ordnet die Rolle ANY in Snowflake zu. . Wenn die Standardrolle des Benutzers in Snowflake erwünscht ist, übergeben Sie diesen Bereich im External OAuth-Token. . Der Sicherheitsintegrationsparameter external_oauth_any_role_mode muss konfiguriert werden, um die Rolle ANY für einen bestimmten External OAuth-Anbieter zu aktivieren. . Einzelheiten zur Konfiguration finden Sie im Abschnitt zur Rolle ANY unter Okta, Azure AD, PingFederate oder Benutzerdefiniert.

session:role:<Benutzerdefinierte_Rolle>

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

session:role:public

Ordnet die Snowflake-Rolle PUBLIC zu.

Problembehandlung