Embedded report met RLS in Power BI.
Hoe geef je een klant toegang in een rapport tot zijn of haar eigen data, inclusief beveiligde toegang?
Wat heb je nodig (ingrediënten)?
- Power BI Werkruimte op Power BI Service
- Power BI Rapport
- Service Principal Role (Azure AD)
- Website pagina
Je hebt een rapport gemaakt en je wilt dit beveiligd delen met klanten. Een business case is bijvoorbeeld dat je klanten via hun mijn-omgeving op de website inzicht wilt geven in een aantal operationele gegevens. Een recruiter laat bijvoorbeeld het aantal werkenden per locatie zien aan klanten, een leverancier de bestelde producten met factuurregels aan een klant.
Het kritieke punt is natuurlijk dat je een databron (met rapport) hebt waarin alle klanten staan en je beveiligd toegang wilt geven tot een klant met alleen zijn eigen data.
Dit pak je als volgt aan:
1. Je hebt een rapport gemaakt, met daarin een dataset. Als de dataset los staat van het rapport, zorg je ervoor dat ze in dezelfde werkruimte staan.
2. In het rapport maak je een rol aan voor klanten, ervan uitgaande dat je een tabel hebt waarin je het emailadres (of een ander veld waarmee ze inloggen) van klanten hebt. De rol maak je aan in Power BI Desktop, met de volgende DAX expressie: [EmailadresKlant] = [USERNAME]
- Als je ook nog intern toegang wilt geven, maak je daar een andere rol voor aan, met Emailadres = [USERNAME]
3. Als je het rapport gepubliceerd hebt, staat het in een werkruimte. Op die werkruimte heb je een Service Principal Rol nodig. Die maak je als volgt aan, in deze video wordt het stap voor stap uitgelegd. Je moet hiervoor een app registreren op de Azure Ad Portal. Hiervoor heb je wellicht admin rechten nodig op portal.azure.com. Raadpleeg je admin indien nodig.
Power BI Service Principals 101
- De Service Principal voeg je via Access/Toegang toe aan je werkruimte als Admin. Dit zorgt voor de toegang tussen de embedded pagina en de Power BI API.
- Voor de klant-toegang hoef je geen Security/beveiling op de dataset (in Power BI Service) in te regelen. De RLS beveiliging wordt ingesteld in de volgende stappen.
4. Van de werkruimte heb je ook nog de volgende ID’s nodig: GroupID, ReportID en evt DataSetID.
- Deze haal je uit de URL van het rapport: https://app.powerbi.com/groups/f66a82b6-dc7f-41d3-8eaa-140d66f78737/reports/65388736-531a-4331-b911-06a4cfc95de3/ Na groups/ vind je de GroupID, na reports/ de ReportID. Deze ID’s heb je hierna nodig.
5. Vervolgens maak je de code op de webpagina (bijv. mijn-omgeving) die een token genereert voor iedere klant die inlogt en daarmee toegang geeft tot de rapportage. In de video hieronder wordt het perfect uitgelegd. Als dit te ver gaat voor je, dan adviseer ik je om een programmeur te vragen om je hierbij te helpen. Het stukje code is te vinden via de GitHub-link in de video.
How do you use RLS with Power BI Embedded???
6. Nu heeft een klant toegang tot het rapport via een embedded scherm. Test uiteraard vooraf of het werkt met een test-account voordat je het in productie neemt. Op de webpagina kun je aanvullende toelichtingen kwijt boven het embed-scherm om het rapport toe te lichten.
Dit is een hele mooie manier om content en intelligence te delen met je klanten. Zij hebben geen Power BI licentie nodig en hoeven ook niet bijzonder veel van Power BI te snappen om het rapport te gebruiken – zolang je daar maar rekening mee houdt bij het ontwerp en ook instructies en definities in het rapport plaatst. Deze methode kun je ook gebruiken om rapporten en andere applicaties te delen met collega’s via een webpagina, waarbij ze dus geen power bi licentie nodig hebben.