Beveiliging op rijniveau instellen

Voltooid

Ontwikkelaars van gegevensmodellen stellen RLS in door een of meer rollen te maken. Een rol heeft een unieke naam in het model en bevat meestal een of meer regels. Regels dwingen filters af op modeltabellen met behulp van DAX-filterexpressies (Data Analysis Expressions).

Notitie

Een gegevensmodel heeft standaard geen rollen. Een gegevensmodel zonder rollen betekent dat gebruikers (die gemachtigd zijn om een query uit te voeren op het gegevensmodel) toegang hebben tot alle modelgegevens.

Tip

U kunt een rol definiëren die geen regels bevat. In dit geval biedt de rol toegang tot alle rijen van alle modeltabellen. Deze rolinstelling is geschikt voor een gebruiker met beheerdersrechten die alle gegevens mag weergeven.

Voor modellen die zijn ontwikkeld in Microsoft Power BI Desktop, kunt u rollen maken, valideren en beheren in Power BI Desktop. Voor Microsoft Azure Analysis Services- of SQL Server Analysis Services-modellen kunt u rollen maken, valideren en beheren met behulp van SQL Server Data Tools (SSDT).

Daarnaast kunt u rollen maken en beheren met behulp van SQL Server Management Studio of met behulp van een extern hulpprogramma, zoals tabellaire Editor.

Principals voor het ontwerpen van star schema's toepassen

De eerste stap bij het bereiken van een effectieve RLS-oplossing is het ontwikkelen van een goed ontworpen model. U wordt aangeraden star schemaontwerpprincipals toe te passen om een model te maken dat dimensie- en feitentabellen bevat. Meestal dwingt Power BI regels af om dimensietabellen te filteren en modelrelaties worden deze filters efficiënt doorgegeven aan feitentabellen.

De volgende afbeelding is het diagram verkoopanalysegegevensmodel van Tailspin Toys. Het toont een star schemaontwerp met één feitentabel met de naam Verkoop. De andere vier tabellen zijn dimensietabellen die ondersteuning bieden voor de analyse van verkoopmetingen op datum, staat, regio en product. Modelrelaties verbinden alle tabellen. Deze relaties geven filters (direct of indirect) door aan de tabel Sales .

Schermopname van een Power BI Desktop modeldiagram met de tabellen en relaties.

Dit modelontwerp ondersteunt voorbeelden die in deze module worden weergegeven.

Regels definiëren

Regelexpressies worden geëvalueerd binnen rijcontext. Rijcontext betekent dat de expressie voor elke rij wordt geëvalueerd met behulp van de kolomwaarden van die rij. Wanneer de expressie WAAR retourneert, kan de gebruiker de rij 'zien'.

Tip

Zie de module Berekende tabellen en kolommen toevoegen aan Power BI Desktop modellen voor meer informatie over rijcontext. In deze module wordt het proces van het toevoegen van modelberekeningen beschreven, maar het bevat ook een eenheid die rijcontext introduceert en beschrijft.

U kunt regels definiëren die statisch of dynamisch zijn.

Statische regels

Statische regels maken gebruik van DAX-expressies die verwijzen naar constanten.

Houd rekening met de volgende regel die wordt toegepast op de tabel Region waarmee de gegevenstoegang tot de verkoop van New England wordt beperkt:

'Region'[Region] = "New England"

In de volgende stappen wordt uitgelegd hoe het Power BI-proces de regel afdwingt.

  1. Filter de tabel Region , wat resulteert in één zichtbare rij (voor New England).

  2. Gebruik de modelrelatie om het tabelfilter Region door te geven aan de tabel State , wat resulteert in zes zichtbare rijen (de regio New England bevat zes staten).

  3. Gebruik de modelrelatie om het tabelfilter State door te geven aan de tabel Verkoop , wat resulteert in duizenden zichtbare rijen (de verkoopfeiten voor de staten die deel uitmaken van de regio New England).

De eenvoudigste statische regel die u kunt maken, beperkt de toegang tot alle tabelrijen. Houd rekening met de volgende regel die wordt toegepast op de tabel Verkoopdetails (niet weergegeven in het modeldiagram):

FALSE()

Deze regel zorgt ervoor dat gebruikers geen toegang hebben tot tabelgegevens. De regel kan handig zijn wanneer verkopers geaggregeerde verkoopresultaten mogen weergeven (uit de tabel Verkoop ), maar geen details op orderniveau.

Het definiëren van statische regels is eenvoudig en effectief. Overweeg statische regels te gebruiken wanneer u er slechts een paar hoeft te maken, zoals het geval kan zijn voor Tailspin Toys, dat slechts zes regio's heeft. Houd echter rekening met enkele nadelen: het instellen van statische regels kan aanzienlijke inspanningen vergen om te maken en in te stellen. Statische regels vereisen ook dat u de gegevensset bijwerkt en opnieuw publiceert wanneer er nieuwe regio's worden geïntroduceerd.

Als er meerdere regels voor de installatie bestaan en u verwacht dat er in de toekomst nieuwe regels worden toegevoegd, kunt u overwegen in plaats daarvan dynamische regels te gebruiken.

Dynamische regels

Dynamische regels gebruiken specifieke DAX-functies die omgevingswaarden retourneren (in tegenstelling tot constanten). Omgevingswaarden worden geretourneerd door de volgende specifieke DAX-functies:

  • USERNAME of USERPRINCIPALNAME: wanneer u het scenario Voor uw organisatie gebruikt, retourneren deze functies een tekstwaarde die de geverifieerde gebruiker beschrijft. Wanneer u het scenario Voor uw klanten gebruikt, retourneren ze een tekstwaarde die door uw app wordt doorgegeven.

  • CUSTOMDATA: wanneer u het scenario Voor uw organisatie gebruikt, retourneert deze functie de eigenschap CustomData die wordt doorgegeven in de verbindingsreeks. Wanneer u het scenario Voor uw klanten gebruikt, wordt een tekstwaarde geretourneerd die door uw app wordt doorgegeven.

Notitie

De USERNAME functie retourneert de gebruiker in de indeling van DOMAIN\username wanneer deze wordt gebruikt in Power BI Desktop. Wanneer deze echter wordt gebruikt in de Power BI-service, wordt de indeling van de UPN (User Principal Name) geretourneerd, zoals username@tailspintoys.com. U kunt ook de USERPRINCIPALNAME functie gebruiken, die de gebruiker altijd retourneert in de UPN-indeling.

Overweeg een herzien modelontwerp dat nu de (verborgen) Tabel AppUser bevat. In elke rij van de AppUser-tabel worden een gebruikersnaam en regio beschreven. Bij een modelrelatie met de tabel Region worden filters uit de tabel AppUser doorgegeven.

Schermopname van een herzien modeldiagram met nu de tabel AppUser. Deze tabel heeft twee kolommen: Region en UserName.

De volgende regel die wordt toegepast op de tabel AppUser beperkt de gegevenstoegang tot de regio(s) van de geverifieerde gebruiker:

'AppUser'[UserName] = USERPRINCIPALNAME()

Dynamische regels definiëren is eenvoudig en effectief wanneer in een modeltabel gebruikersnaamwaarden worden opgeslagen. Met dynamische regels kunt u een gegevensgestuurd RLS-ontwerp afdwingen. Wanneer verkopers bijvoorbeeld worden toegevoegd aan of verwijderd uit de tabel AppUser (of worden toegewezen aan verschillende regio's), werkt deze ontwerpbenadering.

Belangrijk

Wanneer u het scenario Voor uw klanten gebruikt, hoeven de USERNAME functies en USERPRINCIPALNAME geen werkelijke gebruikersnaam te retourneren. In plaats daarvan kan uw app elke tekstwaarde doorgeven om het model te filteren.

Rollen valideren

Wanneer u rollen maakt, moet u ervoor zorgen dat u deze test om ervoor te zorgen dat ze de juiste filters toepassen. Voor gegevensmodellen die in Power BI Desktop zijn gemaakt, kunt u met de functie Weergeven als het rapport bekijken wanneer verschillende rollen worden afgedwongen en verschillende gebruikersnaamwaarden worden doorgegeven.

Schermopname van het lint Power BI Desktop Modellering. De opdracht Weergeven als is gemarkeerd.

Roltoewijzingen instellen

Roltoewijzing wordt anders uitgevoerd, afhankelijk van het insluitscenario.

Wanneer u het scenario Voor uw organisatie gebruikt, moet u roltoewijzingen instellen voordat gebruikers toegang krijgen tot Power BI-inhoud. Roltoewijzing omvat het toewijzen van Microsoft Azure Active Directory beveiligingsobjecten aan rollen. Beveiligingsobjecten kunnen gebruikersaccounts of beveiligingsgroepen zijn.

Tip

Waar mogelijk is het een goede gewoonte om rollen toe te wijzen aan beveiligingsgroepen. Op die manier zijn er minder toewijzingen en kunt u het beheer van het groepslidmaatschap delegeren aan de netwerkbeheerders.

Voor Power BI Desktop ontwikkelde modellen wordt roltoewijzing doorgaans uitgevoerd in de Power BI-service. Voor Azure Analysis Services- of SQL Server Analysis Services-modellen wordt roltoewijzing meestal uitgevoerd in SQL Server Management Studio (SSMS).

Wanneer u het scenario Voor uw klanten gebruikt, wordt de roltoewijzing uitgevoerd door de app tijdens runtime. Uw app-logica stelt een of meer effectieve identiteiten in om beveiliging op rijniveau af te dwingen. Het instellen van effectieve identiteiten wordt verderop in deze module beschreven.

Zie de volgende artikelen voor meer informatie over het instellen van beveiliging op rijniveau: