Dass Zugriffsberechtigungen in Power BI via Row Level Security (RLS) möglich sind und was dabei zu beachten ist, habe ich in meinem letzten Beitrag beschrieben. Solltest Du diesen Beitrag noch nicht gelesen haben, dann tue dies bitte jetzt, denn er liefert das Fundament für den vorliegenden Beitrag. Nach all diesen theoretischen Betrachtungen geht es im aktuellen Beitrag an die Umsetzung von RLS in Deiner Power BI-Lösung. Ich zeige Dir wie Du mit statischer Row Level Security in Power BI den Zugriff auf Deine Daten schützt. Viel Spaß 🙂
Als Abonnent meines Newsletters erhältst Du die Beispieldateien zu den Beiträgen dazu. Hier geht’s zum Abonnement des Newsletters!
RLS ist nicht für jedes Szenario anwendbar. Dies hat mein vorangegangener Beitrag gezeigt. Sollte RLS für Dich jedoch in Frage kommen, kannst Du zwischen statischer und dynamischer RLS wählen. Der aktuelle Beitrag zeigt Dir, wie Du statische RLS für Dich umsetzen kannst.
So funktioniert «statische Row Level Security»
Um Row Level Security zeigen zu können, benötige ich ein Datenmodell. Meines ist für den Demo-Zweck sehr einfach gehalten.
Datenmodell und Report
Für den Demo-Zweck habe ich ein sehr einfaches Datenmodell erstellt. Es besteht aus zwei Tabellen:
- Tabelle Kosten: Diese enthält die Kosten je Bereich.
- Tabelle Organisationsstruktur: Diese enthält die Organisationsstuktur, bestehend aus dem Unternehmen selbst (U01) und den beiden Bereichen B01 und B02
Basierend auf diesem Modell, erstelle ich folgende Visualisierung, die die Kosten entlang der Organisationsstruktur darstellt:
Das Ziel ist es, den Leiter des Bereiches B01, auch nur dessen Daten sehen zu lassen und die gleiche Logik auch auf Bereich B02 anzuwenden. Der Geschäftsführer des Unternehmens soll jedoch alles sehen dürfen. Um dies zu bewerkstelligen, definiere ich sog. Rollen in Power BI Desktop. Das schauen wir uns jetzt an.
Definieren von Rollen in Power BI Desktop
Um Rollen in Power BI Desktop zu definieren, gehe auf den Reiter Modellierung und klicke auf die Schaltfläche Rollen verwalten.
Es öffnet sich ein Dialogfenster, in welchem die Rollen erstellt, benannt und definiert werden können. Hierfür gehe ich wie folgt vor:
- Erstelle eine neue Rolle
- Gib dieser Rolle einen sprechenden Namen
- Mit einem Rechtsklick auf die entsprechende Tabelle (in meinem Fall Organisationsstruktur) öffnet sich das Kontextmenü zum Erzeugen eines Filters. Dieser Filter wird auf Basis einer Spalte der ausgewählten Tabelle erzeugt. Diese Spalte wählst Du hier zunächst aus, bevor wir im nächsten Schritt den Filter als wahrheitswertigen Ausdruck mittels DAX definieren.
Der definierte DAX-Ausdruck [Bereich] = "B01"
definiert die Rolle Bereich01 derart, dass bei derjenigen Person, die sich im Power BI Service anmeldet und dieser Rolle zugeordnet wurde, automatisch folgendes Filterszenario abspielt (siehe Abbildung):
- Im Datenmodell wird ein Filter auf die Spalte Organisationsstruktur[Bereich] = „B01“ gesetzt.
- Über die Beziehung zwischen den Tabellen Organisationsstruktur und Kosten fließt der Filter des Bereiches B01 in die Tabelle Kosten, deren Datensätze automatisch auf jene eingeschränkt werden, die zum Bereich B01 gehören.
Auf diese Weise kann ein Nutzer mit der Rolle Bereich01, nur Werte aus dem Bereich B01 sehen. Die Auswirkung der entsprechenden Rolle läßt sich in Power BI Desktop testen. Ich zeige Dir wie das funktioniert.
Testen der Rollen in Power BI Desktop
Wie bereits beschrieben, greift Row Level Security erst im Power BI Service. Sofern ich eine Power BI Desktop-Datei verteile und ein Kollege öffnet diese, wird er/ sie immer alle Daten sehen können. In Power BI Desktop wird RLS zwar definiert, aber sie hat hier keine datenschützende Funktion. Diese gibt es erst im Power BI Service. Ich werde nicht müde zu erwähnen, dass Power BI Desktop eine Entwicklungsumgebung ist und kein Reporting-Tool 😉 Dennoch kann man in Power BI Desktop simulieren, man wäre mit der entsprechenden Rolle im Power BI Service angemeldet. So kann ich sehen, wie sich die Rolle auswirkt. Hierfür gibt es die Schaltfläche Modellierung → Als Rollen anzeigen.
Die Testergebnisse der Rollen (ich habe mittlerweile die Rollen Bereich01, Bereich02 und Geschaeftsfuehrung definiert) sehen wie folgt aus:
Die Vorgehensweise im Power BI Service (powerbi.com)
Damit die in Power BI Desktop definierte Row Level Security im Power BI Service zum Tragen kommt, muss ich den entsprechend definierten Rollen diejenigen Mitarbeiter meines Unternehmens zuordnen, die diese Daten sehen können sollen. Ist ein Mitarbeiter keiner Rolle zugeordnet, sieht er/ sie auch keine Daten.
Zuordnen von Nutzern zu Rollen im Power BI Service
Row Level Security ist eine Eigenschaft des Datasets (1). Deshalb befindet sich die Möglichkeit, Mitarbeiter Rollen zuzuordnen im Bereich der Datasets, unter dem Punkt Sicherheit (3).
Nachdem ich den Punkt Sicherheit ausgewählt habe, gelange ich in den Bereich, in welchem ich den erstellten Rollen die entsprechenden Mitarbeiter zuordnen kann.
Ich aktiviere die gewünschte Rolle und gebe im Bereich Mitglieder manuell diejenigen Kollegen mit ihren E-Mailadressen ein, die Zugriff auf die Daten hinter den Rollen haben sollen. Mitarbeiter können mehreren Rollen gleichzeitig zugeordnet werden. Zu beachten ist hierbei, dass falls ein Mitarbeiter mehreren Rollen gleichzeitig zugeordnet ist, dieser Mitarbeiter dann immer Zugriff auf die Obermenge der zugewiesenen Rollen hat. Hat ein Mitarbeiter beispielsweise Berechtigung für die Rollen Bereich01 und Geschaeftsfuehrung, so hätte er automatisch die Berechtigung für das gesamte Unternehmen, weil Bereich01 eine Teilnehme der Rolle Geschaeftsfuehrung ist.
Nachdem der Rolle Bereich01 der Mitarbeiter Max Mustermann zugeordnet wurde, erhöht sich hinter der entsprechenden Rollenbezeichnung (in meinem Beispiel Bereich01) der Zähler. Mit einem Klick auf Speichern ist die erste Zuordnung eines Mitarbeiters zu einer Rolle definiert.
Die Auswirkungen dieser Definition lassen sich nun am besten prüfen, indem wir uns ansehen, was Mitarbeiter Max Mustermann sehen kann, wenn er sich im Power BI Service anmeldet und diesen mit ihm geteilten Report betrachtet.
Die Auswirkungen von RLS beim Report-Empfänger
Meldet sich Max Mustermann bei Powerbi.com mit seiner Firmen-E-Mailadresse an, dann erkennt der Power BI Service, welchen Rollen er zugeordnet wurde. Ich hatte ihm die Rolle des Bereich01 zugeordnet, folglich sieht der geteilte Report bei Max Mustermann wie folgt aus:
Die Zuweisung von Mitarbeitern zu Rollen lässt sich auf einfache Art und Weise anpassen. Ich, in meiner Rolle als Dataset-Besitzer, melde mich in meinem Account von powerbi.com (nicht Max Mustermann!!!) an und gehe wieder in die Sicherheitseinstellungen des Datasets. Um Max Mustermann wieder aus der Rolle Bereich01 zu entfernen, klicke ich neben Max Mustermann auf das x (1) und speichere (2) anschließend.
Diese Einstellung hat dann zur Folge, dass Max Mustermann innerhalb dieses Reports keine Daten mehr sieht, weil er nun keiner Rolle mehr zugeordnet ist.
So viel zum Thema statische RLS. Beim nächsten Mal zeige ich Dir, wie Du das Ganze dynamisch handhabst, falls Du viele unterschiedliche Rollen und viele Mitarbeiter zu bewältigen hast.
Bis zum nächsten Mal und denk dran: Sharing is caring. Wenn Dir der Beitrag gefallen hat, dann teile ihn gerne. Falls Du Anmerkungen hast, schreibe gerne einen Kommentar, oder schicke mir eine Mail an lars@ssbi-blog.de
Viele Grüße aus Hamburg,
Lars
Ich schreibe meine Beiträge für Dich, den Leser. Bitte schenke mir eine Minute Deiner Zeit und bewerte die folgenden Kategorien, um mir zu helfen meine Beiträge so gut wie möglich zu schreiben. Danke 🙂
Lars ist Berater, Entwickler und Trainer für Microsoft Power BI. Er ist zertifizierter Power BI-Experte und Microsoft Trainer. Für sein Engagement in der internationalen Community wurde Lars seit 2017 jährlich durch Microsoft der MVP-Award verliehen. Lies hier mehr…
Neueste Kommentare