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.

Diese Funktion macht lokale Power BI Gateway-Implementierungen überflüssig, 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:

pbi sso workflow overview
  1. Der Benutzer meldet sich mit Microsoft Azure Active Directory (Azure AD) beim Power BI-Dienst an.

  2. (Optional) Wenn der Identitätsanbieter nicht Azure AD ist, verifiziert Azure AD den Benutzer vor Anmeldung beim Power BI-Dienst mithilfe der SAML-Authentifizierung.

  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 die Power BI SSO-Funktion verwenden:

  • Wenn Sie in Snowflake 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.

  • Wenn für einen Benutzer entweder die Snowflake-Rolle ACCOUNTADMIN oder SECURITYADMIN verwendet werden muss, wenden Sie sich an den Snowflake-Support.

    Bemerkung

    Standardmäßig können die Rollen des Kontoadministrators (ACCOUNTADMIN) und des Sicherheitsadministrators (SECURITYADMIN) Microsoft Power BI nicht zum Instanziieren einer Snowflake-Sitzung verwenden. Wenn Sie Benutzern aus geschäftlichen Gründen die Verwendung dieser Rollen gestatten müssen und Ihr Sicherheitsteam damit einverstanden ist, wenden Sie sich an den Snowflake-Support mit der Anforderung, dass die Rollen für Ihr Konto zugelassen werden.

  • 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.

Einschränkungen

Derzeit weist die Snowflake Power BI SSO-Funktion die folgenden Einschränkungen auf:

  • AWS PrivateLink und Azure Private Link werden nicht unterstützt. Wenn Sie einen dieser beiden Dienste verwenden müssen, um eine Verbindung zu Snowflake herzustellen, verwenden Sie dafür das lokale Gateway. Dieser Pfad bietet keine Anmeldung mit Single Sign-On.

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. Stellen Sie sicher, dass der Wert für den Sicherheitsintegrationsparameter external_oauth_audience_list korrekt festgelegt wird, je nachdem, ob sich Ihr Snowflake-Konto in der Microsoft Azure Government-Cloudregion befindet oder nicht.

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')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name';

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')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name';

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.

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

Ändern Ihrer 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.

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 keine Netzwerkrichtlinien zu Ihrer External OAuth-Sicherheitsintegration hinzugefügt werden.

Wenn für Ihren Anwendungsfall OAuth und eine Snowflake-Netzwerkrichtlinie erforderlich sind, verwenden Sie Snowflake OAuth.

Weitere Informationen dazu finden Sie unter OAuth und Netzwerkrichtlinien.

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/Fortsetzen eines Warehouse.

  • 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.

Fehlermeldung

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).

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.

Anmeldehistorie

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;

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.