Festlegen einer effektiven Identität

Abgeschlossen

Sie können die effektive Identität bei der Arbeit mit dem Szenario Für Ihre Kunden festlegen, wenn Sie ein Einbettungstoken generieren.

Ihre App-Logik erstellt zunächst eine Liste von mindestens einem effectiveidentity-Objekt. Jedes Objekt kann die folgenden Parameter enthalten.

  • Datasets: (Erforderlich) Eine Liste von DatasetIDs.

  • Username: (Optional) Bei intern gehosteten Modellen ist es ein Textwert, der von der Funktion USERNAME oder USERPRINCIPALNAME zurückgegeben wird. Bei extern gehosteten Modellen ist es der Benutzername, mit dem Sie eine Verbindung mit dem Modell herstellen.

  • Roles: (Optional) Liste der Rollennamen.

  • CustomData: (Optional) Ein Textwert, der von der Funktion CUSTOMDATA zurückgegeben wird.

  • IdentityBlob: (Optional) Ein Azure AD-Zugriffstoken, das für eine tokenbasierte Identität mit einer DirectQuery-Verbindung mit einer Microsoft Azure SQL-Datenbank verwendet wird. Es ermöglicht das Erzwingen von Datenberechtigungen ohne Datenmodell-RLS. Dieses Thema wird später in dieser Lerneinheit beschrieben.

Sie können eine Liste von Datasets übergeben, da das Einbettungstoken verwendet wird, um viele Power BI-Artefakte einzubetten, die mit verschiedenen Datasets verbunden sind, oder da ein Dashboard aus Kacheln besteht, die Verbindungen mit mehreren Datasets herstellen. Wenn eine Liste mehrerer Rollen übergeben wird, werden alle Rollen gleichzeitig erzwungen, was bedeutet, dass der Benutzer bzw. die Benutzerin die Union der Daten anzeigen kann, die die Rollen gewähren.

Das folgende Beispiel erstellt eine Liste, die ein effectiveidentity-Objekt enthält. Es übergibt den Benutzernamen des aktuellen Benutzers bzw. der Benutzerin der App, die Rolle Region und das erste (und vielleicht einzige) Dataset, das im Arbeitsbereich gefunden wurde:

// Create effective identity for the first dataset
var datasetId = datasets[0].Id.ToString();
var effectiveIdentities = new List<EffectiveIdentity>() {
	new EffectiveIdentity(
		username: userProfile.Username,
		roles: new List<string> {"Region"},
		datasets: new List<string> {datasetId})
};

Als Nächstes übergibt die App zum Generieren eines Einbettungstokens die Liste an den identities-Parameter der GenerateTokenRequestV2-Methode. Andere Methoden generieren Einbettungstoken, anhand jedes Sie eine Liste von effektiven Identitäten übergeben können.

// Bundle token requests for the reports, datasets, and the workspace
var tokenRequest = new GenerateTokenRequestV2(
    reports: reportTokenRequests,
    datasets: datasetTokenRequests,
    targetWorkspaces: workspaceRequests,
    identities: effectiveIdentities
) ;

In den folgenden Themen finden Sie weitere Einzelheiten zum Festlegen der effektiven Identität für jeden der Power BI-Datasettypen.

Festlegen einer effektiven Identität für intern gehostete Importtabellen

Berücksichtigen Sie die folgenden Parameter, wenn Sie eine effektive Identität übergeben, um eine Verbindung mit einem intern gehosteten Modell mit Importtabellen herzustellen:

  • Mindestens eine Rolle muss in dem Modell definiert sein.

  • Der Benutzername muss übergeben werden, aber es muss kein echter Benutzername sein. Der übergebene Wert wird von der Funktion USERNAME oder USERPRINCIPALNAME zurückgegeben.

  • Mindestens eine Rolle muss durch die effektive Identität definiert sein.

Festlegen der effektiven Identität für intern gehostete DirectQuery-Tabellen

Um die effektive Identität für interne gehostete DirectQuery-Tabellen festzulegen, verwenden Sie dieselbe Anleitung für interne gehostete Importtabellen.

Darüber hinaus können Sie die tokenbasierte Identität verwenden. Mit der tokenbasierten Identität können Sie die effektive Identität für ein eingebettetes Token mithilfe eines Azure AD-Zugriffstokens festlegen, allerdings nur, wenn die Quelle eine Azure SQL-Datenbank ist. Beim Generieren des Einbettungstokens übergibt Ihre App das Zugriffstoken an den Parameter IdentityBlob. In diesem Fall müssen Sie keinen Wert an den username-Parameter übergeben.

Die Verwendung der tokenbasierten Identität erfordert, dass der Besitzer des Datasets die Datenquelle so festlegt, dass sie die OAuth2-Anmeldeinformationen der Benutzer verwendet. Auf diese Weise verwendet Power BI den Benutzernamen der effektiven Identität, um eine Verbindung mit der Datenquelle herzustellen. Das bedeutet, dass die Datenbank die Sicherheit auf Zeilenebene anstelle des Datenmodells erzwingen kann.

Weitere Informationen zur tokenbasierten Identität finden Sie unter Sicherheitsfeatures in Power BI Embedded.

Festlegen einer effektiven Identität für Azure Analysis Services

Um eine effektive Identität festzulegen, wenn Sie ein Azure Analysis Services-Modell verwenden, müssen Sie sicherstellen, dass die einbettende Identität (Dienstprinzipal oder Masterbenutzerkonto) mindestens über die Leseberechtigung für das Modell verfügt.

Wenn keine effektive Identität übergeben wird und das einbettende Identitätskonto ein Analysis Services-Administrator ist, werden allen Benutzer*innen der App alle Modelldaten angezeigt. Wenn das einbettende Identitätskonto kein Analysis Services-Administrator ist, wird die Datensichtbarkeit durch die diesem Konto zugewiesenen Rollen eingeschränkt.

Hinweis

Wenn ein Dienstprinzipal mit einem Azure Analysis Services-Modell verwendet wird, muss der Dienstprinzipal selbst über Azure Analysis Services-Instanzberechtigungen verfügen. Die Verwendung einer Sicherheitsgruppe, die das Dienstprinzipal enthält, funktioniert nicht.

Berücksichtigen Sie die folgenden Parameter, wenn Sie die effektive Identität übergeben, um mit einem Azure Analysis Services-Modell zu arbeiten:

  • Mindestens eine Rolle muss in dem Modell definiert sein.

  • Der Benutzername muss ein Masterbenutzerkonto (UPN-Format) oder ein Dienstprinzipal (ObjectID) sein.

  • Wenn keine Rollen Teil der effektiven Identität sind, werden die dem effektiven Identitätskonto zugewiesenen Rollen angewendet.

  • Die Funktion USERNAME gibt den effektiven Benutzernamen der Identität zurück.

Festlegen einer effektiven Identität für SQL Server Analysis Services

Um die effektive Identität festzulegen, wenn Sie ein SQL Server Analysis Services-Modell verwenden, müssen Sie sicherstellen, dass die Anmeldeinformationen für die Gatewaydatenquelle als Analysis Services-Administrator festgelegt sind.

Die effektive Identität (Dienstprinzipal oder Masterbenutzerkonto) muss ein Gatewayadministrator sein oder über ReadOverrideEffectiveIdentity-Berechtigungen für die Gatewaydatenquelle verfügen. Diese Berechtigung kann nur mithilfe der Power BI-REST-API festgelegt werden.

Wenn keine effektive Identität übergeben wird und das einbettende Identitätskonto ein Analysis Services-Administrator ist, werden allen Benutzer*innen alle Modelldaten angezeigt. Wenn das einbettende Identitätskonto kein Analysis Services-Administrator ist, wird die Datensichtbarkeit durch die diesem Konto zugewiesenen Rollen eingeschränkt.

Berücksichtigen Sie die folgenden Parameter, wenn Sie die effektive Identität übergeben, um mit einem SQL Server Analysis Services-Modell zu arbeiten:

  • Mindestens eine Rolle muss in dem Modell definiert sein.

  • Der Benutzername muss ein Windows-Konto sein, das einen UPN oder das Format „DOMÄNE\Benutzername“ verwendet.

  • Der Benutzername muss über die Leseberechtigung für das Modell verfügen.

  • Wenn keine Rollen Teil der effektiven Identität sind, werden die dem effektiven Identitätsbenutzernamen zugewiesenen Rollen angewendet.

  • Die Funktion USERNAME gibt den effektiven Benutzernamen der Identität zurück.

  • Die Verwendung der Funktion CUSTOMDATA wird nicht unterstützt.

Vergleichen von Datasettypen

In der folgenden Tabelle werden effektive Identitätsparametereinstellungen für die vier Datasettypen verglichen.

Parameter Intern gehostete Importtabellen Intern gehostete DirectQuery-Tabellen Azure Analysis Services SQL Server Analysis Services
Username Jeder Textwert, der von den Funktionen USERNAME und USERPRINCIPALNAME zurückgegeben wird Jeder Textwert, der von den Funktionen USERNAME und USERPRINCIPALNAME zurückgegeben wird Er wird verwendet, um sich bei dem Dienst zu authentifizieren. Es muss sich um ein Masterbenutzerkonto (UPN-Format) oder einen Dienstprinzipal (ObjectID) handeln. Er wird verwendet, um sich bei dem Dienst zu authentifizieren. Er muss ein Windows-Konto sein, das einen UPN oder das Format „DOMÄNE\Benutzername“ verwendet.
CustomData Unterstützt Unterstützt Unterstützt Nicht unterstützt
Rollen Mindestens eine Rolle muss durch die effektive Identität definiert sein. Mindestens eine Rolle muss durch die effektive Identität definiert sein. Wenn keine Rolle übergeben wird, werden die dem effektiven Identitätskonto zugewiesenen Rollen angewendet. Wenn keine Rolle übergeben wird, werden die dem effektiven Identitätskonto zugewiesenen Rollen angewendet.
IdentityBlob Nein Ja, wenn die Quelldaten eine Azure SQL-Datenbank sind (die die RLS-Anforderungen erzwingen sollte) Nein Nein
Zusätzliche Informationen Erfordert ein Gateway. Das effektive Identitätskonto muss ein Gatewayadministrator sein.