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:
Der Benutzer meldet sich mit Microsoft Azure Active Directory (Azure AD) beim Power BI-Dienst an.
(Optional) Wenn der Identitätsanbieter nicht Azure AD ist, verifiziert Azure AD den Benutzer vor Anmeldung beim Power BI-Dienst mithilfe der SAML-Authentifizierung.
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 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 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.
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 sind die Rollen des Kontoadministrators (d. h. Benutzer mit der Systemrolle ACCOUNTADMIN) und des Sicherheitsadministrators (d. h. Benutzer mit der Systemrolle SECURITYADMIN) für die Verwendung von Microsoft Power BI zur Instanziierung einer Snowflake-Sitzung gesperrt. 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
oderemail
des Snowflake-Benutzers muss dem Azure-Attribut ADupn
zugeordnet werden. Wenn das Attributlogin_name
nicht definiert ist, wird standardmäßig das Attributname
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 |
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. |
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 aufOAUTH_ACCESS_TOKEN
gesetzt sein.