16

jun 22

Velden verbergen in Power BI voor een deel van de gebruikers

Velden verbergen in Power BI voor een deel van de gebruikers

Hoe verberg je velden in Power BI voor een deel van de gebruikers?

Hoe voorkom je in Power BI dat vertrouwelijke of privacygevoelige informatie getoond wordt aan gebruikers die er, bijvoorbeeld als gevolg van GDPR (AVG) wetgeving, geen toegang toe mogen hebben? Hoe werkt het als je een enkel rapport met een groep gebruikers wil delen, waarbij niet iedereen alle gegevens mag zien? Dit zijn vragen die veel worden gesteld door onze deelnemers aan onze Power BI trainingen.

Dankzij de nieuwe optie “Field Parameters” is er een nieuwe en makkelijkere oplossing als antwoord op bovenstaande vragen. Power BI trainer Jeroen legt uit dit voorheen werkte en hoe je de nieuwe optie Field Parameters gebruikt.

De basis: rollen en beveiliging in Power BI

We beginnen met de basis. In Power BI wordt de beveiliging van een rapport bepaald door rollen. Die rollen worden opgeslagen op dataset niveau. De rollen werken dus door naar alle rapporten en dashboards die aan die dataset gekoppeld worden.

Ook als je met Excel of andere Externe tools verbinding maakt met de dataset wordt die rolbeveiliging afgedwongen. De rollen maak je aan in Power BI desktop.

Aan die rollen kun je twee soorten beveiliging koppelen:

  1. Row-Level Security
  2. Object-Level Security

Na publicatie van je rapport koppel je in de Power BI service de rollen aan de gebruikers(groepen).

Bepaal welke rijen data een gebruiker mag zien met Row-Level Security (RLS)

Via RLS (Row-Level Security) bepaal je welke rijen data een gebruiker mag zien. Wanneer je bijvoorbeeld wil bepalen welke klanten een werknemer mag zien, maak je een rol aan met een filter op de klantentabel. In het voorbeeld hieronder is een rol aangemaakt voor gebruikers die: alleen gegevens mogen zien van klanten uit België.

row level security in power bi

Als een gebruiker met deze rol het rapport bekijkt wordt automatisch de ‘Customer’ tabel gefilterd. Rijen die niet aan de voorwaarden in de rol voldoen worden niet getoond aan de gebruiker. De tabel filtert via de relaties de rest van het model. Deze filtering volgt ook de kruisfilterrichting van de relaties.

RLS bepaald dus welke rijen (records) getoond worden. Maar om kolommen of tabellen te verbergen gebruik je Object-Level Security.

Object Level Security (OLS)

OLS (Object Level Security) is lastiger aan een rol te koppelen. Je kan OLS niet instellen met Power BI desktop of online. Je hebt er Tabular Editor (een gratis tool) voor nodig. Hoe dit werkt zie je in deze video.

Met OLS kun je kolommen of hele tabellen verbergen voor rollen. Een grote beperking bij OLS was dat deze optie eigenlijk alleen nuttig was op gedeelde datasets. Bij het delen van rapporten had je er weinig aan.

Voorbeeld

Je hebt een rapportpagina met daarop een tabel met klantgegevens.

power bi rapport pagina voorbeeld

Stel dat er op dit model 3 rollen moeten worden toegepast, namelijk:

  1. Beperkt: De hieraan gekoppelde gebruikers mogen het volgende niet zien: klantnaam, klant ID en adres
  2. Algemeen: Deze gebruikers mogen het volgende niet zien: klantnaam en adres, ze mogen klant ID wel zien
  3. Details: Deze gebruikers mogen alles zien.

Het aanmaken van de rollen

Eerst maak je via het ‘Modeling menu’ en de knop ‘Manage roles’ de rollen aan. Zie onderstaande printscreens. De rollen hebben hier een naam maar nog geen inhoud. Deze stel je in bij OLS.

manage roles

voorbeeld manage roles

Object Level instelling aanpassen:

  • In Tabular Editor selecteer je de rol ‘Beperkt’
  • In het menu links selecteer je ‘Security -> Table permissions’
  • Hier pas je de instelling van de tabel met de klantgegevens aan in ‘Read’

OLS instellen Read power bi

  • In het menu rechts klap je de rol nu open en selecteer je de tabel
  • Rechts kan je nu de ‘OLS column permissions’ instellen
  • Hier stel je de kolommen die voor die rol onzichtbaar moeten zijn in op ‘none’

ols

  • Hierna herhaal je deze stappen voor de ‘Algemeen’ rol en sla je de wijzigingen op.
  • De gebruikers met de ‘Details’ rol zien alles, daar hoef je dus niets aan te passen.

Het probleem bij het gebruiken van OLS

Object-Level security is nu ingevoerd. Je kan deze dataset delen en gebruikers kunnen alleen de kolommen zien waarvoor ze ook rechten hebben. Gebruikers die geen enkele rol hebben zien nu niets meer trouwens.

Het probleem ontstaat wanneer je ook het rapport wil delen met gebruikers. Hoe kan je dit zien? Test de rol in Power BI desktop uit via de ‘View as’ optie op het ‘modelling” menu. Zie onderstaande printscreen.

view as roles power bi

Nadat je op ‘ok’ klikt zie je dit:

foutmelding power bi

De visual geeft de melding ‘Something is wrong with one or more fields’. Dit is een heel logisch probleem. Een aantal van de in deze tabel gebruikte velden zijn niet meer zichtbaar. Ze bestaan eigenlijk voor deze gebruiker niet meer. De foutmelding is dus vergelijkbaar met het probleem dat zou ontstaan als je zomaar een kolom uit je model zou verwijderen.

Hoe los je dit op?

Om dit probleem op te lossen kun je nieuwe feature Field parameters gebruiken.

Hoe maak je een Field Parameter aan?

  • Maak eerst een Field Parameter tabel aan die alle klantgegevens bevat. Ga hiervoor naar Modelling -> New parameter -> Fields

field parameter

  • Hier geef je de nieuwe parameter tabel de naam “Klantgegevens” en voeg je alle velden van de ‘Customer’ tabel toe
  • De DAX code die voor deze parameters aangemaakt wordt is:

DAX code

  • In het dataview zie je dat er een tabel ontstaat met 3 kolommen. Je gaat hier een 4e kolom aan toevoegen. Deze kolom geeft aan welke rechten er bij de kolom horen
  • Dit kun je doen door in de DAX code per rij een extra argument toe te voegen:
    • Klantnaam, Adres en Postcode krijgt hier het getal 2.
    • Klant ID krijgt het getal 1
    • De rest krijgt het getal 0
  • Gebruik de Rename knop bij de kolom om de naam aan te passen in ‘Rechten’.

rename power bi

De parameter gebruiken

  • Nu kun je naar de oorspronkelijke tabel visual gaat
  • Hier haal je alle velden die direct uit de customer tabel komen uit
  • Je vervangt deze door het veld Klantgegevens uit de parameter tabel. Je kan een eventueel een filter toepassen voor velden die je niet wil tonen

parameter gebruiken

De tabel blijft er hetzelfde uitzien als het goed is.

Row Level security op de parameters:

Field parameter tabellen zijn gewone berekende tabellen. Je kunt er dus ook relaties aan koppelen (dat is hier niet nodig) en RLS (Row Level Security) op toepassen.

  • Ga naar de rollen waar al OLS op zit
  • Selecteer daar de rol Beperkt
  • Hier plaats je een filter op het veld ‘Rechten’ in de ‘Klantgegevens’ tabel

OLS en field parameter

  • Bij deze rol mogen gebruikers alleen de parameterwaarden zien met code 0
  • Bij de rol ‘Algemeen’ mogen gebruikers de parameterwaarden 0 en 1 zien. Het filter wordt daar dus.

filter

Ook hier is een filter bij de rol ‘Details’ niet nodig. Al moet deze rol natuurlijk wel bestaan voor de mensen die alles mogen zien.

Resultaat

Wanneer je de rollen nu test wordt de tabel op 3 manieren getoond afhankelijk van de rol van de gebruiker.

  1. Bij de rol ‘Beperkt’ zien gebruikers dit:

power bi beperkte gebruiker avg gdpr

Aangezien alle detail gegevens weg wordt de getoonde meting gegroepeerd op stad. Gebruikers kunnen hier dus wel zien hoe hoog de verkoop in Alkmaar is, maar niet over hoeveel of welke klanten dit gaat.

2. Gebruikers met de rol ‘Algemeen’ zien dit:

gebruiker algemeen

Voor deze gebruikers wordt de tabel wel gegroepeerd op Klant ID. Deze gebruikers zien dus bijvoorbeeld wel dat het hier in Alkmaar en Almere gaat om 1 klant, terwijl in Amsterdam twee klanten zijn. Maar ze zien niet de namen en adressen van die klanten.

Conclusie

Zoals eigenlijk alles bij Power BI is de complexiteit van deze oplossing afhankelijk van je datamodel. Maar dankzij de Field Parameters in combinatie met RLS (Row Level Security) kan je nu relatief eenvoudig velden verbergen voor groepen gebruikers.

Als je ook OLS (Object Level Security) toepast kun je zowel het rapport als de dataset veilig delen. Zonder dat gebruikers gegevens zien waar ze geen toestemming voor hebben.

Meer leren over Power BI?

Bekijk onze handige Power BI tips en videos of bekijk onze Power BI cursussen.