Begränsa åtkomsten till Power BI-modelldata

Slutförd

Som datamodellerare konfigurerar du RLS genom att skapa en eller flera roller. En roll har ett unikt namn i modellen och innehåller vanligtvis en eller flera regler. Regler tillämpar filter på modelltabeller med hjälp av DAX-filteruttryck (Data Analysis Expressions).

Kommentar

Som standard har en datamodell inga roller. En datamodell utan roller innebär att användare (som har behörighet att fråga datamodellen) har åtkomst till alla modelldata.

Dricks

Det går att definiera en roll som inte innehåller några regler. I det här fallet ger rollen åtkomst till alla rader i alla modelltabeller. Den här rolluppsättningen skulle vara lämplig för en administratörsanvändare som får visa alla data.

Du kan skapa, verifiera och hantera roller i Power BI Desktop. För Azure Analysis Services- eller SQL Server Analysis Services-modeller kan du skapa, verifiera och hantera roller med hjälp av SQL Server Data Tools (SSDT).

Du kan också skapa och hantera roller med hjälp av SQL Server Management Studio (SSMS) eller med hjälp av ett verktyg från tredje part, till exempel Tabellredigeraren.

Om du vill få en bättre förståelse för hur RLS begränsar åtkomsten till data kan du titta på följande animerade bild.

Animated diagram demonstrates how row-level security works for two users who each have access to specific country data.

Tillämpa designprinciper för star-schema

Vi rekommenderar att du använder designprinciper för star-schema för att skapa en modell som består av dimensions- och faktatabeller. Det är vanligt att konfigurera Power BI för att framtvinga regler som filtrerar dimensionstabeller, så att modellrelationer effektivt kan sprida dessa filter till faktatabeller.

Följande bild är modelldiagrammet för datamodellen adventure works försäljningsanalys. Den visar en star-schemadesign som består av en enda faktatabell med namnet Försäljning. De andra tabellerna är dimensionstabeller som stöder analys av försäljningsmått efter datum, försäljningsområde, kund, återförsäljare, beställning, produkt och säljare. Observera modellrelationerna som ansluter alla tabeller. Dessa relationer sprider filter (direkt eller indirekt) till tabellen Försäljning .

Screenshot shows a Power B I Desktop model diagram comprising the tables and relationships as described in the previous paragraph.

Den här modelldesignen stöder exempel som presenteras i den här lektionen.

Definiera regler

Regeluttryck utvärderas i radkontext. Radkontext innebär att uttrycket utvärderas för varje rad med hjälp av kolumnvärdena för den raden. När uttrycket returnerar TRUE kan användaren "se" raden.

Dricks

Mer information om radkontext finns i modulen Lägg till beräknade tabeller och kolumner i Power BI Desktop-modeller . I den här modulen beskrivs hur du lägger till modellberäkningar, men den innehåller en enhet som introducerar och beskriver radkontext.

Du kan definiera regler som antingen är statiska eller dynamiska.

Statiska regler

Statiska regler använder DAX-uttryck som refererar till konstanter.

Tänk på följande regel som tillämpas på tabellen Region som begränsar dataåtkomsten till försäljning i Mellanvästern.


'Region'[Region] = "Midwest"

Följande steg förklarar hur Power BI tillämpar regeln. Det:

  1. Filtrerar tabellen Region, vilket resulterar i en synlig rad (för Mellanvästern).

  2. Använder modellrelationen för att sprida tabellfiltret Region till tabellen Delstat , vilket resulterar i 14 synliga rader (mellanvästern-regionen består av 14 stater).

  3. Använder modellrelationen för att sprida tabellfiltret State till tabellen Sales , vilket resulterar i tusentals synliga rader (försäljningsfakta för delstaterna som tillhör mellanvästern).

Den enklaste statiska regeln som du kan skapa begränsar åtkomsten till alla tabellrader. Överväg följande regel som tillämpas på tabellen Försäljningsinformation (visas inte i modelldiagrammet).


FALSE()

Den här regeln säkerställer att användarna inte kan komma åt några tabelldata. Det kan vara användbart när säljare får se aggregerade försäljningsresultat (från tabellen Försäljning ) men inte information på ordernivå.

Det är enkelt och effektivt att definiera statiska regler. Överväg att använda dem när du bara behöver skapa ett fåtal av dem, vilket kan vara fallet i Adventure Works där det bara finns sex regioner i USA. Tänk dock på nackdelar: att konfigurera statiska regler kan innebära betydande ansträngningar för att skapa och konfigurera. Det skulle också kräva att du uppdaterar och publicerar om datauppsättningen när nya regioner registreras.

Om det finns många regler att konfigurera och du förväntar dig att lägga till nya regler i framtiden bör du överväga att skapa dynamiska regler i stället.

Dynamiska regler

Dynamiska regler använder specifika DAX-funktioner som returnerar miljövärden (till skillnad från konstanter). Miljövärden returneras från tre specifika DAX-funktioner:

  • USERNAME eller USERPRINCIPALNAME – Returnerar den Power BI-autentiserade användaren som ett textvärde.

  • CUSTOMDATA – Returnerar egenskapen CustomData som skickades i anslutningssträng. Icke-Power BI-rapporteringsverktyg som ansluter till datamängden med hjälp av en anslutningssträng kan ange den här egenskapen, till exempel Microsoft Excel.

Kommentar

Tänk på att funktionen USERNAME returnerar användaren i formatet DOMÄN\användarnamn när den används i Power BI Desktop. Men när det används i Power BI-tjänst returneras formatet för användarens användarhuvudnamn (UPN), till exempel username@adventureworks.com. Du kan också använda funktionen USERPRINCIPALNAME, som alltid returnerar användaren i formatet användarens huvudnamn.

Överväg en reviderad modelldesign som nu innehåller tabellen (dold) AppUser . Varje rad i tabellen AppUser beskriver ett användarnamn och en region. En modellrelation till tabellen Region sprider filter från tabellen AppUser .

Image shows a revised model diagram that now includes the AppUser table. This table has two columns: Region and User Name.

Följande regel som tillämpas på tabellen AppUser begränsar dataåtkomsten till den autentiserade användarens regioner.


'AppUser'[UserName] = USERPRINCIPALNAME()

Det är enkelt och effektivt att definiera dynamiska regler när en modelltabell lagrar användarnamnsvärden. De gör att du kan framtvinga en datadriven RLS-design. När säljare till exempel läggs till i eller tas bort från tabellen AppUser (eller tilldelas till olika regioner) fungerar den här designmetoden bara.

Verifiera roller

När du skapar roller är det viktigt att testa dem för att säkerställa att de tillämpar rätt filter. För datamodeller som skapats i Power BI Desktop finns funktionen Visa som som som gör att du kan se rapporten när olika roller tillämpas och olika användarnamnsvärden skickas.

Screenshot shows the Power B I Desktop Modeling ribbon. The “View as” command is highlighted.

Konfigurera rollmappningar

Rollmappningar måste konfigureras innan användare får åtkomst till Power BI-innehåll. Rollmappning omfattar tilldelning av Microsoft Entra-säkerhetsobjekt till roller. Säkerhetsobjekt kan vara användarkonton eller säkerhetsgrupper.

Dricks

När det är möjligt är det bra att mappa roller till säkerhetsgrupper. På så sätt blir det färre mappningar och du kan delegera gruppmedlemskapshanteringen till nätverksadministratörerna.

För Power BI Desktop-utvecklade modeller utförs rollmappning vanligtvis i Power BI-tjänst. För Azure Analysis Services- eller SQL Server Analysis Services-modeller utförs rollmappning vanligtvis i SSMS.

Mer information om hur du konfigurerar RLS finns i:

Använda enkel inloggning (SSO) för DirectQuery-källor

När din datamodell har DirectQuery-tabeller och deras datakälla stöder enkel inloggning kan datakällan framtvinga databehörigheter. På så sätt framtvingar databasen RLS och Power BI-datauppsättningar och rapporter som respekterar datakällans säkerhet.

Tänk på att Adventure Works har en Azure SQL Database för deras försäljningsåtgärder som finns i samma klientorganisation som Power BI. Databasen tillämpar RLS för att styra åtkomsten till rader i olika databastabeller. Du kan skapa en DirectQuery-modell som ansluter till den här databasen utan roller och publicera den till Power BI-tjänst. När du anger autentiseringsuppgifterna för datakällan i Power BI-tjänst aktiverar du enkel inloggning. När rapportkonsumenter öppnar Power BI-rapporter skickar Power BI sin identitet till datakällan. Datakällan tillämpar sedan RLS baserat på rapportkonsumentens identitet.

Screenshot shows the data source credentials window with the S O option enabled.

Information om Azure SQL Database RLS finns i Säkerhet på radnivå.

Kommentar

Beräknade tabeller och beräknade kolumner som refererar till en DirectQuery-tabell från en datakälla med SSO-autentisering stöds inte i Power BI-tjänst.

Mer information om datakällor som stöder enkel inloggning finns i Enkel inloggning (SSO) för DirectQuery-källor.