Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med hjälp av en exempelsemantisk modell för att gå igenom stegen nedan visar den här självstudien hur du implementerar säkerhet på radnivå i en lokal Analysis Services-tabellmodell och använder den i en Power BI-rapport.
- Skapa en ny säkerhetstabell i databasen AdventureworksDW2012
- Skapa tabellmodellen med nödvändiga fakta- och dimensionstabeller
- Definiera användarroller och behörigheter
- Distribuera modellen till en Analysis Services-tabellinstans
- Skapa en Power BI Desktop-rapport som visar data som är skräddarsydda för användaren som kommer åt rapporten
- Distribuera rapporten till Power BI-tjänst
- Skapa en ny instrumentpanel baserat på rapporten
- Dela instrumentpanelen med dina medarbetare
Den här självstudien kräver databasen AdventureworksDW2012.
Uppgift 1: Skapa användarsäkerhetstabellen och definiera datarelation
Du hittar många artiklar som beskriver hur du definierar dynamisk säkerhet på radnivå med tabellmodellen SQL Server Analysis Services (SSAS).
Stegen här kräver att du använder relationsdatabasen AdventureworksDW2012.
I AdventureworksDW2012 skapar du
DimUserSecurity
tabellen enligt nedan. Du kan använda SQL Server Management Studio (SSMS) för att skapa tabellen.När du har skapat och sparat tabellen måste du upprätta relationen mellan
DimUserSecurity
tabellensSalesTerritoryID
kolumn ochDimSalesTerritory
tabellensSalesTerritoryKey
kolumn, enligt nedan.Högerklicka på DimUserSecurity i SSMS och välj Design. Välj sedan Tabelldesignerrelationer>.... Spara tabellen när du är klar.
Lägg till användare i tabellen. Högerklicka på DimUserSecurity och välj Redigera de 200 översta raderna. När du har lagt till användare
DimUserSecurity
bör tabellen se ut ungefär som i följande exempel:Du kommer att se dessa användare i kommande uppgifter.
Gör sedan en inre koppling till
DimSalesTerritory
tabellen, som visar information om användarassocierad region. SQL-koden här gör den inre kopplingen, och bilden visar hur tabellen sedan visas.select b.SalesTerritoryCountry, b.SalesTerritoryRegion, a.EmployeeID, a.FirstName, a.LastName, a.UserName from [dbo].[DimUserSecurity] as a join [dbo].[DimSalesTerritory] as b on a.[SalesTerritoryID] = b.[SalesTerritoryKey]
Den anslutna tabellen visar vem som ansvarar för varje försäljningsregion tack vare relationen som skapades i steg 2. Du kan till exempel se att Rita Santos ansvarar för Australien.
Uppgift 2: Skapa tabellmodellen med fakta- och dimensionstabeller
När ditt relationsdatalager är på plats måste du definiera tabellmodellen. Du kan skapa modellen med SQL Server Data Tools (SSDT). Mer information finns i Skapa ett nytt tabellmodellprojekt.
Importera alla nödvändiga tabeller till modellen enligt nedan.
När du har importerat de nödvändiga tabellerna måste du definiera en roll som kallas SalesTerritoryUsers med läsbehörighet. Välj menyn Modell i SQL Server Data Tools och välj sedan Roller. I Rollhanteraren väljer du Ny.
Under Medlemmar i rollhanteraren lägger du till de användare som du definierade i
DimUserSecurity
tabellen i Uppgift 1.Lägg sedan till rätt funktioner för både
DimSalesTerritory
tabeller ochDimUserSecurity
tabeller enligt nedan under fliken Radfilter .Funktionen
LOOKUPVALUE
returnerar värden för en kolumn där Windows-användarnamnet matchar det somUSERNAME
funktionen returnerar. Du kan sedan begränsa frågor till var deLOOKUPVALUE
returnerade värdena matchar dem i samma eller relaterade tabell. I kolumnen DAX-filter skriver du följande formel:=DimSalesTerritory[SalesTerritoryKey]=LOOKUPVALUE(DimUserSecurity[SalesTerritoryID], DimUserSecurity[UserName], USERNAME(), DimUserSecurity[SalesTerritoryID], DimSalesTerritory[SalesTerritoryKey])
I den här formeln
LOOKUPVALUE
returnerar funktionen alla värden förDimUserSecurity[SalesTerritoryID]
kolumnen, därDimUserSecurity[UserName]
är samma som det aktuella inloggade Windows-användarnamnetDimSalesTerritory[SalesTerritoryKey]
ochDimUserSecurity[SalesTerritoryID]
är samma som .Viktigt!
När du använder säkerhet på radnivå stöds inte DAX-funktionen USERELATIONSHIP .
Uppsättningen med försäljningsreturer
SalesTerritoryKey
LOOKUPVALUE
används sedan för att begränsa raderna som visas iDimSalesTerritory
. Endast rader där värdetSalesTerritoryKey
finns i de ID:n somLOOKUPVALUE
funktionen returnerar visas.DimUserSecurity
Lägg till följande formel i kolumnen DAX-filter för tabellen:=FALSE()
Den här formeln anger att alla kolumner matchas till , vilket innebär
DimUserSecurity
attfalse
tabellkolumner inte kan frågas.
Nu måste du bearbeta och distribuera modellen. Mer information finns i Distribuera.
Uppgift 3: Lägga till datakällor i din lokala datagateway
När din tabellmodell har distribuerats och är redo för förbrukning måste du lägga till en datakällanslutning till din lokala Analysis Services-tabellserver.
För att ge Power BI-tjänst åtkomst till din lokala analystjänst behöver du en lokal datagateway installerad och konfigurerad i din miljö.
När gatewayen är korrekt konfigurerad måste du skapa en datakällaanslutning för din Analysis Services-tabellinstans . Mer information finns i Hantera din datakälla – Analysis Services.
När den här proceduren är klar är gatewayen konfigurerad och redo att interagera med din lokala Analysis Services-datakälla.
Uppgift 4: Skapa en rapport baserat på analysis services-tabellmodellen med Power BI Desktop
Starta Power BI Desktop och välj Hämta datadatabas>.
I listan över datakällor väljer du SQL Server Analysis Services-databasen och väljer Anslut.
Fyll i information om analysis services-tabellinstansen och välj Anslut live. Välj sedan OK.
Med Power BI fungerar dynamisk säkerhet endast med en live-anslutning.
Du kan se att den distribuerade modellen finns i Analysis Services-instansen. Välj respektive modell och välj sedan OK.
Power BI Desktop visar nu alla tillgängliga fält till höger om arbetsytan i fönstret Fält .
I fönstret Fält väljer du måttet SalesAmount från tabellen FactInternetSales och dimensionen SalesTerritoryRegion från tabellen SalesTerritory .
För att hålla den här rapporten enkel lägger vi inte till fler kolumner just nu. Om du vill ha en mer meningsfull datarepresentation ändrar du visualiseringen till Ringdiagram.
När rapporten är klar kan du publicera den direkt till Power BI-portalen. I menyfliksområdet Start i Power BI Desktop väljer du Publicera.
Uppgift 5: Skapa och dela en instrumentpanel
Du har skapat rapporten och publicerat den till Power BI-tjänsten . Nu kan du använda exemplet som skapades i föregående steg för att demonstrera modellsäkerhetsscenariot.
I rollen som Sales Manager kan användaren Grace se data från alla olika försäljningsregioner. Grace skapar den här rapporten och publicerar den till Power BI-tjänst. Den här rapporten skapades i föregående uppgifter.
När Grace publicerar rapporten är nästa steg att skapa en instrumentpanel i Power BI-tjänst med namnet TabularDynamicSec baserat på rapporten. I följande bild ser du att Grace kan se de data som motsvarar alla försäljningsregioner.
Nu delar Grace instrumentpanelen med en kollega, Rita, som ansvarar för försäljningen i Australien-regionen.
När Rita loggar in på Power BI-tjänst och visar den delade instrumentpanelen som Grace skapade visas endast försäljning från Australien-regionen.
Grattis! Power BI-tjänst visar den dynamiska säkerhet på radnivå som definierats i den lokala Analysis Services-tabellmodellen. Power BI använder EffectiveUserName
egenskapen för att skicka den aktuella Power BI-användarautentiseringsuppgiften till den lokala datakällan för att köra frågorna.
Uppgift 6: Förstå vad som händer i bakgrunden
Den här uppgiften förutsätter att du är bekant med SQL Server Profiler, eftersom du behöver samla in en SQL Server profiler-spårning på din lokala SSAS-tabellinstans.
Sessionen initieras så snart användaren Rita kommer åt instrumentpanelen i Power BI-tjänst. Du kan se att rollen salesterritoryusers får en omedelbar effekt med det effektiva användarnamnet som <EffectiveUserName>rita@contoso.com</EffectiveUserName>
<PropertyList><Catalog>DefinedSalesTabular</Catalog><Timeout>600</Timeout><Content>SchemaData</Content><Format>Tabular</Format><AxisFormat>TupleFormat</AxisFormat><BeginRange>-1</BeginRange><EndRange>-1</EndRange><ShowHiddenCubes>false</ShowHiddenCubes><VisualMode>0</VisualMode><DbpropMsmdFlattened2>true</DbpropMsmdFlattened2><SspropInitAppName>PowerBI</SspropInitAppName><SecuredCellValue>0</SecuredCellValue><ImpactAnalysis>false</ImpactAnalysis><SQLQueryMode>Calculated</SQLQueryMode><ClientProcessID>6408</ClientProcessID><Cube>Model</Cube><ReturnCellProperties>true</ReturnCellProperties><CommitTimeout>0</CommitTimeout><ForceCommitTimeout>0</ForceCommitTimeout><ExecutionMode>Execute</ExecutionMode><RealTimeOlap>false</RealTimeOlap><MdxMissingMemberMode>Default</MdxMissingMemberMode><DisablePrefetchFacts>false</DisablePrefetchFacts><UpdateIsolationLevel>2</UpdateIsolationLevel><DbpropMsmdOptimizeResponse>0</DbpropMsmdOptimizeResponse><ResponseEncoding>Default</ResponseEncoding><DirectQueryMode>Default</DirectQueryMode><DbpropMsmdActivityID>4ea2a372-dd2f-4edd-a8ca-1b909b4165b5</DbpropMsmdActivityID><DbpropMsmdRequestID>2313cf77-b881-015d-e6da-eda9846d42db</DbpropMsmdRequestID><LocaleIdentifier>1033</LocaleIdentifier><EffectiveUserName>rita@contoso.com</EffectiveUserName></PropertyList>
Baserat på den effektiva begäran om användarnamn konverterar Analysis Services begäran till den faktiska contoso\rita
autentiseringsuppgiften efter att ha frågat den lokala Active Directory. När Analysis Services hämtar autentiseringsuppgifterna returnerar Analysis Services de data som användaren har behörighet att visa och komma åt.
Om mer aktivitet inträffar med instrumentpanelen ser du med SQL Profiler en specifik fråga som kommer tillbaka till Analysis Services-tabellmodellen som en DAX-fråga. Om Rita till exempel går från instrumentpanelen till den underliggande rapporten inträffar följande fråga.
Du kan också se under DAX-frågan som körs för att fylla i rapportdata.
EVALUATE
ROW(
"SumEmployeeKey", CALCULATE(SUM(Employee[EmployeeKey]))
)
<PropertyList xmlns="urn:schemas-microsoft-com:xml-analysis">``
<Catalog>DefinedSalesTabular</Catalog>
<Cube>Model</Cube>
<SspropInitAppName>PowerBI</SspropInitAppName>
<EffectiveUserName>rita@contoso.com</EffectiveUserName>
<LocaleIdentifier>1033</LocaleIdentifier>
<ClientProcessID>6408</ClientProcessID>
<Format>Tabular</Format>
<Content>SchemaData</Content>
<Timeout>600</Timeout>
<DbpropMsmdRequestID>8510d758-f07b-a025-8fb3-a0540189ff79</DbpropMsmdRequestID>
<DbPropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbPropMsmdActivityID>
<ReturnCellProperties>true</ReturnCellProperties>
<DbpropMsmdFlattened2>true</DbpropMsmdFlattened2>
<DbpropMsmdActivityID>f2dbe8a3-ef51-4d70-a879-5f02a502b2c3</DbpropMsmdActivityID>
</PropertyList>
Att tänka på
Lokal säkerhet på radnivå med Power BI är endast tillgängligt med live-anslutning.
Ändringar i data efter bearbetning av modellen blir omedelbart tillgängliga för användare som kommer åt rapporten med live-anslutning från Power BI-tjänst.