Einrichten der Sicherheit auf Zeilenebene

Abgeschlossen

Datenmodellentwickler richten die Sicherheit auf Zeilenebene ein, indem sie eine oder mehrere Rollen erstellen. Eine Rolle hat einen eindeutigen Namen im Modell und umfasst normalerweise eine oder mehrere Regeln. Regeln erzwingen Filter auf Modelltabellen mithilfe von DAX-Filterausdrücken (Data Analysis Expressions).

Hinweis

Standardmäßig verfügt ein Datenmodell nicht über Rollen. Ein Datenmodell ohne Rollen bedeutet, dass Benutzer (die die Erlaubnis haben, das Datenmodell abzufragen) Zugriff auf alle Modelldaten haben.

Tipp

Sie können eine Rolle definieren, die keine Regeln enthält. In diesem Fall bietet die Rolle Zugriff auf alle Zeilen aller Modelltabellen. Diese Rolleneinrichtung eignet sich für eine*n Administratorbenutzer*in, der bzw. die alle Daten anzeigen darf.

Für in Microsoft Power BI Desktop entwickelte Modelle können Sie in Power BI Desktop entsprechende Rollen erstellen, überprüfen und verwalten. Für Microsoft Azure Analysis Services- oder SQL Server Analysis Services-Modelle können Sie Rollen mithilfe der SQL Server Data Tools (SSDT) erstellen, überprüfen und verwalten.

Darüber hinaus können Sie Rollen mithilfe von SQL Server Management Studio oder mithilfe eines externen Tools, z. B. Tabular Editor, erstellen und verwalten.

Anwenden von Sternschema-Entwurfsprinzipien

Der erste Schritt zu einer effektiven RLS-Lösung ist die Entwicklung eines gut durchdachten Modells. Hierfür wird die Anwendung der Sternschema-Entwurfsprinzipien empfohlen, um ein Modell mit Dimensions- und Faktentabellen zu erstellen. Es ist üblich, dass Power BI Regeln zum Filtern von Dimensionstabellen erzwingt und Modellbeziehungen diese Filter effizient auf Faktentabellen übertragen.

Die folgende Abbildung zeigt das Modelldiagramm für die Verkaufsanalyse von Tailspin Toys. Sie zeigt ein Sternschema mit einer einzelnen Faktentabelle für die Umsätze. Bei den anderen vier Tabellen handelt es sich um Dimensionstabellen, die die Analyse von Verkaufsmaßnahmen nach Datum, Bundesstaat, Region und Produkt unterstützen. Modellbeziehungen verbinden alle Tabellen. Diese Beziehungen verteilen Filter (direkt oder indirekt) auf die Tabelle mit den Umsätzen.

Screenshot: Power BI Desktop-Modelldiagramm, das die Tabellen und Beziehungen enthält.

Dieses Modelldesign unterstützt Beispiele, die in diesem Modul vorgestellt werden.

Definieren von Regeln

Regelausdrücke werden im Zeilenkontext ausgewertet. Zeilenkontext bedeutet, dass der Ausdruck für jede Zeile ausgewertet wird, indem die Spaltenwerte dieser Zeile verwendet werden. Wenn der Ausdruck TRUE liefert, kann der Benutzer die Zeile „sehen“.

Tipp

Weitere Informationen über den Zeilenkontext finden Sie im Modul Hinzufügen von berechneten Tabellen und Spalten zu Power BI Desktop-Modellen. Dieses Modul beschreibt das Hinzufügen von Modellberechnungen, enthält aber auch eine Lerneinheit, in der der Zeilenkontext vorgestellt und beschrieben wird.

Sie können Regeln definieren, die entweder statisch oder dynamisch sind.

Statische Regeln

Statische Regeln verwenden DAX-Ausdrücke, die sich auf Konstanten beziehen.

Betrachten Sie die folgende Regel, die auf die Tabelle Region angewendet wird und den Zugriff auf die Daten der Umsätze in Neuengland einschränkt:

'Region'[Region] = "New England"

Die folgenden Schritte erläutern den Power BI-Prozess zum Erzwingen der Regel.

  1. Filtern Sie die Tabelle Region, wodurch eine sichtbare Zeile (für Neuengland) ausgegeben wird.

  2. Verwenden Sie die Modellbeziehung, um den Tabellenfilter Region auf die Tabelle für den Bundesstaat zu übertragen, was zu sechs sichtbaren Zeilen führt (die Region „Neuengland“ besteht aus sechs Bundesstaaten).

  3. Verwenden Sie die Modellbeziehung, um den Filter der Tabelle für den Bundesstaat auf die Tabelle für die Umsätze zu übertragen. Das Ergebnis sind Tausende von sichtbaren Zeilen (die Umsatzdaten für die Bundesstaaten, die zur Region „Neuengland“ gehören).

Die einfachste statische Regel, die Sie erstellen können, schränkt den Zugriff auf alle Tabellenzeilen ein. Betrachten Sie die folgende Regel, die auf die Tabelle mit den Umsatzdetails angewendet wird (nicht im Modelldiagramm dargestellt):

FALSE()

Diese Regel stellt sicher, dass Benutzer*innen keinen Zugriff auf die Tabellendaten haben. Die Regel könnte nützlich sein, wenn Vertriebsmitarbeiter*innen zwar aggregierte Verkaufsergebnisse (aus der Tabelle der Umsätze), aber keine Details auf Bestellebene anzeigen dürfen.

Die Definition von statischen Regeln ist einfach und effektiv. Ziehen Sie in Erwägung, statische Regeln zu verwenden, wenn Sie nur wenige davon erstellen müssen, z. B. für Tailspin Toys, wo es nur sechs Regionen gibt. Beachten Sie jedoch einige Nachteile: Das Festlegen statischer Regeln kann mit erheblichem Aufwand verbunden sein, um sie zu erstellen und einzurichten. Statische Regeln erfordern auch, dass Sie das Datenset aktualisieren und neu veröffentlichen, wenn neue Regionen eingeführt werden.

Wenn Sie viele Regeln festlegen müssen und davon ausgehen, dass in Zukunft neue Regeln hinzukommen werden, sollten Sie stattdessen dynamische Regeln verwenden.

Dynamische Regeln

Dynamische Regeln verwenden spezielle DAX-Funktionen, die Umgebungswerte zurückgeben (im Gegensatz zu Konstanten). Umgebungswerte werden von den folgenden speziellen DAX-Funktionen zurückgegeben:

  • USERNAME oder USERPRINCIPALNAME: Sofern Sie das Szenario Für Ihre Organisation verwenden, geben diese Funktionen einen Textwert zurück, der den authentifizierten Benutzer beschreibt. Sofern Sie das Szenario Für Ihre Kunden verwenden, geben sie einen Textwert zurück, den Ihre App übergibt.

  • CUSTOMDATA: Mithilfe des Szenarios Für Ihre Organisation gibt diese Funktion die in der Zeichenfolge übergebene Eigenschaft CustomData zurück. Sofern Sie das Szenario Für Ihre Kunden verwenden, wird ein Textwert zurückgegeben, den Ihre App übergibt.

Hinweis

Die Funktion USERNAME gibt den Benutzer im Format DOMAIN\username zurück, wenn Sie sie in Power BI Desktop verwenden. Wenn sie jedoch im Power BI-Dienst verwendet wird, gibt sie das Format des Benutzerprinzipalnamens (UPN) zurück, etwa username@tailspintoys.com. Alternativ können Sie auch die Funktion USERPRINCIPALNAME verwenden, die den Benutzer immer im UPN-Format zurückgibt.

Erwägen Sie einen überarbeiteten Modellentwurf, der jetzt die (ausgeblendete) Tabelle AppUser enthält. Jede Zeile der Tabelle AppUser beschreibt einen Benutzernamen und eine Region. Eine Modellbeziehung zur Tabelle Region überträgt Filter aus der Tabelle AppUser.

Screenshot eines überarbeiteten Modelldiagramms, das jetzt die Tabelle „AppUser“ enthält. Diese Tabelle enthält zwei Spalten für Region und Benutzername.

Die folgende Regel, die auf die Tabelle AppUser angewendet wird, beschränkt den Datenzugriff auf die Region(en) des authentifizierten Benutzers:

'AppUser'[UserName] = USERPRINCIPALNAME()

Die Definition von dynamischen Regeln ist einfach und effektiv, wenn eine Modelltabelle Werte von Benutzernamen speichert. Dynamische Regeln ermöglichen Ihnen die Durchsetzung eines datengesteuerten RLS-Entwurfs. Wenn z. B. Vertriebsmitarbeiter*innen zur Tabelle AppUser hinzugefügt oder aus dieser entfernt werden (oder verschiedenen Regionen zugewiesen werden), funktioniert dieser Entwurfsansatz.

Wichtig

Wenn Sie das Szenario Für Ihre Kunden verwenden, müssen die Funktionen USERNAME und USERPRINCIPALNAME keinen tatsächlichen Benutzernamen zurückgeben. Stattdessen kann Ihre App einen beliebigen Textwert zum Filtern des Modells übergeben.

Überprüfen von Rollen

Wenn Sie Rollen erstellen, testen Sie sie, um sicherzustellen, dass sie die richtigen Filter anwenden. Für Datenmodelle, die in Power BI Desktop erstellt wurden, gibt es die Funktion Anzeigen als, mit der Sie den Bericht anzeigen können, wenn verschiedene Rollen erzwungen und verschiedene Werte für den Benutzernamen übergeben werden.

Screenshot: Power BI Desktop-Menüband „Modellierung“. Der Befehl „Anzeigen als“ ist hervorgehoben.

Einrichten von Rollenzuordnungen

Die Rollenzuordnung erfolgt je nach Einbettungsszenario unterschiedlich.

Wenn Sie das Szenario Für Ihre Organisation verwenden, müssen Sie die Rollenzuordnungen festlegen, bevor Benutzer*innen auf Power BI-Inhalte zugreifen können. Die Rollenzuordnung umfasst die Zuweisung von Microsoft Azure Active Directory-Sicherheitsobjekten zu Rollen. Sicherheitsobjekte können Benutzerkonten oder Sicherheitsgruppen sein.

Tipp

Wenn möglich, empfiehlt es sich, Rollen zu Sicherheitsgruppen zuzuordnen. Auf diese Weise gibt es weniger Zuordnungen, und Sie können die Verwaltung der Gruppenmitgliedschaft an die Netzwerkadministrator*innen delegieren.

Bei Modellen, die mit Power BI Desktop entwickelt wurden, wird die Rollenzuordnung normalerweise im Power BI-Dienst vorgenommen. Bei Azure Analysis Services- oder SQL Server Analysis Services-Modellen erfolgt die Rollenzuordnung in der Regel in SQL Server Management Studio (SSMS).

Wenn Sie das Szenario Für Ihre Kunden verwenden, wird die Rollenzuordnung von der App zur Laufzeit vorgenommen. Ihre App-Logik legt eine oder mehrere effektive Identitäten fest, um die Sicherheit auf Zeilenebene zu erzwingen. Das Festlegen effektiver Identitäten wird weiter unten in diesem Modul beschrieben.

Weitere Informationen zur Einrichtung der Sicherheit auf Zeilenebene finden Sie in den folgenden Artikeln: