Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Beveiliging op rijniveau (RLS) beperkt de toegang tot gegevens voor specifieke gebruikers. Filters beperken gegevens op rijniveau en u definieert filters binnen rollen. In de Power BI-service hebben gebruikers met toegang tot een werkruimte toegang tot semantische modellen in die werkruimte. RLS beperkt alleen de toegang tot gegevens voor gebruikers met viewermachtigingen . Dit geldt niet voor beheerders, leden of inzenders.
Volg dit hoogover werkstroom om RLS te implementeren:
- Define roles and rules in Power BI Desktop met behulp van DAX-filterexpressies.
- Publish het semantische model en rapport naar de Power BI-dienst.
- Voeg leden toe aan rollen in de Power BI-service.
- Valideer met behulp van de functie Testen als rol om te bevestigen dat het filteren van gegevens werkt zoals verwacht.
U kunt RLS configureren voor geïmporteerde semantische modellen in Power BI Desktop of de Power BI-service. U kunt RLS ook configureren op semantische modellen die DirectQuery gebruiken, zoals SQL Server. Voor Live-verbindingen van Analysis Services of Azure Analysis Services configureert u beveiliging op rijniveau in het model, niet in Power BI. De beveiligingsoptie wordt niet weergegeven voor semantische modellen met een live verbinding.
Notitie
In dit artikel wordt specifiek aandacht besteed aan RLS voor Power BI semantische modellen. Zie Beveiliging in Microsoft Fabric voor gegevensbeveiliging in andere Fabric items.
Notitie
Voor semantische Direct Lake-modellen in Microsoft Fabric wordt RLS ondersteund. Als een DAX-query echter terugvalt op de DirectQuery-modus vanwege niet-ondersteunde functies, zijn RLS-filters nog steeds van toepassing, maar kunnen prestatiekenmerken veranderen. Controleer het fallbackgedrag van query's in de Fabric capaciteitsmetriek app.
Rollen en regels definiëren in Power BI Desktop
U kunt rollen en regels definiëren in Power BI Desktop. Met deze editor kunt u schakelen tussen het gebruik van de standaard vervolgkeuzelijst en een DAX-interface. Wanneer u publiceert naar Power BI, publiceert u ook de roldefinities.
Beveiligingsrollen definiëren:
Importeer gegevens in uw Power BI Desktop-rapport of configureer een DirectQuery-verbinding.
Notitie
U kunt geen rollen definiëren in Power BI Desktop voor Live-verbindingen van Analysis Services. U moet dat doen binnen het Analysis Services-model.
Selecteer Rollen beheren op het tabblad Modellering.
Klik vanuit het Rollen beheren venster op Nieuw om een nieuwe rol aan te maken.
Geef onder Rollen een naam op voor de rol en selecteer Enter.
Notitie
U kunt bijvoorbeeld geen rol definiëren met een komma
London,ParisRole.Onder Selecteer tabellen selecteert u de tabel waarop u een beveiligingsfilter op rijniveau wilt toepassen.
Onder Filter gegevens gebruikt u de standaardeditor om uw rollen te definiëren. De gemaakte uitdrukkingen geven een waar of onwaar waarde terug.
Notitie
Niet alle beveiligingsfilters op rijniveau die in Power BI worden ondersteund, kunnen worden gedefinieerd met behulp van de standaardeditor. Beperkingen zijn expressies die momenteel alleen kunnen worden gedefinieerd met DAX, inclusief dynamische regels zoals username() of userprincipalname(). Als u rollen wilt definiëren met deze filters, schakelt u over naar de DAX-editor.
Selecteer desgewenst Overschakelen naar DAX-editor om over te schakelen naar het gebruik van de DAX-editor om uw rol te definiëren. DAX-expressies retourneren een waarde van waar of onwaar. Voorbeeld:
[Entity ID] = “Value”. De DAX editor is voltooid met automatisch aanvullen voor formules (IntelliSense). U kunt het vinkje boven het expressievak selecteren om de expressie en de X-knop boven het expressievak te valideren om wijzigingen te herstellen.Notitie
U kunt username() in deze expressie gebruiken. Houd er rekening mee dat username() de indeling DOMAIN\username heeft in Power BI Desktop. Binnen de Power BI-service en Power BI Report Server is het in het formaat van de User Principal Name (UPN) van de gebruiker. Gebruik in dit expressievak komma's om dax-functieargumenten te scheiden, zelfs als u een landinstelling gebruikt die normaal gesproken puntkommascheidingstekens gebruikt, zoals Frans of Duits.
U kunt teruggaan naar de standaardeditor door Overschakelen naar de standaardeditor te selecteren. Alle wijzigingen die in een van de bewerkingsinterfaces zijn gemaakt, blijven behouden bij het wisselen van interfaces, waar mogelijk. Wanneer u een rol definieert met behulp van de DAX-editor die niet kan worden gedefinieerd in de standaardeditor, wordt u gevraagd om een waarschuwing dat het schakelen tussen editors kan leiden tot verlies van informatie. Als u deze informatie wilt behouden, selecteert u Annuleren en gaat u alleen door met het bewerken van deze rol in de DAX-editor.
Notitie
Gebruik in dit expressievak komma's om DAX-functieargumenten te scheiden, zelfs als u een landinstelling gebruikt die normaal gesproken puntkommascheidingstekens gebruikt, zoals Frans of Duits.
Selecteer Opslaan.
U kunt geen gebruikers toewijzen aan een rol in Power BI Desktop. U wijst ze toe aan de Power BI-service. U kunt dynamische beveiliging inSchakelen in Power BI Desktop door gebruik te maken van de DAX-functies username() of userprincipalname() en de juiste relaties te configureren.
Algemene DAX-filterpatronen
In de volgende voorbeelden ziet u algemene DAX-filterexpressies die u kunt gebruiken bij het definiëren van RLS-rollen:
Statische RLS — beperkt gegevens tot een vaste waarde:
[Region] = "West"Dynamic RLS met UPN — Beperkt gegevens op basis van het e-mailadres van de aangemelde gebruiker.
[UserEmail] = USERPRINCIPALNAME()Dynamische RLS met GEBRUIKERSNAAM – beperkt gegevens op basis van het domein en de gebruikersnaam van de gebruiker.
[UserDomain] = USERNAME()Dynamische Rijniveau beveiliging met CUSTOMDATA — Beperkt gegevens op basis van een aangepaste tekenreeks die meegegeven is vanuit de ingesloten toepassing.
[AppRole] = CUSTOMDATA()Notitie
CUSTOMDATA()wordt voornamelijk gebruikt in ingesloten scenario's waarbij de toepassing een aangepaste effectieve identiteitsreeks doorgeeft via de Power BI REST API.
Dynamische Row-Level Security (RLS) is de meest voorkomende benadering omdat het één roldefinitie mogelijk maakt om gegevens voor elke gebruiker op verschillende manieren te filteren, op basis van een tabel voor gebruikerstoewijzing in uw gegevensmodel.
Kruis-filtering in beide richtingen
Beveiligingsfilters op rijniveau maken standaard gebruik van filters in één richting, ongeacht of de relaties zijn ingesteld op één richting of bidirectioneel.
U kunt bi-directioneel kruislings filteren met rij-niveau beveiliging handmatig inschakelen door de relatie te selecteren en het selectievakje 'Beveiligingsfilter toepassen in beide richtingen' aan te vinken. Selecteer deze optie wanneer u ook dynamische beveiliging op rijniveau op serverniveau hebt geïmplementeerd, waarbij beveiliging op rijniveau is gebaseerd op gebruikersnaam of aanmeldings-id. Als een tabel deelneemt aan meerdere bidirectionele relaties, kunt u deze optie alleen selecteren voor een van deze relaties.
Caution
Het inschakelen van bidirectionele beveiligingsfilters kan een negatieve invloed hebben op de queryprestaties, met name in modellen met veel relaties of grote gegevenssets. Zorg voor een grondige test voordat je uitrolt naar de productieomgeving.
Voor meer informatie, zie Bidirectioneel kruislings filteren met DirectQuery in Power BI en het technische artikel 'Beveiliging van het tabulaire BI-semantiemodel'.
Beveiliging op uw model beheren
Als u de beveiliging van uw semantische model wilt beheren, opent u de werkruimte waarin u uw semantische model in Fabric hebt opgeslagen en voert u de volgende stappen uit:
Selecteer in Fabric het menu Meer opties voor een semantisch model. Dit menu wordt weergegeven wanneer u de muisaanwijzer op een semantische modelnaam plaatst.
Selecteer Beveiliging.
Met de optie Beveiliging komt u op de Rolniveau-beveiligingspagina, waar u leden toevoegt aan een rol die u hebt gemaakt. Gebruikers met inzender - of hoger werkruimterollen zien de optie Beveiliging en kunnen gebruikers toewijzen aan een rol. Het eigendom van het semantisch model of de bouwtoestemming kan ook vereist zijn, afhankelijk van het specifieke scenario.
Notitie
U kunt alleen beveiliging beheren op modellen met beveiligingsrollen op rijniveau die al zijn gedefinieerd in Power BI Desktop of wanneer u uw gegevensmodel bewerkt in de Power BI-service. Als uw model nog geen rollen heeft gedefinieerd, kunt u de beveiliging in de Power BI-service niet beheren.
Rolledenmaatschap beheren
Leden toevoegen
In het Power BI-service kunt u een lid toevoegen aan de rol door het e-mailadres of de naam van de gebruiker of beveiligingsgroep te typen. U kunt geen groepen toevoegen die zijn gemaakt in Power BI. U kunt leden buiten uw organisatie toevoegen. Zie Overwegingen voor externe (B2B-gast) gebruikers voor richtlijnen over de werking van RLS met externe B2B-gastgebruikers.
U kunt de volgende groepen gebruiken om beveiliging op rijniveau in te stellen.
- Distributiegroep
- E-mailingeschakelde groep
- Microsoft Entra-beveiligingsgroep
Important
Microsoft 365 groepen worden niet ondersteund en kunnen niet worden toegevoegd aan rollen. Alleen de groepstypen die hierboven genoemd zijn, worden ondersteund voor het lidmaatschap van de RLS-rol.
U kunt zien hoeveel leden deel uitmaken van de rol door het getal tussen haakjes naast de rolnaam of naast leden.
Leden verwijderen
U kunt leden verwijderen door de X naast hun naam te selecteren.
De rol in de Power BI-service valideren
U kunt controleren of de rol die u hebt gedefinieerd, correct werkt in de Power BI-service door de rol te testen.
- Selecteer Meer opties (...) naast de rol.
- Selecteer Test als rol.
Notitie
Dashboards zijn niet beschikbaar voor testen met behulp van de optie Testen als rol . U wordt omgeleid naar het rapport dat is gepubliceerd vanaf Power BI Desktop met dit semantische model, indien aanwezig.
Wanneer het rapport wordt geladen, controleert u het volgende:
- In het rapport worden alleen gegevensrijen weergegeven die overeenkomen met de filterexpressie die is gedefinieerd in de rol.
- Visuals, tabellen en grafieken weerspiegelen de gefilterde gegevens, niet de volledige gegevensset.
- Als u dynamische RLS gebruikt, komen de gegevens overeen met de identiteit die getoond wordt in de Nu weergeven als header.
In de paginakoptekst wordt de toegepaste rol weergegeven. Test andere rollen, een combinatie van rollen of een specifieke persoon door Nu weergeven als te selecteren. Hier ziet u belangrijke machtigingsgegevens met betrekking tot de persoon of rol die wordt getest. Zie RLS-gebruikerservaring voor meer informatie over hoe machtigingen met RLS communiceren.
Test andere rapporten die zijn verbonden met het semantische model door Weergave in de paginakoptekst te selecteren. U kunt alleen rapporten testen die zich in dezelfde werkruimte bevinden als uw semantische model.
Als u wilt terugkeren naar de normale weergave, selecteert u Terug naar Beveiliging op rijniveau.
Notitie
De functie Testen als rol werkt niet voor DirectQuery-modellen waarvoor eenmalige aanmelding (SSO) is ingeschakeld. Daarnaast kunnen niet alle aspecten van een rapport worden gevalideerd in de functie Test als rol, waaronder Q&A-visualisaties, visualisaties voor snelle inzichten en Copilot.
Tip
Als testen als rol de verwachte resultaten niet weergeeft, probeert u het volgende:
- Controleer of de syntaxis van de DAX-filterexpressie juist is en verwijst naar de juiste kolomnamen.
- Zorg ervoor dat u de juiste rol hebt geselecteerd om te testen.
- Controleer voor dynamische RLS of de gebruikerstoewijzingstabel overeenkomende waarden bevat voor
USERPRINCIPALNAME()ofUSERNAME(). - Voor DirectQuery-modellen met SSO ingeschakeld, wordt Test als rol niet ondersteund. Meld u in plaats daarvan aan als een gebruiker met de rol Viewer om gegevensfiltering te valideren.
De DAX-functie username() of userprincipalname() gebruiken
U kunt gebruikmaken van de DAX-functies username() of userprincipalname() in uw gegevensset. U kunt deze gebruiken in expressies in Power BI Desktop. Wanneer u uw model publiceert, wordt het gebruikt in de Power BI-service.
In Power BI Desktop retourneert username() een gebruiker in de indeling DOMAIN\User en userprincipalname() een gebruiker in de indeling van user@contoso.com.
In de Power BI-service retourneert username() en userprincipalname() beide de UPN (User Principal Name) van de gebruiker. Dit lijkt op een e-mailadres.
RLS gebruiken met werkruimten in Power BI
Als u uw Power BI Desktop-rapport publiceert naar een werkruimte in de Power BI-service, worden de RLS-rollen toegepast op leden die zijn toegewezen aan de rol Kijker in de werkruimte. Zelfs als Viewers bouwmachtigingen krijgen voor het semantische model, is RLS nog steeds van toepassing. Als kijkers met samenstellingsmachtigingen bijvoorbeeld Analyseren gebruiken in Excel, wordt de weergave van de gegevens beperkt door beveiliging op rijniveau. Werkruimteleden aan wie beheerder, lid of inzender is toegewezen, hebben een bewerkingsmachtiging voor het semantische model. RLS is daarom niet van toepassing op deze leden. Als u wilt dat RLS van toepassing is op personen in een werkruimte, kunt u ze alleen de rol Kijker toewijzen. Lees meer over rollen in werkruimten.
Overwegingen voor externe (B2B-gastgebruikers)
Als u Power BI inhoud deelt met externe gebruikers via Microsoft Entra B2B, is het belangrijk om te begrijpen hoe RLS communiceert met identiteiten van gastgebruikers.
UPN-resolutie voor B2B-gasten
Wanneer een externe B2B-gastgebruiker een Power BI rapport opent, retourneert de DAX-functie USERPRINCIPALNAME() doorgaans een e-mailachtige id (bijvoorbeeld user@partner.com). In sommige configuraties kan een UPN van een gast worden geretourneerd in de #EXT# indeling (bijvoorbeeld user_partner.com#EXT#@yourtenant.onmicrosoft.com).
Dit onderscheid is van belang voor dynamische RLS. Als de gebruikerstoewijzing tabel een andere id-indeling opslaat dan wat USERPRINCIPALNAME() retourneert, komt de filterexpressie niet overeen en kan de gastgebruiker mogelijk geen gegevens of onjuiste gegevens zien.
GEDRAG VAN GEBRUIKERSNAAM() voor B2B-gasten
De USERNAME() DAX-functie retourneert de domein-id van de gebruiker\gebruikersnaam. Voor B2B-gastgebruikers retourneert deze functie doorgaans de UPN van de thuistenant van de gast (bijvoorbeeld user@partner.com) in plaats van een domein\gebruikersnaam-indeling. Omdat USERNAME() en USERPRINCIPALNAME() vaak dezelfde waarde retourneren voor B2B-gasten, gebruiken USERPRINCIPALNAME() de meeste implementaties voor consistentie.
Tip
Als uw bestaande dynamische beveiliging op rijniveau USERNAME() gebruikt, controleer dan welke waarde deze retourneert voor gastgebruikers in uw omgeving voordat u inhoud extern deelt. U kunt dit controleren door een kaartvisual te gebruiken die USERNAME() weergeeft in een testrapport.
Aanbevolen aanpak: Sla hetzelfde id-indelingsformaat op en gebruik dit consistent in de tabel voor gebruikerstoewijzing als de waarde die wordt geretourneerd door USERPRINCIPALNAME(). In de meeste gevallen vereenvoudigt het gebruik van e-mailadressen het beheer:
[UserEmail] = USERPRINCIPALNAME()
Waar de UserEmail kolom e-mailadressen bevat, zoals user@partner.com voor interne en externe gebruikers.
Notitie
De waarde die door USERPRINCIPALNAME() aan de gebruiker wordt geretourneerd, is de aanmeldings-id (UPN) van de gebruiker, niet noodzakelijkerwijs het e-mailadres. Voor de meeste gebruikers zijn dit hetzelfde, maar ze kunnen verschillen (bijvoorbeeld wanneer het e-mailadres van een gebruiker een alias is). Wanneer u de tabel voor gebruikerstoewijzing maakt, gebruikt u de waarde die wordt geretourneerd door USERPRINCIPALNAME() in plaats van het kenmerk mail uit Microsoft Entra ID.
Important
Als u dynamische RLS met USERPRINCIPALNAME() gebruikt, moet u altijd testen met werkelijke externe gastgebruikers. De functie Test als rol maakt gebruik van uw eigen identiteit en toont geen upn-oplossingsproblemen van externe gebruikers.
Notitie
Het UPN-resolutiegedrag voor B2B-gasten kan variëren afhankelijk van de configuratie van Microsoft Entra ID, zoals de instellingen voor toegang tussen tenants en het type gastgebruiker. Valideer altijd het gedrag in uw specifieke omgeving.
Problemen oplossen: externe gast ziet geen gegevens
Als een B2B-gastgebruiker een leeg rapport ziet of een bericht 'geen gegevens' ontvangt, voert u de volgende stappen uit:
-
Controleer de geretourneerde UPN-indeling : maak een testmeting met behulp van
USERPRINCIPALNAME()en geef deze weer in een kaartvisual. Laat de gastgebruiker het rapport bekijken om de werkelijke waarde te zien die wordt geretourneerd. -
Controleer de tabel voor gebruikerstoewijzing: controleer of de toewijzingstabel een rij bevat met een waarde die exact overeenkomt met wat
USERPRINCIPALNAME()voor die gast wordt geretourneerd. - Controleren op hoofdlettergevoeligheid : DAX-tekenreeksvergelijkingen zijn standaard niet hoofdlettergevoelig, maar controleer of uw gegevensbron geen hoofdlettergevoelige waarden heeft geïntroduceerd.
- Review cross-tenant access settings - Als uw organisatie cross-tenant toegangsbeleid gebruikt, kan dit van invloed zijn op de UPN-indeling die wordt gepresenteerd aan Power BI.
- Test met de werkelijke gastgebruiker : de functie Test als rol maakt gebruik van uw eigen identiteit. Valideer altijd met het echte externe gastaccount. Zie Distribute Power BI inhoud aan externe gastgebruikers met Microsoft Entra B2B voor meer informatie over het delen van Power BI inhoud met externe gebruikers.
Overwegingen en beperkingen
Hier ziet u de huidige beperkingen voor beveiliging op rijniveau voor cloudmodellen:
- Als u eerder rollen en regels in de Power BI-service hebt gedefinieerd, moet u deze opnieuw maken in Power BI Desktop.
- U kunt RLS alleen definiëren op de semantische modellen die zijn gemaakt met Power BI Desktop. Als u RLS wilt inschakelen voor semantische modellen die zijn gemaakt met Excel, moet u eerst uw bestanden converteren naar PBIX-bestanden (Power BI Desktop). Meer informatie.
- Service-principals kunnen niet worden toegevoegd aan een RLS-rol. RLS wordt daarom niet toegepast op apps die een service-principal gebruiken als de uiteindelijke effectieve identiteit.
- Alleen Import- en DirectQuery-verbindingen worden ondersteund. Liveverbindingen met Analysis Services worden verwerkt in het on-premises model.
- Als RLS is ingeschakeld, kan het gebruik van de functie USERELATIONSHIP() in DAX-query's en metingen onverwachte fouten veroorzaken. U kunt dit probleem omzeilen door uw DAX-expressies opnieuw te ontwerpen om USERELATIONSHIP() te voorkomen en in plaats daarvan relaties op modelniveau of andere DAX-patronen te gebruiken.
- De functie Test as role/View as role werkt niet voor DirectQuery-modellen waarvoor eenmalige aanmelding (SSO) is ingeschakeld.
- De functie Testen als rol / weergave als rol toont alleen rapporten uit de semantische modellen-werkruimte.
- De functie Testen als rol/weergeven als rol werkt niet voor gepagineerde rapporten.
Houd er rekening mee dat als een Power BI-rapport verwijst naar een rij met RLS die is geconfigureerd, hetzelfde bericht wordt weergegeven als voor een verwijderd of niet-bestaand veld. Voor deze gebruikers lijkt het rapport kapot.
Veelgestelde vragen
Vraag: Wat moet ik doen als ik eerder rollen en regels heb gemaakt voor een gegevensset in de Power BI-service? Werken ze nog steeds als ik niets doe?
Antwoord: Nee, visuals worden niet goed weergegeven. U moet de rollen en regels in Power BI Desktop opnieuw maken en vervolgens publiceren naar de Power BI-service.
Vraag: Kan ik deze rollen maken voor Analysis Services-gegevensbronnen?
Antwoord: Ja, als u de gegevens in Power BI Desktop hebt geïmporteerd. Als u een liveverbinding gebruikt, kunt u RLS niet configureren binnen de Power BI-service. U definieert RLS in het On-premises Analysis Services-model.
Vraag: Kan ik RLS gebruiken om de kolommen of metingen te beperken die toegankelijk zijn voor mijn gebruikers?
Antwoord: Nee, als een gebruiker toegang heeft tot een bepaalde rij met gegevens, kunnen ze alle kolommen met gegevens voor die rij zien. Als u de toegang tot kolommen en kolommetagegevens wilt beperken, kunt u overwegen beveiliging op objectniveau te gebruiken.
Vraag: Kan ik met RLS gedetailleerde gegevens verbergen, maar krijg ik toegang tot gegevens die zijn samengevat in visuals?
Antwoord: Nee, u beveiligt afzonderlijke rijen met gegevens, maar gebruikers kunnen altijd de details of de samengevatte gegevens zien.
Vraag: Mijn gegevensbron heeft al beveiligingsrollen gedefinieerd (bijvoorbeeld SQL Server-rollen of SAP BW-rollen). Wat is de relatie tussen deze rollen en RLS?
Antwoord: Het antwoord is afhankelijk van of u gegevens importeert of DirectQuery gebruikt. Als u gegevens importeert in uw Power BI-gegevensset, worden de beveiligingsrollen in uw gegevensbron niet gebruikt. In dit geval moet u RLS definiëren om beveiligingsregels af te dwingen voor gebruikers die verbinding maken in Power BI. Als u DirectQuery gebruikt, worden de beveiligingsrollen in uw gegevensbron gebruikt. Wanneer een gebruiker een rapport opent, verzendt Power BI een query naar de onderliggende gegevensbron, die beveiligingsregels toepast op de gegevens op basis van de referenties van de gebruiker.
Vraag: Kan een gebruiker tot meer dan één rol behoren?
Antwoord: Een gebruiker kan tot meerdere rollen behoren en de rollen zijn additief. Als een gebruiker bijvoorbeeld deel uitmaakt van zowel de rollen Verkoop als Marketing, kunnen ze gegevens voor beide rollen zien.
Gerelateerde inhoud
- Gegevenstoegang beperken met beveiliging op rijniveau (RLS) voor Power BI Desktop
- Power BI-implementatieplanning: planning voor consumentenbeveiliging rapporteren
- RLS voor ingesloten scenario's voor ISV's
- Distribute Power BI inhoud aan externe gastgebruikers met Microsoft Entra B2B
Vragen? Wilt u de Power BI-community suggesties vragen? Ideeën bijdragen om Power BI te verbeteren