Row-Level Security (RLS) is een Power BI-functie waarmee je datafilters definieert per gebruikersrol. Je maakt rollen aan in Power BI Desktop met DAX-filters en wijst gebruikers toe aan die rollen in Power BI Service. Elke gebruiker ziet dan alleen de rijen die bij zijn of haar rol horen.
Wat is Row-Level Security?
Row-Level Security (RLS) is een ingebouwde functie van Power BI waarmee je bepaalt welke rijen in een dataset een gebruiker te zien krijgt. De filter wordt toegepast op het datamodel zelf — vóórdat de data naar het rapport wordt gestuurd.
Concreet: als je één omzetrapport deelt met 20 klanten, ziet klant A alleen de eigen omzetcijfers en klant B alleen de zijne. Dezelfde rapportlay-out, maar gefilterde data.
Waarom is RLS belangrijk bij extern delen?
Zonder RLS ziet elke gebruiker dezelfde dataset. Bij intern gebruik is dat soms acceptabel, maar bij extern delen levert het direct problemen op:
- Privacy: Klant A kan de gegevens van klant B zien — een datalek onder de AVG
- Vertrouwelijkheid: Concurrentie-informatie kan zichtbaar zijn voor de verkeerde partij
- Compliance: Toezichthouders verwachten dat je kunt aantonen dat toegang is beperkt tot noodzakelijke data
Statische RLS: stap voor stap
Statische RLS gebruikt vaste filterwaarden per rol. Geschikt als je een beperkt aantal partijen bedient.
Stap 1: Rollen definiëren in Power BI Desktop
- Open je rapport in Power BI Desktop
- Ga naar Modeling → Manage Roles
- Klik op New en geef de rol een naam (bijv. “Klant_Acme”)
- Selecteer de tabel waarop je wilt filteren
- Voer een DAX-expressie in, bijvoorbeeld:
[Klantnaam] = "Acme B.V."
- Klik op Save
Stap 2: Testen in Desktop
- Ga naar Modeling → View as Roles
- Selecteer de rol “Klant_Acme”
- Controleer of je alleen data van Acme B.V. ziet
Stap 3: Publiceren en rollen toewijzen
- Publiceer het rapport naar Power BI Service
- Ga naar de dataset → Security
- Selecteer de rol en voeg de gebruiker (e-mailadres) toe
Dynamische RLS: schaalbaar voor veel klanten
Bij tientallen of honderden externe partijen is het niet praktisch om per klant een aparte rol aan te maken. Dynamische RLS lost dit op met een mappingtabel.
Stap 1: Mappingtabel aanmaken
Maak een tabel met twee kolommen: het e-mailadres van de gebruiker en de klantnaam waartoe ze toegang hebben.
| UserEmail | Klantnaam |
|---|---|
| jan@acme.nl | Acme B.V. |
| piet@beta.nl | Beta Corp |
| jan@acme.nl | Gamma Inc |
Een gebruiker kan in meerdere rijen voorkomen als hij of zij toegang moet hebben tot meerdere klanten.
Stap 2: Relatie leggen
Maak in het datamodel een relatie tussen de mappingtabel en de feitentabel op het veld Klantnaam.
Stap 3: DAX-filter met USERPRINCIPALNAME()
Maak één RLS-rol met de volgende DAX-expressie op de mappingtabel:
[UserEmail] = USERPRINCIPALNAME()
USERPRINCIPALNAME() retourneert het e-mailadres van de ingelogde gebruiker. Power BI filtert automatisch de mappingtabel op dat adres, en via de relatie wordt de feitentabel mee gefilterd.
Stap 4: Eén rol voor alle gebruikers
Je hoeft nu slechts één rol te beheren. Nieuwe klanten voegt je toe door een rij aan de mappingtabel toe te voegen — geen nieuwe rol nodig.
RLS en Shareboard BI
Shareboard BI is volledig compatibel met RLS. Wanneer je een rapport toewijst aan een externe gebruiker, geef je de RLS-rol mee. Shareboard BI gebruikt die rol bij het genereren van het embed-token, waardoor de gebruiker alleen de data ziet die bij zijn of haar rol hoort.
Het voordeel ten opzichte van directe Power BI-sharing: je hoeft de externe gebruiker niet toe te voegen aan Power BI Service of Azure AD. De RLS-filtering werkt via de Shareboard BI-laag zonder dat de gebruiker een Microsoft-account nodig heeft.
Best practices
- Test altijd met de “View as Role”-functie voordat je het rapport deelt
- Gebruik dynamische RLS als je meer dan 5 externe partijen bedient
- Filter op de laagste tabel in je datamodel — de filters propageren automatisch naar gerelateerde tabellen
- Combineer RLS met Shareboard BI-werkruimtes — werkruimtes bieden extra scheiding, RLS filtert de data binnen het rapport
- Documenteer je RLS-rollen — leg vast welke rol bij welke klant hoort, zodat collega’s het kunnen beheren
Meer weten over veilig delen? Lees ons artikel over AVG-proof rapporten delen of neem contact op voor advies op maat.
Veelgestelde vragen
Werkt RLS ook met Shareboard BI?
Ja. Shareboard BI respecteert de RLS-rollen die je in Power BI heeft geconfigureerd. Bij het toewijzen van een rapport aan een externe gebruiker koppelt je de juiste RLS-rol. De gebruiker ziet dan uitsluitend de data die bij die rol hoort.
Kan een gebruiker zijn eigen RLS-filter omzeilen?
Nee. RLS wordt server-side afgedwongen door de Power BI Analysis Services-engine. De filter wordt toegepast voordat de data naar de client wordt gestuurd. Een gebruiker kan de filter niet omzeilen via de browser of API.
Hoeveel RLS-rollen kan ik aanmaken?
Er is geen hard maximum. In de praktijk maken organisaties tientallen tot honderden rollen aan, vaak één per klant of afdeling. Voor grote aantallen is het efficiënter om dynamische RLS te gebruiken met een mappingtabel.
Wat is het verschil tussen statische en dynamische RLS?
Bij statische RLS definieert je een vaste filterwaarde per rol (bijv. Regio = 'Noord'). Bij dynamische RLS gebruikt je de DAX-functie USERPRINCIPALNAME() om de filter automatisch te koppelen aan de ingelogde gebruiker via een mappingtabel. Dynamische RLS schaalt beter bij veel gebruikers.
Kan ik RLS testen voordat ik het rapport deel?
Ja. In Power BI Desktop kun je via 'Modeling' → 'View as Roles' een rol selecteren en het rapport bekijken alsof je die gebruiker bent. In Power BI Service kun je via 'Security' → 'Test as role' hetzelfde doen.