Row-Level Security filtert data in een Power BI-rapport op basis van de ingelogde gebruiker, door in Power BI Desktop een rol aan te maken met een DAX-filterexpressie op de klantidentifier en die rol vervolgens te koppelen aan elke externe gebruiker in de Power BI Service of in je deelplatform. Zo zien alle klanten hetzelfde rapport, maar elk uitsluitend zijn eigen data.
Waarom filteren per klant essentieel is
Zodra je één rapport wilt gebruiken voor meerdere klanten, is filtering geen optionele verfijning maar een harde vereiste. Zonder Row-Level Security ziet elke gebruiker met toegang tot het rapport alle onderliggende data, inclusief die van andere klanten. Dat is in bijna elke sector onacceptabel, en in gereguleerde sectoren zoals financiën of zorg ronduit onwenselijk.
Het goede nieuws: Row-Level Security lost dit structureel op, zodat je niet voor elke klant een apart rapport hoeft te bouwen en onderhouden.
Statische versus dynamische RLS
Er zijn twee manieren om RLS in te richten. Bij statische RLS maak je voor elke klant een aparte rol met een vaste filterwaarde, bijvoorbeeld een rol genaamd “Bakkerij Jansen” met het filter Klant[Naam] = "Bakkerij Jansen". Dit werkt prima bij een klein aantal klanten, maar wordt onbeheersbaar zodra je er dertig of vijftig hebt.
Bij dynamische RLS gebruik je één rol met een DAX-formule die automatisch filtert op basis van de ingelogde gebruiker, bijvoorbeeld:
[KlantEmail] = USERPRINCIPALNAME()
Dit vereist een tabel waarin klant-ID’s gekoppeld zijn aan e-mailadressen, maar levert daarna één rol op die voor alle klanten werkt. Nieuwe klanten toevoegen betekent dan alleen een regel toevoegen aan die koppeltabel, niet een nieuwe rol aanmaken.
Stap voor stap: dynamische RLS inrichten
- Maak een koppeltabel met klant-ID, klantnaam en het e-mailadres van de gebruiker die toegang krijgt.
- Leg de relatie tussen deze koppeltabel en je feitentabellen, zodat de filtering doorwerkt naar alle relevante data.
- Maak één rol aan in Power BI Desktop onder Modelleren → Beheer rollen, met de DAX-filterexpressie op basis van
USERPRINCIPALNAME(). - Test met ‘View as role’ om te controleren of elke klant enkel zijn eigen data ziet.
- Publiceer het rapport en koppel elke externe gebruiker aan de rol in de Power BI Service of je deelplatform.
RLS testen voordat je live gaat
Een verkeerd geconfigureerde RLS-regel is niet altijd direct zichtbaar. Test daarom altijd met een los testaccount dat gekoppeld is aan een specifieke klantrol, en controleer dat:
- De juiste data wordt getoond, niet meer en niet minder
- De filtering ook standhoudt na een update van het rapport of het datamodel
- Er geen vergeten koppeling is waarbij een nieuwe klant per ongeluk alle data ziet
Bekijk de bredere Power BI-beveiligingschecklist voor een volledig overzicht van beveiligingscontroles rondom extern delen.
RLS in combinatie met een klantportaal
Row-Level Security regelt de datafiltering, maar niet de toegang zelf. Klanten hebben nog steeds een omgeving nodig waarin ze veilig kunnen inloggen zonder een Microsoft-account, en waarin de RLS-rol automatisch gekoppeld wordt aan hun gebruikersaccount.
In Shareboard BI koppel je bij het toevoegen van een gebruiker direct de bijbehorende RLS-rol aan zijn account. De klant logt in, en op basis van die koppeling toont het rapport automatisch alleen zijn eigen data, zonder dat hij ooit een instelling hoeft aan te passen. Voor bureaus die één rapporttemplate voor tientallen klanten willen gebruiken, is dit de combinatie die schaalbaarheid en beveiliging samenbrengt.
Veelgestelde vragen
Wat is het verschil tussen statische en dynamische Row-Level Security?
Bij statische RLS maak je voor elke klant een aparte rol met een vaste filterwaarde, bijvoorbeeld 'klantnaam = Bakkerij Jansen'. Bij dynamische RLS gebruik je één rol met een DAX-formule die automatisch filtert op basis van het e-mailadres van de ingelogde gebruiker. Dynamische RLS is schaalbaarder zodra je meer dan een handvol klanten bedient.
Hoe test ik of mijn RLS-configuratie goed werkt?
Gebruik de functie 'View as role' in Power BI Desktop om te controleren of de juiste data wordt getoond voor een specifieke rol. Test ook in de Power BI Service zelf met een testaccount dat is gekoppeld aan een klantrol, om zeker te weten dat de filtering ook na publicatie correct werkt.
Kan RLS ook meerdere klantidentifiers tegelijk filteren, bijvoorbeeld klant én vestiging?
Ja. Je kunt een DAX-filterexpressie combineren op meerdere kolommen, bijvoorbeeld eerst filteren op klant-ID en vervolgens op vestigingscode. Dit is met name relevant voor klanten met meerdere vestigingen waarbij ook binnen de klantorganisatie een scheiding nodig is.
Wat gebeurt er als ik vergeet een nieuwe klant aan een RLS-rol te koppelen?
Zonder koppeling aan een rol ziet een gebruiker in de meeste configuraties geen data, of in het slechtste geval alle data als er geen rol is toegepast. Controleer daarom bij elke nieuwe klant expliciet of de rolkoppeling is uitgevoerd, en test dit voor je de uitnodiging verstuurt.