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:
Der Benutzer meldet sich mit Microsoft Azure Active Directory (Azure AD) beim Power BI-Dienst an.
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.
Wenn der Benutzer eine Verbindung zu Snowflake herstellt, fordert der Power BI-Dienst Azure AD auf, ihm ein Token für Snowflake zu übergeben.
Der Power BI-Dienst verwendet den eingebetteten Snowflake-Treiber, um das Azure AD-Token als Teil der Verbindungszeichenfolge an Snowflake zu senden.
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 deraddressPrefixes
-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
oderemail
des Snowflake-Benutzers muss dem Azure-Attribut ADupn
zugeordnet werden. Wenn das Attributlogin_name
nicht definiert ist, wird standardmäßig das Attributname
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 SicherheitsintegrationsparameterEXTERNAL_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'
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'
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';
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';
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:
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 |
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 |
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 |
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 |
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;
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 aufOAUTH_ACCESS_TOKEN
gesetzt sein.