, ,

Statische Sicherheit bzw. Berechtigungen auf Zeilenebene (RLS) implementieren

Nicht jeder Benutzer oder Benutzerin eines Berichts in Power BI soll alle Daten des Berichts sehen können.

Nehmen wir einen Umsatzbericht eines Handelsunternehmens mit verschiedenen Abteilungen und Abteilungsleitungen. Die Geschäftsführung soll in der Regel sämtliche Umsätze sehen können. Die einzelnen Abteilungsleiter und Abteilungsleiterinnen sollen aber nur auf die Umsätze der eigenen Abteilung Zugriff haben. Sogar noch mehr: von den anderen Abteilungen sollen sie sozusagen gar nichts wissen, die entsprechenden Datensätze sollen für nicht berechtigte Benutzer einfach nicht vorhanden sein.

Für dieses Szenario gibt es in Power BI die sogenannte Sicherheit auf Zeilenebene. Auch im deutschsprachigen Raum ist jedoch das Kürzel RLS hierfür weit verbreitet, was Row Level Security bedeutet.

Im Folgenden verwende ich den Begriff RLS. Der Begriff Sicherheit meint in diesem Zusammenhang eigentlich „Berechtigung“ – man könnte also auch von Berechtigung auf Zeilenebene sprechen.

Statische- und dynamische RLS

Microsoft unterscheidet zwei Ansätze: die statische und die dynamische RLS.
Ganz kurz: die statische RLS basiert auf festen Regeln, die sich mit der Zeit nicht ändern. Die dynamische RLS basiert auf dynamischen Regeln und spielt ihre Vorteile dann aus, wenn sich Teammitglieder häufig ändern oder wenn es um große Teams geht. Dann spart man sich mit der dynamischen RLS einige Verwaltungsarbeit.

Oft liest man, die dynamische RLS ist aufgrund ihrer höheren Flexibilität der statischen RLS stets vorzuziehen. Das sehe ich aber nicht so: die statische RLS ist dann eine gute Wahl, wenn es um eine übersichtliche Anzahl von Benutzern des Berichts geht (sagen wir: kleiner 10) und nicht viel Veränderung zu erwarten ist. Wenn dann ein mal jedes Schaltjahr ein Abteilungsleiter in Rente geht und ein Nachfolger eingeführt wird, muss man die statische Regel halt anpassen.

Im Folgenden stelle ich die statische RLS vor.

Zwei Teile: Anpassung in Power BI Desktop und im Power BI Service nötig

Für die Implementierung von statischer RLS sind Arbeiten sowohl in Power BI Desktop als auch im Service vorzunehmen (in dieser Reihenfolge). Ich erkläre die beiden Schritte weiter unten im Beispiel.

Das Beispiel-Szanario

Um die Umsetzung der statischen RLS zu erklären, gebe ich ein sehr simples Beispiel:

Wir sind ein Handelsunternehmen für Elektronik-Artikel.
Es gibt drei Abteilungen: Fernseher, Kühlschränke und Staubsauger.
Nun gibt es einen Bericht über alle Umsätze im Unternehmen.
Die Geschäftsführung soll alle Umsätze sehen können, die Abteilungsleitung Fernseher soll nur auf die Umsätze bei Fernsehern berechtigt sein (und andere Umsätze überhaupt nicht sehen). Die Abteilungsleitung Kühlschränke soll nur die Umsätze bei Kühlschränken sehen und so weiter.

Anpassungen in Power BI Desktop

Zunächst richten wir die RLS in Power BI Desktop ein.
Nehmen wir an, wir haben eine einfache Lookup-Tabelle für die Abteilungen:

Die Lookup-Tabelle für die Abteilungen

Wir wollen nun insgesamt 4 Rollen einrichten:

  • Alles – alle Datensätze sind sichtbar
  • Fernseher – nur die Umsätze bei Fernsehern sind sichtbar
  • Kühlschränke – nur die Umsätze bei Kühlschränken sind sichtbar
  • Staubsauger – nur die Umsätze bei Staubsaugern sind sichtbar

Hierzu gehen wir in Power BI Desktop auf den Reiter „Modellierung“ und hier im Abschnitt „Sicherheit “ auf den Menüpunkt „Rollen verwalten“.

Es öffnet sich ein neues Fenster mit dem Titel „Rollen verwalten“.

Hier klicken wir nun auf „Erstellen“ um die erste Rolle anzulegen. Als erstes wollen wir die Rolle „Alles“ erstellen.
Der neuen Rolle geben wir den Namen „Alles“.
Im mittleren Teil des Fensters wählen wir aus, auf welche Rolle sich die RLS beziehen soll – nämlich auf die Abteilungen_Lookup.

Im dritten Bereich des Fensters können wir nun einen DAX-Ausdruck formulieren, der die einzelnen Zeilen der Tabelle Abteilungen_Lookup filtert. Dieser DAX-Ausdruck gibt einen booleschen Wert, also true oder false, für jede Zeile zurück.
Da wir hier die Rolle „Alles“ definieren, können wir hier als DAX-Ausdruck einfach „true“ eintragen und die Regel ist immer erfüllt.

Als nächstes definieren wir die Rolle „Fernseher“.
Wir erstellen eine neue Rolle mit den Namen „Fernseher“ und wählen bei den Tabellen wieder die Abteilungen_Lookup aus.
Spannend wird es jetzt hier beim DAX-Ausdruck: wir möchten, dass die Zeilen angezeigt werden, deren Abteilung Nr. 1 ist:

[Abteilung Nr.] = 1

Der DAX-Code, der bei Abteilung Nr. = 1 den Wert true liefert

Im obigen Code-Abschnitt gehe ich davon aus, dass Abteilung Nr. eine Ganzzahl ist. Wenn der Wert hier als Text gespeichert ist, muss ich = „1“ schreiben.

Nun lege ich auf die gleiche Weise noch die Rollen für die Kühlschränke und die Staubsauger an.

Die Rollen testen

Hier ist es nun ganz wichtig, die Rollen zu testen.
Hierzu gibt es im Reiter „Modellierung“ im Abschnitt Sicherheit den Menüpunkt „Anzeigen als“.
Hier kann ich mir nun in Power BI Desktop meinen Bericht „mit den Augen“ der einzelnen Rolle ansehen. Die Rolle „Fernseher“ sollte nun also nur noch Umsätze aus dem Bereich Fernseher sehen, die Rolle „Alles“ hingegen sollte alles sehen.

Im nächsten Schritt müssen nun die Rollen einzelnen konkreten Benutzern und Benutzerinnen des Berichts zugewiesen werden. Das erfolgt im Power BI Service.

Anpassungen in Power BI Service

Im Power BI Service gehen wir zunächst in den Arbeitsbereich, in dem wir unseren Bericht veröffentlicht haben.

Nehmen wir an, unser Bericht heißt „Umsatz“. Dann gehen wir zum Semantikmodell „Umsatz“ (früher hieß das Semantikmodell „Dataset“). Am Semantikmodell klicken wir auf das Drei-Punkte-Menü und wählen „Sicherheit“ aus.

Hier folgt nun der letzte Schritt:

Wir sehen im nun geöffneten Fenster „Sicherheit auf Zeilenebene“ unsere vier zuvor in Power BI Desktop angelegten Rollen.

Im rechten Bereich können wir den Rollen nun Mitglieder hinzufügen – wir geben also die E-Mail-Adressen der auf die jeweilige Rolle berechtigten Personen ein. Das könnte bei Fernseher zum Beispiel die E-Mail-Adresse der Abteilungsleitung sowie der Stellvertretung sein.

Bei der Rolle „Alles“ geben wir die E-Mail-Adressen der Geschäftsführung ein – das kann also eine oder auch mehrere E-Mail-Adressen sein.

Pro-Tipp: Azure-Sicherheitsgruppen verwenden

Hier kann nicht nur eine E-Mail-Adresse eingegeben werden, sondern auch eine zuvor im Azure Active Directory angelegte Sicherheitsgruppe. So könnte es z.B. eine Gruppe „Power BI alle Abteilungen“ geben, deren Mitglieder sämtliche Mitglieder der Geschäftsführung sind.

Abschließendes testen

Mit diesen Schritten sollten wir nun alles korrekt eingerichtet haben.
Es schadet nichts, an dieser Stelle zum Beispiel zum Abteilungsleiter Fernseher zu gehen und zu sagen: „hey, ich habe dir einen neuen Power BI – Bericht eingerichtet. Können wir kurz sicherstellen, dass du wirklich nur deine Abteilung siehst?“
Besonders bei personenbezogenen Daten ist ein mal zu viel kontrolliert besser, als ein mal zu wenig.

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert