Power BI SSO zu Snowflake

Unter diesem Thema wird beschrieben, wie Sie mit Microsoft Power BI eine Snowflake-Sitzung instanziieren und unter Verwendung von Single Sign-On (SSO) auf Snowflake zugreifen.

Unter diesem Thema:

Übersicht

Snowflake erlaubt Microsoft Power BI-Benutzern die Herstellung einer Verbindung zu Snowflake unter Verwendung der Anmeldeinformationen eines Identitätsanbieters und einer OAuth 2.0-Implementierung, sodass eine SSO-Erfahrung für den Zugriff auf Snowflake-Daten zur Verfügung steht.

Mit diesem Feature entfallen die lokalen Power BI Gateway-Implementierungen, da der Power BI-Dienst für den Verbindungsaufbau zu Snowflake einen eingebetteten Snowflake-Treiber verwendet.

Allgemeiner Workflow

Das folgende Diagramm fasst den Autorisierungsablauf zum Instanziieren einer Snowflake-Sitzung von Power BI zusammen:

Übersicht zum PBI SSO-Workflow
  1. Der Benutzer meldet sich mit Microsoft Azure Active Directory (Azure AD) beim Power BI-Dienst an.

  2. Optional kann Azure AD den Benutzer durch einen IdP über SAML verifizieren. Derzeit unterstützt Microsoft nur Azure AD als IdP für Power BI SSO.

  3. Wenn der Benutzer eine Verbindung zu Snowflake herstellt, fordert der Power BI-Dienst Azure AD auf, ihm ein Token für Snowflake zu übergeben.

  4. Der Power BI-Dienst verwendet den eingebetteten Snowflake-Treiber, um das Azure AD-Token als Teil der Verbindungszeichenfolge an Snowflake zu senden.

  5. Snowflake überprüft das Token, extrahiert aus dem Token den Benutzernamen, ordnet diesen dem Snowflake-Benutzer zu und erstellt eine Snowflake-Sitzung für den Power BI-Dienst unter Verwendung der Standardrolle dieses Benutzers.

Voraussetzungen

Überprüfen Sie Folgendes für Ihr Snowflake-Konto, bevor Sie das Power BI SSO-Feature verwenden:

  • Wenn Sie in Snowflake Steuern des Netzwerkdatenverkehrs mit Netzwerkrichtlinien verwenden, können Sie den Microsoft Azure-IP-Bereich zulassen, der die Azure-Region enthält, in der Ihr Snowflake-Konto gehostet wird, sowie gegebenenfalls weitere Azure-Regionen.

    Wichtig

    Durchsuchen Sie den JSON-Download von Microsoft nach Ihrer Region, um eine für Power BI spezifische Netzwerkrichtlinie für die Azure-Region zu erstellen, in der sich Ihr Snowflake-Konto auf Azure befindet.

    Wenn sich Ihr Snowflake-Konto auf Azure beispielsweise in der Region Canada Central befindet, durchsuchen Sie den JSON-Download nach PowerBI.CanadaCentral. Wählen Sie in der addressPrefixes-Liste die IP-Adressbereiche aus. Verwenden Sie diese IP-Adressbereiche, um eine Netzwerkrichtlinie in Snowflake zu erstellen oder zu aktualisieren.

    Wenn die addressPrefixes-Liste leer ist, wenden Sie sich an Microsoft, um ein Update anzufordern.

    Wenn Sie mehrere Microsoft Azure-Dienste verwenden (z. B. Power BI, SCIM), wenden Sie sich an Ihren Azure-Administrator, um die korrekten IP-Adressbereiche zu überprüfen und sicherzustellen, dass die Snowflake-Netzwerkrichtlinie die korrekten IP-Adressbereiche enthält, damit Benutzer sie zulassen können, um auf Snowflake zuzugreifen.

  • Eines der Attribute login_name, name oder email des Snowflake-Benutzers muss dem Azure-Attribut AD upn zugeordnet werden. Wenn das Attribut login_name nicht definiert ist, wird standardmäßig das Attribut name verwendet.

Hinweise

Mit Power BI-Gateway:

Private Konnektivität zum Snowflake-Dienst wird unterstützt. Wenn Sie einen der beiden Dienste verwenden müssen, um eine Verbindung zu Snowflake herzustellen, verwenden Sie dafür das lokale Gateway.

Ohne Power BI-Gateway:

Private Konnektivität zum Snowflake-Dienst wird nicht unterstützt. Erstellen Sie für Power BI Service und Power BI Desktop eine Netzwerkrichtlinie, um die öffentlichen IP-Adressbereiche von Azure Active Directory zuzulassen. Beachten Sie, dass bei Netzwerkrichtlinien die erlaubten IP-Adressen auf 100.000 Zeichen begrenzt sind.

Token und Schlüssel:

Snowflake versucht, Azure Active Directory über den URL-Wert in der external_oauth_jws_keys_url-Eigenschaft (siehe unten) oder über die erlaubten IP-Adressen in der Netzwerkrichtlinie zu verifizieren, falls eine Netzwerkrichtlinie existiert. Microsoft aktualisiert seine Token und Schlüssel alle 24 Stunden. Weitere Informationen zu den Microsoft-Aktualisierungen finden Sie unter Übersicht zu Token in Azure Active Directory B2C.

Zulässige Rollen festlegen:

Standardmäßig sind die Systemrollen ACCOUNTADMIN, ORGADMIN und SECURITYADMIN für die Verwendung von Microsoft Power BI zum Instanziieren einer Snowflake-Sitzung blockiert. Wenn es notwendig ist, eine Rolle mit derart umfangreichen Berechtigungen zu verwenden, aktualisieren Sie zur Angabe dieser Rolle den Sicherheitsintegrationsparameter EXTERNAL_OAUTH_ALLOWED_ROLES. Seien Sie vorsichtig, bevor Sie die Systemrollen ACCOUNTADMIN, ORGADMIN und SECURITYADMIN in dem Sicherheitsintegrationsparameter EXTERNAL_OAUTH_ALLOWED_ROLES angeben.

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

Erste Schritte

In diesem Abschnitt wird erläutert, wie Sie eine Power BI-Sicherheitsintegration in Snowflake erstellen und wie Sie über Power BI auf Snowflake zugreifen.

Erstellen einer Power BI-Sicherheitsintegration

Bemerkung

Dieser Schritt ist nicht erforderlich, wenn Sie die Verbindung zu Snowflake über den Power BI-Dienst herstellen und dabei das Power BI-Gateway verwenden oder wenn Sie sich bei Snowflake mittels Benutzername und Kennwort authentifizieren.

Um mit Power BI über SSO auf Snowflake-Daten zuzugreifen, muss mit CREATE SECURITY INTEGRATION eine Sicherheitsintegration für Power BI erstellt werden (siehe unten).

Die Sicherheitsintegration muss den korrekten Wert für den Parameter external_oauth_issuer haben. Ein Teil dieses Werts wird Ihrem Azure AD -Mandanten zugeordnet. Sie finden diesen Wert im Abschnitt About Ihres Power BI-Mandanten.

Wenn Ihre Organisation über eine erweiterte Bereitstellung des Power BI-Dienstes verfügt, wenden Sie sich an Ihren Azure AD-Administrator, um den korrekten Wert des Azure AD-Mandanten für die Erstellung der Aussteller-URL zu ermitteln.

Wenn die ID Ihres Azure AD-Mandanten beispielsweise a828b821-f44f-4698-85b2-3c6749302698 ist, erstellen Sie den AZURE_AD_ISSUER-Wert ähnlich wie https://sts.windows.net/a828b821-f44f-4698-85b2-3c6749302698/. Es ist wichtig, am Ende des Werts einen Schrägstrich (d. h. /) einzufügen.

Führen Sie nach dem Erstellen des Werts für AZURE_AD_ISSUER den Befehl CREATE SECURITY INTEGRATION aus.

Wenn sich Ihr Snowflake-Konto oder Ihr Microsoft Power BI-Dienst in der Microsoft Azure Government-Cloudregion befindet, setzen Sie den Wert der Eigenschaft external_oauth_audience_list auf https://analysis.usgovcloudapi.net/powerbi/connector/Snowflake.

Sicherheitsintegration für Microsoft Power BI

create security integration powerbi
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = '<AZURE_AD_ISSUER>'
    external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
    external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake', 'https://analysis.windows.net/powerbi/connector/snowflake')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name'
Copy

Microsoft Azure Government-Sicherheitsintegration für Microsoft Power BI

create security integration powerbi_mag
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = '<AZURE_AD_ISSUER>'
    external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
    external_oauth_audience_list = ('https://analysis.usgovcloudapi.net/powerbi/connector/Snowflake', 'https://analysis.usgovcloudapi.net/powerbi/connector/snowflake')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name'
Copy

Wichtig

Dieser SQL-Befehl kann nur von Kontoadministratoren (d. h. Benutzern mit der Rolle ACCOUNTADMIN) oder von Rollen mit der globalen Berechtigung CREATE INTEGRATION ausgeführt werden.

Bei den Werten der Sicherheitsintegrationsparameter wird zwischen Groß- und Kleinschreibung unterschieden, und die Werte, die Sie in die Sicherheitsintegration eingeben, müssen in Ihrer Umgebung mit diesen Werten übereinstimmen. Wenn der Fall nicht übereinstimmt, wird das Zugriffstoken möglicherweise nicht validiert, was zu einem fehlgeschlagenen Authentifizierungsversuch führt.

Die Listenwerte, die Sie für die Eigenschaft EXTERNAL_OAUTH_AUDIENCE_LIST angeben, sind URLs mit einem Snowflake-Namen in Groß-/Kleinbuchstaben. Fügen Sie beide URLs in diese Liste ein, um sicherzustellen, dass Ihr Client eine Verbindung zu Snowflake herstellen kann, die auf den Werten basiert, die Microsoft zum Herstellen einer Verbindung erwartet.

Stellen Sie sicher, dass alle Parameterwerte genau übereinstimmen. Wenn der Wert der <AZURE_AD_ISSUER>-URL beispielsweise nicht mit einem Backslash endet, die Sicherheitsintegration aber mit einem Backslash am Ende der URL erstellt wird, wird eine Fehlermeldung angezeigt. Es wäre dann notwendig, das Sicherheitsintegrationsobjekt (mit DROP INTEGRATION) zu löschen und das Objekt mit dem korrekten URL-Wert (mit CREATE SECURITY INTEGRATION) neu zu erstellen.

Wenn in Ihrer Umgebung der Attributwert für den UPN des Benutzers nicht mit login_name, sondern mit dem E-Mail-Feld des Snowflake-Benutzers übereinstimmt, ersetzen Sie login_name durch email_address. Beispiel:

create security integration powerbi
    type = external_oauth
    ...
    external_oauth_snowflake_user_mapping_attribute = 'email_address';
Copy

Verwenden von Power BI SSO mit B2B-Gastbenutzern

Um Gastbenutzern von Azure AD B2B (d. h. Business-to-Business) den Zugriff auf Snowflake über SSO von Microsoft Power BI aus zu ermöglichen, setzen Sie den Wert der Eigenschaft EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM auf 'unique_name'. Beispiel:

create security integration powerbi
  type = external_oauth
  enabled = true
  external_oauth_type = azure
  external_oauth_issuer = '<AZURE_AD_ISSUER>'
  external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
  external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake', 'https://analysis.windows.net/powerbi/connector/snowflake')
  external_oauth_token_user_mapping_claim = 'unique_name'
  external_oauth_snowflake_user_mapping_attribute = 'login_name';
Copy

Weitere Informationen dazu finden Sie unter Erläuterungen zu B2B-Benutzern.

Ändern der External OAuth-Sicherheitsintegration

Sie können Ihre External OAuth-Sicherheitsintegration aktualisieren, indem Sie auf der Sicherheitsintegration eine ALTER-Anweisung ausführen.

Weitere Informationen dazu finden Sie unter ALTER SECURITY INTEGRATION (External OAuth).

Verwenden von Sekundärrollen für Power BI SSO zu Snowflake

Der gewünschte Geltungsbereich der Primärrolle wird im externen Token übergeben. Diese Rolle ist eine spezifische Rolle, die dem Benutzer zugewiesen wurde (session:role:<Rollenname>).

Standardmäßig sind die Standard-Sekundärrollen eines Benutzers (d. h. die Benutzereigenschaft DEFAULT_SECONDARY_ROLES) in der Sitzung nicht aktiviert.

Um die Standard-Sekundärrollen eines Benutzers in einer Sitzung zu aktivieren und die Ausführung des Befehls USE SECONDARY ROLES bei Verwendung von External OAuth zu ermöglichen, führen Sie den folgenden Schritt aus:

  1. Konfigurieren Sie die Sicherheitsintegration für die Verbindung. Setzen Sie den Parameterwert EXTERNAL_OAUTH_ANY_ROLE_MODE entweder auf ENABLE oder ENABLE_FOR_PRIVILEGE, wenn Sie die Sicherheitsintegration erstellen (mit CREATE SECURITY INTEGRATION) oder später (mit ALTER SECURITY INTEGRATION).

Verwenden der Clientumleitung mit Power BI-SSO zu Snowflake

Snowflake unterstützt die Verwendung der Clientumleitung mit Power BI-SSO zu Snowflake.

Weitere Informationen dazu finden Sie unter Umleiten von Clientverbindungen.

Verwenden der Replikation mit Power BI SSO

Snowflake unterstützt Replikation und Failover/Failback der External OAuth-Sicherheitsintegration von einem Quellkonto in ein Zielkonto.

Weitere Details dazu finden Sie unter Replikation von Sicherheitsintegrationen und Netzwerkrichtlinien über mehrere Konten hinweg.

Herstellen einer Verbindung zu Snowflake über Power BI

Weitere Informationen zum Herstellen einer Verbindung zu Snowflake über Power BI finden Sie in der Power BI-Dokumentation.

Verwenden von Netzwerkrichtlinien mit External OAuth

Derzeit können Netzwerkrichtlinien nicht zu einer External OAuth-Sicherheitsintegration hinzugefügt werden, was bedeutet, dass Sie keine Netzwerkrichtlinie definieren können, die nur für die Power BI-Integration gilt. Sie können jedoch auch Netzwerkrichtlinien implementieren, die für das gesamte Snowflake-Konto gelten. Weitere Informationen zum Microsoft-IP-Bereich, der in die Netzwerkrichtlinie aufgenommen werden muss, finden Sie im Abschnitt Voraussetzungen (unter diesem Thema).

Problembehandlung

  • Fortsetzen des Warehouse. Wenn ein bestimmter Benutzer versucht, ein angehaltenes Warehouse zu verwenden, zeigt Microsoft Power BI eine Fehlermeldung an, die nicht in Fehlermeldungen beschrieben ist. Überprüfen Sie das Warehouse, und konfigurieren Sie es gegebenenfalls so, dass es automatisch fortgesetzt wird, um die Fehlermeldung zu beheben. Weitere Informationen dazu finden Sie unter Starten oder Fortsetzen eines Warehouses.

  • Beim Versuch, über Power BI eine Verbindung zu Snowflake herzustellen, können Fehler auftreten. Abhängig von der Fehlermeldung kann eine Fehlerbehebung in Microsoft, Snowflake oder in beiden erforderlich sein.

    • Error Messages beschreiben häufige Fehlermeldungen. Snowflake kann diese Anzeige an Power BI zurückgeben.

    • Login History (Anmeldeverlauf) beschreibt die Verwendung von Snowflake, um zu überprüfen, ob oder wann ein Benutzer zuletzt auf Snowflake zugegriffen hat.

Fehlermeldungen

In der folgenden Tabelle werden Fehlermeldungen beschrieben, die Snowflake zurückgibt, wenn sich ein Benutzer in Power BI authentifiziert:

Verhalten

Fehlermeldung

Problembehandlung

Ungültiger Zugriffstoken oder Zielgruppenwert.

Fehler beim Aktualisieren der Anmeldeinformationen der Datenquelle: ODBC:ERROR [28000] Ungültiges OAuth-Zugriffstoken. [<Nummer>].

Stellen Sie sicher, dass der Parameter external_oauth_issuer den korrekten Wert enthält. . Überprüfen Sie in Azure AD, ob das Zugriffstoken aktuell ist.

AAD-Benutzer nicht im Snowflake-Konto gefunden.

Fehler beim Aktualisieren der Anmeldeinformationen der Datenquelle: ODBC:ERROR [28000] Es wurde ein falscher Benutzername oder ein falsches Kennwort angegeben.

Stellen Sie sicher, dass der Benutzer in Snowflake vorhanden ist (Attributwert von name oder login_name stimmt mit UPN-Wert des Benutzers in Azure AD überein). Wenn Sie einen Benutzer hinzufügen, stellen Sie sicher, dass der UPN-Wert nicht bereits in Azure AD vorhanden ist.

Snowflake-Benutzer vorhanden, aber deaktiviert.

Fehler beim Aktualisieren der Anmeldeinformationen der Datenquelle: ODBC:ERROR [28000] Benutzerzugriff deaktiviert. Wenden Sie sich an Ihren lokalen Systemadministrator.

Führen Sie in Snowflake desc user <Benutzername> aus, um zu überprüfen, ob das Attribut disabled auf true festgelegt ist. Wenn dieser Benutzer zugelassen werden soll, führen Sie alter user <Benutzername> set disabled = true; aus. Versuchen Sie erneut, von Power BI auf Snowflake zuzugreifen.

Snowflake erhält einen abgelaufenen AAD-Token von Power BI.

Fehler beim Aktualisieren der Anmeldeinformationen der Datenquelle: ODBC:ERROR [28000] OAuth-Zugriffstoken abgelaufen. [<Nummer>].

Wenden Sie sich an den Snowflake-Support.

Die Sicherheitsintegration wurde für das Snowflake-Konto nicht erstellt oder ist deaktiviert.

Fehler beim Aktualisieren der Anmeldeinformationen der Datenquelle: ODBC:ERROR [28000] OAuth-Authentifizierungsserver-Integration ist nicht aktiviert.

Führen Sie desc <Name_der_Sicherheitsintegration> aus, um die Sicherheitsintegration zu überprüfen oder neu zu erstellen.

Die Standardrolle ist für den Benutzer nicht festgelegt.

Fehler beim Aktualisieren der Anmeldeinformationen der Datenquelle: ODBC: ERROR [28000] Dem Benutzer wurde keine Standardrolle zugewiesen. Wenden Sie sich an Ihren lokalen Systemadministrator, um eine Standardrolle zuzuweisen, und versuchen Sie es danach erneut.

Legen Sie die Standardrolle für den Benutzer fest.

Dem Benutzer kann seine Standardrolle nicht zugewiesen werden.

Test fehlgeschlagen wegen 250001 (08001): Verbindung zu DB fehlgeschlagen: <Host>. Die für den Benutzer konfigurierte Standardrolle ‚<ROLE>‘ wurde diesem Benutzer nicht zugewiesen. Contact your local system administrator, or attempt to login using a CLI client with a connect string selecting another role, e.g. PUBLIC.

Überprüfen Sie die Standardrolle für den Benutzer, und weisen Sie ihm diese zu.

Anmeldeverlauf

Wenn ein Benutzer zwar auf Power BI zugreifen kann, aber keine Snowflake-Sitzung instanziiert, können Sie ermitteln, wann der Benutzer zuletzt auf Snowflake zugegriffen hat, indem Sie die folgenden Befehle über einen unterstützten Konnektor oder die Snowflake-Weboberfläche ausführen. Beachten Sie, dass nur erfolgreiche Authentifizierungen protokolliert werden.

use role accountadmin;
select *
from table(information_schema.login_history(dateadd('hours',-1,current_timestamp()),current_timestamp()))
order by event_timestamp;
Copy

Prüfen Sie für jedes Ergebnis die Spalten USER_NAME und FIRST_AUTHENTICATION_FACTOR.

  • Der Wert USER_NAME sollte mit den Attributzuordnungen übereinstimmen, die im Abschnitt Voraussetzungen beschrieben sind.

  • Das Attribut FIRST_AUTHENTICATION_FACTOR sollte auf OAUTH_ACCESS_TOKEN gesetzt sein.