Sicherheit auf Zeilenebene mit Power BI EmbeddedRow-level security with Power BI Embedded

Ist diese Seite hilfreich?

Mit der Sicherheit auf Zeilenebene (Row-Level Security, RLS) kann der Benutzerzugriff auf Daten in Dashboards, Kacheln, Berichten und Datasets beschränkt werden.Row-level security (RLS) can be used to restrict user access to data within dashboards, tiles, reports, and datasets. Verschiedene Benutzer können mit den gleichen Artefakten arbeiten und dabei unterschiedliche Daten sehen.Different users can work with those same artifacts all while seeing different data. Beim Einbetten wird RLS unterstützt.Embedding supports RLS.

Wenn Sie Berichte für Benutzer einbetten, die nicht Power BI verwenden (d.h. die App ist Besitzer der Daten), was normalerweise bei ISVs der Fall ist, ist dieser Artikel für Sie relevant.If you're embedding for non-Power BI users (app owns data), which is typically an ISV scenario, then this article is for you! Konfigurieren Sie das Einbettungstoken, um den Benutzer und die Rolle anzugeben.Configure the embed token to account for the user and role.

Wenn Sie Berichte für Power BI-Benutzer in der Organisation einbetten (der Benutzer ist der Besitzer der Daten), funktioniert RLS auf die gleiche Weise wie direkt im Power BI-Dienst.If you're embedding to Power BI users (user owns data), within your organization, RLS works the same as it does within the Power BI service directly. Sie müssen in der Anwendung keine weiteren Aktionen ausführen.There's nothing more you need to do in your application. Weitere Informationen finden Sie unter Sicherheit auf Zeilenebene (row-level Security; RLS) mit Power BI.For more information, see Row-Level security (RLS) with Power BI.

Die für die Sicherheit auf Zeilenebene relevanten Elemente.

Um RLS nutzen zu können, müssen Sie drei wichtige Konzepte verstehen: Benutzer, Rollen und Regeln.To take advantage of RLS, it’s important you understand three main concepts; Users, Roles, and Rules. Sehen wir uns diese im Einzelnen genauer an:Let’s take a closer look at each:

Benutzer: Endbenutzer, die das Artefakt (Dashboard, Kachel, Bericht oder Dataset) anzeigen.Users – End users viewing the artifact (dashboard, tile, report, or dataset). In Power BI Embedded werden Benutzer durch die username-Eigenschaft in einem Einbettungstoken identifiziert.In Power BI Embedded, users are identified by the username property in an embed token.

Rollen: Benutzer gehören Rollen an.Roles – Users belong to roles. Eine Rolle ist ein Container für Regeln. Sie kann z.B. mit Vertriebsleiter oder Vertriebsmitarbeiter benannt werden. Rollen werden in Power BI Desktop erstellt.A role is a container for rules and can be named something like Sales Manager or Sales Rep. You create roles within Power BI Desktop. Weitere Informationen finden Sie unter Sicherheit auf Zeilenebene (row-level Security; RLS) mit Power BI Desktop.For more information, see Row-level security (RLS) with Power BI Desktop.

Regeln: Für Rollen gelten Regeln, und diese Regeln sind die Filter, die auf die Daten anzuwenden sind.Rules – Roles have rules, and those rules are the actual filters that are going to be applied to the data. Dabei kann es sich um eine einfache Regel, z.B. „Land = USA“, oder eine dynamischere Regel handeln.The rules could be as simple as “Country = USA” or something much more dynamic. Im Rest dieses Artikels wird ein Beispiel für das Erstellen von RLS beschrieben, das dann in einer eingebetteten Anwendung verwendet wird.For the rest of this article, there's an example of authoring RLS, and then consuming that within an embedded application. In unserem Beispiel wird die PBIX-Datei Retail Analysis Sample (Analysebeispiel für den Einzelhandel) verwendet.Our example uses the Retail Analysis Sample PBIX file.

Beispiel für einen Bericht

Hinzufügen von Rollen mit Power BI DesktopAdding roles with Power BI Desktop

Im Analysebeispiel für den Einzelhandel werden die Umsätze für alle Geschäfte in einer Einzelhandelskette angezeigt.Our Retail Analysis sample shows sales for all the stores in a retail chain. Ohne RLS werden für jeden Gebietsleiter, der sich anmeldet und den Bericht öffnet, dieselben Daten angezeigt.Without RLS, no matter which district manager signs in and views the report, they all see the same data. Die Geschäftsleitung hat bestimmt, dass für jeden Gebietsleiter nur die Umsätze für die von ihnen geleiteten Geschäfte angezeigt werden sollen.Senior management has determined each district manager should only see the sales for the stores they manage. Mithilfe von RLS kann die Geschäftsleitung die Datenanzeige auf den jeweiligen Gebietsleiter einschränken.Using RLS allows Senior management to restrict data based on a district manager.

RLS wird in Power BI Desktop konfiguriert.RLS is authored in Power BI Desktop. Wenn das Dataset und der Bericht geöffnet sind, können wir zur Diagrammansicht wechseln, um das Schema anzuzeigen:When the dataset and report are opened, we can switch to diagram view to see the schema:

Diagrammansicht in Power BI Desktop

Dieses Schema weist die folgenden Merkmale auf:Here are a few things to notice with this schema:

  • Sämtliche Measures, z.B. Total Sales (Gesamtumsatz), werden in der Faktentabelle Sales (Umsätze) gespeichert.All measures, like Total Sales, are stored in the Sales fact table.

  • Es gibt vier zusätzliche verknüpfte Dimensionstabellen: Item (Element), Time (Zeit), Store (Geschäft) und District (Gebiet).There are four additional related dimension tables: Item, Time, Store, and District.

  • Die Pfeile auf den Beziehungslinien geben die Richtung der Filter zwischen den Tabellen an.The arrows on the relationship lines indicate which way filters can flow from one table to another. Wenn z.B. im aktuellen Schema der Filter Time[Date] (Zeit[Datum]) eingesetzt wird, filtert dieser nur Werte in der Tabelle Sales (Umsätze).For example, if a filter is placed on Time[Date], in the current schema it would only filter down values in the Sales table. Von diesem Filter sind keine weiteren Tabellen betroffen, da alle Pfeile auf den Beziehungslinien ausschließlich auf die Tabelle „Sales“ (Umsätze) zeigen.No other tables are affected by this filter since all the arrows on the relationship lines point to the sales table and not away.

  • Die Tabelle District (Bezirk) gibt an, wer der Gebietsleiter für den jeweiligen Bezirk ist:The District table indicates who the manager is for each district:

    Zeilen in der Tabelle „Disctrict“ (Bezirk)

Wir wenden basierend auf diesem Schema einen Filter auf die Spalte District Manager (Gebietsleiter) in der Tabelle District (Gebiet) an. Wenn dieser Filter mit dem Benutzer übereinstimmt, der den Bericht anzeigt, wird der Filter auch auf die Tabellen Store (Geschäft) und Sales (Umsätze) angewendet, damit Daten für diesen Gebietsleiter angezeigt werden.Based on this schema, if we apply a filter to the District Manager column in the District table, and if that filter matches the user viewing the report, that filter down the Store and Sales tables to show data for that district manager.

Dazu gehen Sie wie folgt vor:Here's how:

  1. Wählen Sie auf der Registerkarte Modellierung die Option Rollen verwalten aus.On the Modeling tab, select Manage Roles.

    Registerkarte „Modellierung“ in Power BI Desktop

  2. Erstellen Sie eine neue Rolle mit dem Namen Manager.Create a new role called Manager.

    Neue Rolle erstellen

  3. Geben Sie in der Tabelle District (Gebiet) diesen DAX-Ausdruck ein: [District Manager] = USERNAME() .In the District table, enter this DAX expression: [District Manager] = USERNAME().

    DAX-Anweisung für RLS-Regel

  4. Um sicherzustellen, dass die Regeln angewendet werden, wählen Sie auf der Registerkarte Modellierung die Option Als Rollen anzeigen aus, und wählen Sie dann die von Ihnen erstellte Rolle Manager sowie Anderer Benutzer aus.To make sure the rules are working, on the Modeling tab, select View as Roles, and then select both the Manager role you created, along with Other users. Geben Sie als Benutzer AndrewMa ein.Enter AndrewMa for the user.

    Dialogfeld „Als Rollen anzeigen“

    In den Berichten werden jetzt Daten für den angemeldeten Benutzer AndrewMa angezeigt.The reports show data as if you're signed in as AndrewMa.

Wenn der Filter so wie hier angewendet wird, werden alle Datensätze in den Tabellen District (Bezirk), Store (Geschäft) und Sales (Umsätze) gefiltert.Applying the filter, the way we did here, filters down all records in the District, Store, and Sales tables. Aufgrund der Filterrichtung in den Beziehungen zwischen den Tabellen Sales (Umsätze) und Time (Zeit), Sales (Umsätze) und Item (Artikel) sowie Item (Artikel) und Time (Zeit) erfolgt keine Filterung in diesen Tabellen.However, because of the filter direction on the relationships between Sales and Time, Sales and Item, and Item and Time tables aren't filtered down. Um weitere Informationen über die bidirektionale Kreuzfilterung zu erhalten, laden Sie das Whitepaper Bidirectional cross-filtering in SQL Server Analysis Services 2016 and Power BI Desktop (Bidirektionale Kreuzfilterung in SQL Server Analysis Services 2016 und Power BI Desktop, in englischer Sprache) herunter.To learn more about bidirectional cross-filtering, download the Bidirectional cross-filtering in SQL Server Analysis Services 2016 and Power BI Desktop whitepaper.

Anwenden eines Benutzers und einer Rolle auf ein EinbettungstokenApplying user and role to an embed token

Nachdem Sie jetzt die Power BI Desktop-Rollen konfiguriert haben, müssen in Ihrer Anwendung einige Schritte ausgeführt werden, um die Rollen zu nutzen.Now that you have your Power BI Desktop roles configured, there's some work needed in your application to take advantage of the roles.

Benutzer werden durch die Anwendung authentifiziert und autorisiert, und mithilfe von Einbettungstoken wird einem Benutzer Zugriff auf einen bestimmten Power BI Embedded-Bericht gewährt.Users are authenticated and authorized by your application and embed tokens are used to grant that user access to a specific Power BI Embedded report. Power BI Embedded verfügt über keine Informationen über die Identität des Benutzers.Power BI Embedded doesn’t have any specific information on who your user is. Damit RLS erfolgreich angewendet wird, müssen Sie im Einbettungstoken zusätzlichen Kontext in Form von Identitäten übergeben.For RLS to work, you need to pass some additional context as part of your embed token in the form of identities. Sie können die Identitäten mithilfe der Embed Token-API übergeben.You can pass the identities by using the Embed Token API.

Die API akzeptiert eine Liste von Identitäten mit Angabe der entsprechenden Datasets.The API accepts a list of identities with indication of the relevant datasets. Damit RLS funktioniert, müssen Sie folgende Elemente als Teil der Identität übergeben.For RLS to work, you need to pass the below pieces as part of the identity.

  • username (obligatorisch): Eine Zeichenfolge, die beim Anwenden von RLS-Regeln zum Identifizieren des Benutzers verwendet werden kann.username (mandatory) – A string that can be used to help identify the user when applying RLS rules. Es kann nur ein einziger Benutzer aufgelistet werden.Only a single user can be listed. Ihr Benutzername kann mit ASCII-Zeichen erstellt werden.Your username can be created with ASCII characters.
  • roles (obligatorisch): Eine Zeichenfolge, in der die Rollen angegeben werden, die beim Anwenden von Regeln für die Sicherheit auf Zeilenebene ausgewählt werden sollen.roles (mandatory) – A string containing the roles to select when applying Row Level Security rules. Wenn mehrere Rollen übergeben werden, müssen sie als Zeichenfolgenarray übergeben werden.If passing more than one role, they should be passed as a string array.
  • dataset (obligatorisch): Das entsprechende Dataset für das Artefakt, das Sie einbetten.dataset (mandatory) – The dataset that is applicable for the artifact you're embedding.

Sie können das Einbettungstoken mit der GenerateTokenInGroup-Methode für PowerBIClient.Reports erstellen.You can create the embed token by using the GenerateTokenInGroup method on PowerBIClient.Reports.

Sie können z.B. das Beispiel PowerBIEmbedded_AppOwnsData ändern.For example, you could change the PowerBIEmbedded_AppOwnsData sample. Die Zeilen 76 und 77 in Home\HomeController.cs können aktualisiert werden von:Services\EmbedService.cs line 76 and 77 could be updated from:

// Generate Embed Token.
var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");

var tokenResponse = await client.Reports.GenerateTokenInGroupAsync(GroupId, report.Id, generateTokenRequestParameters);

aufto

var generateTokenRequestParameters = new GenerateTokenRequest("View", null, identities: new List<EffectiveIdentity> { new EffectiveIdentity(username: "username", roles: new List<string> { "roleA", "roleB" }, datasets: new List<string> { "datasetId" }) });

var tokenResponse = await client.Reports.GenerateTokenInGroupAsync("groupId", "reportId", generateTokenRequestParameters);

Wenn Sie die REST-API aufrufen, akzeptiert die aktualisierte API jetzt ein zusätzliches JSON-Array mit dem Namen identities, das einen Benutzernamen, eine Liste von Zeichenfolgen für Rollen und eine Liste von Zeichenfolgen für Datasets enthält.If you're calling the REST API, the updated API now accepts an additional JSON array, named identities, containing a username, list of string roles and list of string datasets.

Verwenden Sie den folgenden Code als Beispiel:Use the following code below as an example:

{
    "accessLevel": "View",
    "identities": [
        {
            "username": "EffectiveIdentity",
            "roles": [ "Role1", "Role2" ],
            "datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
        }
    ]
}

Nachdem jetzt alle Elemente implementiert wurden, werden für einen Benutzer, der bei Ihrer Anwendung anmeldet, um dieses Artefakt zu betrachten, nur die Daten angezeigt, die für ihn gemäß der von uns definierten Sicherheit auf Zeilenebene angezeigt werden dürfen.Now, with all the pieces together, when someone logs into your application to view this artifact, they’ll only see the data that they're allowed to see, as defined by our row-level security.

Arbeiten mit den Liveverbindungen von Analysis ServicesWorking with Analysis Services live connections

Bei Liveverbindungen von Analysis Services kann für lokale Server Sicherheit auf Zeilenebene verwendet werden.Row-level security can be used with Analysis Services live connections for on-premises servers. Wenn Sie diesen Typ von Verbindung verwenden, sollten Sie einige spezielle Konzepte verstehen.There are a few specific concepts that you should understand when using this type of connection.

Die effektive Identität, die für die username-Eigenschaft bereitgestellt wird, muss ein Windows-Benutzer mit Berechtigungen für den Analysis Services-Server sein.The effective identity that is provided for the username property must be a Windows user with permissions on the Analysis Services server.

Konfiguration des lokalen DatengatewaysOn-premises data gateway configuration

Beim Arbeiten mit Liveverbindungen von Analysis Services wird ein lokales Datengateway verwendet.An On-premises data gateway is used when working with Analysis Services live connections. Beim Generieren eines Einbettungstokens mit einer angegebenen Identität muss das Hauptkonto als Administrator des Gateways aufgeführt werden.When generating an embed token, with an identity listed, the master account needs to be listed as an admin of the gateway. Wenn das Hauptkonto nicht aufgeführt ist, wird die Sicherheit auf Zeilenebene nicht auf die Eigenschaft der Daten angewendet.If the master account isn't listed, the row-level security isn't applied to the property of the data. Ein Benutzer des Gateways ohne Administratorrechte kann Rollen bereitstellen, er muss jedoch den eigenen Benutzernamen als effektive Identität angeben.A non-admin of the gateway can provide roles, but must specify its own username for the effective identity.

Verwenden von RollenUse of roles

Rollen können in einem Einbettungstoken mit der Identität angegeben werden.Roles can be provided with the identity in an embed token. Wenn keine Rolle angegeben wurde, wird zum Auflösen der zugehörigen Rollen der angegebene Benutzername verwendet.If no role is provided, the username that was provided can be used to resolve the associated roles.

Verwenden des CustomData-FeaturesUsing the CustomData feature

Das CustomData-Feature funktioniert nur für Modelle, die in Azure Analysis Services gespeichert sind, und nur im Live verbinden-Modus.The CustomData feature only works for models that lie in Azure Analysis Services, and it only works in Connect live mode. Im Gegensatz zu Benutzern und Rollen kann das CustomData-Feature nicht innerhalb einer PBIX-Datei festgelegt werden.Unlike users and roles, the Custom data feature can't be set inside a .pbix file. Wenn ein Token mit dem CustomData-Feature generiert wird, müssen Sie einen Benutzernamen besitzen.When generating a token with the Custom data feature, you need to have a username.

Das CustomData-Feature ermöglicht das Hinzufügen eines Zeilenfilters beim Anzeigen von Power BI-Daten in Ihrer Anwendung, wenn Azure Analysis Services als Datenquelle verwendet wird (Anzeigen von Power BI-Daten, die in Ihrer Anwendung mit Azure Analysis Services verbunden sind).The CustomData feature allows you to add a Row filter when viewing Power BI data in your application when using Azure Analysis Services as your data source (viewing Power BI data connected to Azure Analysis Services in your application).

Das CustomData-Feature ermöglicht die Übergabe von Freitext (Zeichenfolge) mithilfe der Verbindungszeichenfolgen-Eigenschaft von CustomData.The CustomData feature allows passing free text (string) using the CustomData connection string property. Analysis Services verwendet diesen Wert über die CUSTOMDATA() -Funktion.Analysis Services use this value via the CUSTOMDATA() function.

Die einzige Möglichkeit, in Azure Analysis Services eine dynamische Sicherheit auf Zeilenebene zu erzielen (bei der dynamische Werte für die Filterauswertung verwendet werden), ist die Verwendung der CUSTOMDATA() -Funktion.The only way to have dynamic RLS (which uses dynamic values for filter evaluation) in Azure Analysis Services, is using the CUSTOMDATA() function.

Sie können das Feature innerhalb der DAX-Rollenabfrage verwenden. Außerdem können Sie es ohne eine Rolle in einer DAX-Measureabfrage verwenden.You can use it inside the role DAX query, and you can use it without any role in a measure DAX query. Das CustomData-Feature ist Teil der Funktionalität zur Tokengenerierung für folgende Elemente: Dashboards, Berichte und Kacheln.CustomData feature is part of our token generation functionality for the following artifacts: dashboard, report, and tile. Dashboards können über mehrere CustomData-Identitäten (eine pro Kachel/Modell) verfügen.Dashboards can have multiple CustomData identities (one per tile/model).

Erweiterungen des CustomData SDKCustomData SDK Additions

Die CustomData-Zeichenfolgeneigenschaft wurde bei der Tokengenerierung zur effektiven Identität hinzugefügt.The CustomData string property was added to our effective identity in the token generation scenario.

[JsonProperty(PropertyName = "customData")]
public string CustomData { get; set; }

Die Identität kann mithilfe von benutzerdefinierten Daten erstellt werden, indem Sie folgenden Aufruf verwenden:The identity can be created with custom data using the following call:

public EffectiveIdentity(string username, IList<string> datasets, IList<string> roles = null, string customData = null);

Verwendung des CustomData SDKCustomData SDK Usage

Wenn Sie die REST-API aufrufen, können Sie in jeder Identität benutzerdefinierte Daten hinzufügen, z.B.:If you're calling the REST API, you can add custom data inside each identity, for example:

{
    "accessLevel": "View",
    "identities": [
        {
            "username": "EffectiveIdentity",
            "roles": [ "Role1", "Role2" ],
            "customData": "MyCustomData",
            "datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
        }
    ]
}

Im Folgenden finden Sie die Schritte, mit denen Sie mit der Einrichtung der CustomData()-Funktion mit Ihrer Power BI Embedded-Anwendung beginnen.Here are the steps to begin setting up the CustomData() feature with your Power BI Embedded application.

  1. Erstellen Sie Ihre Azure Analysis Services-Datenbank.Create your Azure Analysis Services database. Melden Sie sich dann über SQL Server Management Studio bei Ihrem Azure Analysis Services-Server an.Then sign in to your Azure Analysis Services server via SQL Server Management Studio.

    Azure Analysis Services-Datenbank erstellen

    Analysis Services-Datenbank

  2. Erstellen Sie eine Rolle im Analysis Services-Server.Create a Role in the Analysis Services server.

    Rolle erstellen

  3. Legen Sie allgemeine Einstellungen fest.Set your General settings. Hier geben Sie den Rollennamen an und legen die Datenbankberechtigungen auf Schreibgeschützt fest.Here you give the Role Name and set the database permissions to Read only.

    Rolle erstellen: allgemeine Einstellungen festlegen

  4. Legen Sie die Einstellungen für die Mitgliedschaft fest.Set the Membership settings. Hier fügen Sie die Benutzer hinzu, auf die sich die Rolle auswirkt.Here you add te users that are affected by this role.

    Rolle erstellen: Einstellungen für Mitgliedschaft festlegen

  5. Legen Sie die DAX-Abfrage Zeilenfilter mithilfe der CUSTOMDATA() -Funktion fest.Set your Row filters DAX query using the CUSTOMDATA() function.

    Rolle erstellen: Zeilenfilter festlegen

  6. Erstellen Sie einen PBI-Bericht, und veröffentlichen Sie ihn in einem Arbeitsbereich mit dedizierter Kapazität.Build a PBI report and publish it to a workspace with dedicated capacity.

    Beispiel für PBI-Bericht

  7. Verwenden Sie die Power BI-APIs, um das CustomData-Feature in Ihrer Anwendung zu verwenden.Use the Power BI APIs to use the CustomData feature in your application. Wenn ein Token mit dem CustomData-Feature generiert wird, müssen Sie einen Benutzernamen besitzen.When generating a token with the Custom data feature, you need to have a username. Der Benutzername muss dem UPN des Hauptbenutzers entsprechen.The username must be equal to the UPN of the master user. Der Hauptbenutzer muss Mitglied der von Ihnen erstellten Rollen sein.The master user must be a member of the role(s) you created. Wenn keine Rollen angegeben werden, werden alle Rollen, in denen der Hauptbenutzer Mitglied ist, für die RLS-Auswertung verwendet.If no role(s) are specified, then all the roles the master user is a member of are used for RLS evaluation.

    Bei der Arbeit mit einem Dienstprinzipal, müssen Sie auch die oben aufgeführten Schritte anstelle mit einem master-Konto.When working with a service principal, you also need to do the above steps in place of using a master account. Wenn AAD-Token generieren, verwenden Sie die principal-Objekt-ID des als Benutzername.When generating embed token, use the service principal object ID as the username.

    Hinweis

    Wenn Sie zum Bereitstellen Ihrer Anwendung in der Produktion bereit sind, darf das Feld bzw. die Option für das Hauptbenutzerkonto für die Endbenutzer nicht sichtbar sein.When you're ready to deploy your application to production, the master user account field or option should not be visible to the end user.

    Zeigen Sie den Code an, um das CustomData-Feature hinzuzufügen.View the code to add the CustomData feature.

  8. Jetzt können Sie den Bericht in Ihrer Anwendung anzeigen, bevor Sie die CustomData-Werte anwenden, um alle im Bericht enthaltenen Daten zu sehen.Now you can view the report in your application before applying the Custom data value(s) to see all the data your report holds.

    Vor der Anwendung von CustomData-Werten

    Wenden Sie dann die CustomData-Werte an, um festzustellen, ob der Bericht einen anderen Satz an Daten anzeigt.Then apply the Custom data value(s) to see how the report displays a different set of data. Nach der Anwendung von CustomData-WertenAfter CustomData is applied

Verwenden von RLS im Vergleich zu JavaScript-FilternUsing RLS vs. JavaScript filters

Zur Filterung Ihrer Daten im Bericht können Sie die Sicherheit auf Zeilenebene (RLS) oder JavaScript-Filter verwenden.When deciding on filtering your data in a report, you can use row-level security (RLS) or JavaScript filters.

Die Sicherheit auf Zeilenebene ist ein Feature, das Daten auf Datenmodellebene filtert.Row-level security is a feature that filters data at the data model level. Ihre Back-End-Datenquelle steuert die RLS-Einstellungen.Your backend data source controls your RLS settings. Basierend auf dem Datenmodell werden beim Generieren des Einbettungstokens der Benutzername und die Rollen für die Sitzung festgelegt.Based on your data model, the embed token generation sets the username and the roles for the session. RLS kann durch clientseitigen Code nicht überschrieben, entfernt oder gesteuert werden – daher wird dieses Feature als sicher eingestuft.It cannot be overridden, removed, or controlled by the client-side code and that’s why it’s considered secure. RLS wird zur sicheren Filterung von Daten empfohlen.We recommend using RLS for filtering data securely. Sie können Daten mit RLS filtern, indem Sie eine der folgenden Optionen verwenden.You can filter data with RLS by using one of the options below.

  • Konfigurieren von Rollen in einem Power BI-Bericht.Configuring roles in a Power BI report.
  • Konfigurieren von Rollen auf Datenquellenebene (nur Liveverbindung mit Analysis Services).Configuring roles at the data source level (Analysis Services live connection only).
  • Programmgesteuert mit einem Einbettungstoken und EffectiveIdentity.Programmatically with an Embed Token using EffectiveIdentity. Beim Verwenden eines Einbettungstokens durchläuft der eigentliche Filter das Einbettungstoken für eine bestimmte Sitzung.When using an embed token, the actual filter passes through the embed token for a specific session.

JavaScript-Filter werden verwendet, um den Benutzern zu ermöglichen, eine reduzierte, auf einen Bereich beschränkte oder gefilterte Ansicht der Daten zu nutzen.JavaScript filters are used to allow the user to consume reduced, scoped, or a filtered view of the data. Der Benutzer hat dennoch weiterhin Zugriff auf die Tabellen, Spalten und Measures des Modellschemas und kann möglicherweise auf darin enthaltene Daten zugreifen.However, the user still has access to the model schema tables, columns, and measures and potentially can access any data there. Eingeschränkter Zugriff auf die Daten kann nur mit RLS angewendet werden, nicht über APIs zur clientseitigen Filterung.Restricted access to the data can only be applied with RLS and not through client-side filtering APIs.

Tokenbasierte Identität mit Azure SQL-Datenbank (Vorschau)Token-based Identity with Azure SQL Database (Preview)

Über die tokenbasierte Identität können Sie die effektive Identität für ein Einbettungstoken mit dem Zugriffstoken aus Azure Active Directory (AAD) für eine Azure SQL-Datenbank angeben.The token-based identity allows you to specify the effective identity for an embed token using Azure Active Directory (AAD) access token for an Azure SQL Database.

Kunden, die ihre Daten in Azure SQL-Datenbank speichern, können jetzt eine neue Funktion zum Verwalten von Benutzern und deren Zugriff auf Daten in Azure SQL bei der Integration in Power BI Embedded nutzen.Customers that hold their data in Azure SQL Database can now enjoy a new capability to manage users and their access to data in Azure SQL when integrating with Power BI Embedded.

Beim Generieren des Einbettungstokens können Sie die effektive Identität eines Benutzers in Azure SQL angeben.When you're generating the embed token, you can specify the effective identity of a user in Azure SQL. Die effektive Identität eines Benutzers wird durch die Übergabe des AAD-Zugriffstokens an den Server angegeben.You can specify the effective identity of a user by passing the AAD access token to the server. Anhand des Zugriffstokens werden nur die relevanten Daten für diesen Benutzer für diese bestimmte Sitzung per Pull aus Azure SQL abgerufen.The access token is used to pull only the relevant data for that user from Azure SQL, for that specific session.

Es kann verwendet werden, um die Ansichten der einzelnen Benutzer in Azure SQL zu verwalten oder um sich bei Azure SQL als bestimmter Kunde in einer Datenbank mit mehreren Mandanten anzumelden.It can be used to manage each user’s view in Azure SQL or to sign in to Azure SQL as a specific customer in a multi-tenant DB. Außerdem können Sie damit die Sicherheit auf Zeilenebene für die jeweilige Sitzung in Azure SQL anwenden und nur die relevanten Daten für diese Sitzung laden, sodass RLS nicht in Power BI verwaltet werden muss.It can also apply row-level security on that session in Azure SQL and retrieve only the relevant data for that session, removing the need to manage RLS in Power BI.

Probleme mit der effektiven Identität gelten für RLS-Regeln direkt auf dem Azure SQL Server-Computer.Such effective identity issues apply to RLS rules directly on the Azure SQL Server. Power BI Embedded verwendet das bereitgestellte Zugriffstoken bei der Abfrage von Daten aus Azure SQL Server.Power BI Embedded uses the provided access token when querying data from the Azure SQL Server. Der UPN des Benutzers (für den das Zugriffstoken angegeben wurde) ist als Ergebnis der USER_NAME()-SQL-Funktion zugänglich.The UPN of the user (for which the access token was provided) is accessible as a result of the USER_NAME() SQL function.

Die tokenbasierte Identität funktioniert nur für DirectQuery-Modelle für dedizierte Kapazität – verbunden mit einer Azure SQL-Datenbank, die für das Zulassen der AAD-Authentifizierung konfiguriert ist. (Weitere Informationen zur AAD-Authentifizierung für Azure SQL-Datenbank.)The token-based identity only works for DirectQuery models on dedicated capacity - connected to an Azure SQL Database, which is configured to allow AAD authentication (learn more about AAD authentication for Azure SQL Database). Die Datenquelle des Datasets muss für die Verwendung der OAuth2-Anmeldeinformationen des Endbenutzers konfiguriert sein, um einer tokenbasierte Identität zu verwenden.The dataset’s data source must be configured to use end users’ OAuth2 credentials, to use a token-based identity.

Konfigurieren von Azure SQL Server

Tokenbasierte Identität – SDK-ErweiterungenToken-based Identity SDK additions

Die Identitätsblobeigenschaft wurde unserer effektiven Identität im Szenario zur Tokengenerierung hinzugefügt.The identity blob property was added to our effective identity in the token generation scenario.

[JsonProperty(PropertyName = "identityBlob")]
public IdentityBlob IdentityBlob { get; set; }

Der IdentityBlob-Typ ist eine einfache JSON-Struktur mit einer Wertzeichenfolgen-Eigenschaft.The IdentityBlob type is a simple JSON structure holding a value string property

[JsonProperty(PropertyName = "value")]
public string value { get; set; }

Die EffectiveIdentity kann mit dem Identitätsblob über den folgenden Aufruf erstellt werden:The EffectiveIdentity can be created with identity blob using the following call:

public EffectiveIdentity(string username, IList<string> datasets, IList<string> roles = null, string customData = null, IdentityBlob identityBlob = null);

Das Identitätsblob kann mit dem folgenden Aufruf erstellt werden.Identity blob can be created using the following call.

public IdentityBlob(string value);

Tokenbasierte Identität – Nutzung der REST-APIToken-based Identity REST API Usage

Wenn Sie die REST-API aufrufen, können Sie in jeder Identität ein Identitätsblob hinzufügen.If you're calling the REST API, you can add identity blob inside each identity.

{
    "accessLevel": "View",
    "identities": [
        {
            "datasets": ["fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc"],
        “identityBlob”: {
            “value”: “eyJ0eXAiOiJKV1QiLCJh….”
         }
        }
    ]
}

Der im Identitätsblob angegebene Wert muss ein gültiges Zugriffstoken für Azure SQL Server mit der Ressourcen-URL (https://database.windows.net/) sein.The value provided in the identity blob should be a valid access token to Azure SQL Server (with a resource URL of (https://database.windows.net/).

Hinweis

Um ein Zugriffstoken für Azure SQL erstellen zu können, muss die Anwendung die delegierte Berechtigung für den Zugriff auf Azure SQL-Datenbank und Data Warehouse für die Azure SQL-Datenbank-API in der AAD-App-Registrierungskonfiguration im Azure-Portal besitzen.To be able to create an access token for Azure SQL, the application must have Access Azure SQL DB and Data Warehouse delegated permission to Azure SQL Database API on AAD app registration configuration in the Azure portal.

App-Registrierung

Lokales Datengateway mit Dienstprinzipal (Vorschau)On-premises data gateway with service principal (Preview)

Benutzer, die RLS mithilfe einer lokalen Datenquelle mit Liveverbindung von SQL Server Analysis Services (SSAS) konfigurieren, können Sie die neue Dienstprinzipalfunktion zunutze machen, um Benutzer und deren Zugriff auf Daten in SSAS bei der Integration in Power BI Embedded zu verwalten.Customers that configure row-level security (RLS) using an SQL Server Analysis Services (SSAS) on-premises live connection data source can enjoy the new service principal capability to manage users and their access to data in SSAS when integrating with Power BI Embedded.

Mit Power BI-REST-APIs können Sie die effektive Identität für lokale SSAS-Liveverbindungen für ein Einbettungstoken mithilfe eines Dienstprinzipalobjekts festlegen.Using Power BI REST APIs, allows you to specify the effective identity for SSAS on-premises live connections for an embed token using a service principal object.

Bisher musste der Masterbenutzer, der das Einbettungstoken generiert, ein Gatewayadministrator sein, um die effektive Identität für lokale SSAS-Liveverbindungen festzulegen. Der Gatewayadministrator kann Benutzern nun dedizierte Berechtigungen für bestimmte Datenquellen zuweisen, wodurch der Benutzer die effektive Identität beim Generieren des Einbettungstoken überschreiben kann.Until now, to be able to specify the effective identity for SSAS on-premises live connection, the master user generating the embed token had to be a gateway admin. Now, instead of requiring the user to be gateway admin, the gateway admin can give the user dedicated permission to that data source, that allows the user to override the effective identity when generating the embed token. Dieses neue Feature ermöglicht das Einbetten mit einem Dienstprinzipal für SSAS-Liveverbindungen.This new ability enables embedding with service principal for a live SSAS connection.

Der Gatewayadministrator verwendet die REST-API „Add Datasource User“ (Datenquellenbenutzer hinzufügen), um dem Dienstprinzipal die Berechtigung ReadOverrideEffectiveIdentity für Power BI Embedded zu gewähren.To enable this scenario, the gateway admin uses the Add Datasource User REST API to give the service principal the ReadOverrideEffectiveIdentity permission for Power BI Embedded.

Sie können diese Berechtigung nicht über das Verwaltungsportal festlegen.You can't set this permission using the admin portal. Diese Berechtigung kann nur mit der API festgelegt werden.This permission is only set with the API. Im Verwaltungsportal werden Benutzer und Dienstprinzipalnamen mit diesen Berechtigungen gekennzeichnet.In the admin portal, you see an indication for users and SPNs with such permissions.

Überlegungen und EinschränkungenConsiderations and limitations

  • Die Zuweisung von Benutzern zu Rollen im Power BI-Dienst wirkt sich bei Verwendung eines Einbettungstokens nicht auf RLS aus.Assignment of users to roles within the Power BI service doesn't affect RLS when using an embed token.
  • Der Power BI-Dienst wendet die RLS-Einstellung nicht auf Administratoren oder Mitglieder mit Bearbeitungsberechtigungen an, wenn Sie eine Identität mit einem Einbettungstoken bereitstellen. Stattdessen wird die Einstellung auf die Daten angewendet.While the Power BI service doesn't apply RLS setting to admins or members with edit permissions, when you supply an identity with an embed token, it applies to the data.
  • Liveverbindungen von Analysis Services werden für lokale Server unterstützt.Analysis Services live connections are supported for on-premises servers.
  • Azure Analysis Services-Liveverbindungen unterstützen Filtern nach Rollen.Azure Analysis Services live connections support filtering by roles. Die dynamische Filterung kann mit „CustomData“ ausgeführt werden.Dynamic filtering can be done using CustomData.
  • Wenn das zugrunde liegende Dataset kein RLS erfordert, darf die GenerateToken-Anforderung keine effektive Identität enthalten.If the underlying dataset doesn’t require RLS, the GenerateToken request must not contain an effective identity.
  • Wenn das zugrunde liegende Dataset ein Cloudmodell ist (Cachemodell oder DirectQuery), muss die effektive Identität mindestens eine Rolle enthalten. Andernfalls erfolgt keine Rollenzuweisung.If the underlying dataset is a cloud model (cached model or DirectQuery), the effective identity must include at least one role, otherwise role assignment doesn't occur.
  • Mit einer Identitätenliste werden mehrere Identitätstoken für die Dashboardeinbettung aktiviert.A list of identities enables multiple identity tokens for dashboard embedding. Bei allen anderen Artefakten enthält die Liste eine einzelne Identität.For all others artifacts, the list contains a single identity.

Einschränkungen der tokenbasierten Identität (Vorschau)Token-based Identity limitations (Preview)

  • Diese Funktion beschränkt die Verwendung nur für Power BI Premium.This capability restricts use with Power BI Premium only.
  • Diese Funktion funktioniert nicht mit einer lokalen SQL Server-Instanz.This capability doesn’t work with SQL Server on-premises.
  • Diese Funktion funktioniert nicht mit Multi-Geo.This capability doesn't work with multi-geo.

Weitere Fragen?More questions? Stellen Sie Ihre Frage in der Power BI-Community.Try asking the Power BI Community