Implementere sikkerhet på radnivå i en lokal Analysis Services-tabellmodell

Denne opplæringen bruker en semantisk eksempelmodell til å arbeide gjennom trinnene nedenfor, og viser deg hvordan du implementerer sikkerhet på radnivå i en lokal Analysis Services-tabellmodell og bruker den i en Power BI-rapport.

  • Opprette en ny sikkerhetstabell i AdventureworksDW2012-databasen
  • Bygg tabellmodellen med nødvendige fakta- og dimensjonstabeller
  • Definer brukerroller og tillatelser
  • Distribuer modellen til en tabellforekomst i Analysis Services
  • Bygg en Power BI Desktop-rapport som viser data som er skreddersydd for brukeren som får tilgang til rapporten
  • Distribuer rapporten til Power Bi-tjeneste
  • Opprette et nytt instrumentbord basert på rapporten
  • Dele instrumentbordet med kollegene dine

Denne opplæringen krever AdventureworksDW2012-databasen.

Oppgave 1: Opprette brukersikkerhetstabellen og definere datarelasjon

Du finner mange artikler som beskriver hvordan du definerer dynamisk sikkerhet på radnivå med tabellmodellen SQL Server Analysis Services (SSAS ).

Fremgangsmåten her krever bruk av relasjonsdatabasen AdventureworksDW2012.

  1. Opprett tabellen som vist nedenfor i DimUserSecurity AdventureworksDW2012. Du kan bruke SQL Server Management Studio (SSMS) til å opprette tabellen.

    Opprett DimUserSecurity-tabell

  2. Når du har opprettet og lagret tabellen, må du etablere relasjonen mellom DimUserSecurity tabellens SalesTerritoryID kolonne og DimSalesTerritory tabellens SalesTerritoryKey kolonne, som vist nedenfor.

    Høyreklikk DimUserSecurity i SSMS, og velg Utforming. Velg deretter Tabell Formgivning> Relationships.... Når du er ferdig, lagrer du tabellen.

    Sekundærnøkkelrelasjoner

  3. Legg til brukere i tabellen. Høyreklikk DimUserSecurity , og velg Rediger de 200 øverste radene. Når du har lagt til brukere, DimUserSecurity skal tabellen være lik følgende eksempel:

    DimUserSecurity-tabell med eksempelbrukere

    Du vil se disse brukerne i kommende oppgaver.

  4. Deretter gjør du en indre sammenføyning med DimSalesTerritory tabellen, som viser brukerens tilknyttede områdedetaljer. SQL-koden her gjør den indre sammenføyningen, og bildet viser hvordan tabellen deretter vises.

    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 sammenføyde tabellen viser hvem som er ansvarlig for hvert salgsområde, takket være relasjonen som ble opprettet i trinn 2. Du kan for eksempel se at Rita Santos er ansvarlig for Australia.

Oppgave 2: Opprette tabellmodellen med fakta- og dimensjonstabeller

Når relasjonsdatalageret er på plass, må du definere tabellmodellen. Du kan opprette modellen ved hjelp av SQL Server Data Tools (SSDT). Hvis du vil ha mer informasjon, kan du se Opprette et nytt tabellmodellprosjekt.

  1. Importer alle nødvendige tabeller til modellen som vist nedenfor.

    Importert SQL Server for bruk med dataverktøy

  2. Når du har importert de nødvendige tabellene, må du definere en rolle kalt SalesTerritoryUsers med lesetillatelse. Velg Modell-menyen i SQL Server-dataverktøy, og velg deretter Roller. Velg Ny i Rollebehandling.

  3. Legg til brukerne du definerte i tabellen i Oppgave 1, under Medlemmer i DimUserSecurityrollebehandling.

    Legg til brukere i Rollebehandling

  4. Deretter legger du til de riktige funksjonene for begge DimSalesTerritory og DimUserSecurity tabeller, som vist nedenfor under Radfiltre-fanen .

    Legge til funksjoner i radfiltre

  5. Funksjonen LOOKUPVALUE returnerer verdier for en kolonne der Windows-brukernavnet samsvarer med den USERNAME funksjonen returnerer. Deretter kan du begrense spørringer til hvor de LOOKUPVALUE returnerte verdiene samsvarer med de i samme eller relaterte tabell. Skriv inn følgende formel i DAX-filterkolonnen:

        =DimSalesTerritory[SalesTerritoryKey]=LOOKUPVALUE(DimUserSecurity[SalesTerritoryID], DimUserSecurity[UserName], USERNAME(), DimUserSecurity[SalesTerritoryID], DimSalesTerritory[SalesTerritoryKey])
    

    I denne formelen LOOKUPVALUE returnerer funksjonen alle verdier for DimUserSecurity[SalesTerritoryID] kolonnen, der den DimUserSecurity[UserName] er den samme som gjeldende påloggede Windows-brukernavn, og DimUserSecurity[SalesTerritoryID] er den samme som DimSalesTerritory[SalesTerritoryKey].

    Viktig

    Når du bruker sikkerhet på radnivå, støttes ikke DAX-funksjonen USERELATIONSHIP .

    Settet med salgsreturer SalesTerritoryKeyLOOKUPVALUE brukes deretter til å begrense radene som vises i DimSalesTerritory. Bare rader der SalesTerritoryKey verdien er i ID-ene som LOOKUPVALUE funksjonen returnerer, vises.

  6. DimUserSecurity Legg til følgende formel i DAX Filter-kolonnen for tabellen:

        =FALSE()
    

    Denne formelen angir at alle kolonnene løses til false, noe som betyr at DimUserSecurity tabellkolonner ikke kan spørres.

Nå må du behandle og distribuere modellen. Hvis du vil ha mer informasjon, kan du se Distribuer.

Oppgave 3: Legge til datakilder i den lokale datagatewayen

Når tabellmodellen er distribuert og klar til bruk, må du legge til en datakildetilkobling på den lokale Analysis Services-tabellserveren.

  1. Hvis du vil gi Power Bi-tjeneste tilgang til den lokale analysetjenesten, trenger du en lokal datagateway installert og konfigurert i miljøet ditt.

  2. Når gatewayen er riktig konfigurert, må du opprette en datakildetilkobling for tabellforekomsten i Analysis Services . Hvis du vil ha mer informasjon, kan du se Administrere datakilden – Analysis Services.

    Opprett datakildetilkobling

Når denne prosedyren er fullført, er gatewayen konfigurert og klar til å samhandle med den lokale Analysis Services-datakilden.

Oppgave 4: Opprett rapport basert på tabellmodell for analysetjenester ved hjelp av Power BI Desktop

  1. Start Power BI Desktop, og velg Hent datadatabase>.

  2. Velg SQL Server Analysis Services-databasen fra datakildelisten, og velg Koble til.

    Koble til til SQL Server Analysis Services-database

  3. Fyll ut tabellforekomstdetaljene for Analysis Services, og velg Koble til live. Velg deretter OK.

    Analysis Services-detaljer

    Med Power BI fungerer dynamisk sikkerhet bare med en live-tilkobling.

  4. Du kan se at den distribuerte modellen er i Analysis Services-forekomsten. Velg den respektive modellen, og velg deretter OK.

    Power BI Desktop viser nå alle tilgjengelige felt til høyre for lerretet i Felter-ruten .

  5. Velg SalesAmount-målet fra FactInternetSales-tabellen og SalesTerritoryRegion-dimensjonen fra SalesTerritory-tabellen i Felt-ruten.

  6. Hvis du vil gjøre denne rapporten enkel, legger vi ikke til flere kolonner akkurat nå. Hvis du vil ha en mer meningsfylt datapresentasjon, endrer du visualiseringen til hjuldiagram.

    Visualisering av hjuldiagram

  7. Når rapporten er klar, kan du publisere den direkte til Power BI-portalen. Velg Publiser på Hjem-båndet i Power BI Desktop.

Oppgave 5: Opprette og dele et instrumentbord

Du har opprettet rapporten og publisert den til Power BI-tjenesten . Nå kan du bruke eksemplet som ble opprettet i tidligere trinn for å demonstrere modellsikkerhetsscenarioet.

I rollen som salgssjef kan brukeren Grace se data fra alle de forskjellige salgsområdene. Grace oppretter denne rapporten og publiserer den til Power Bi-tjeneste. Denne rapporten ble opprettet i de forrige oppgavene.

Når Grace publiserer rapporten, er neste trinn å opprette et instrumentbord i Power Bi-tjeneste kalt TabularDynamicSec basert på rapporten. Legg merke til at Grace kan se dataene som tilsvarer hele salgsområdet, på bildet nedenfor.

Power Bi-tjeneste instrumentbord

Nå deler Grace instrumentbordet med en kollega, Rita, som er ansvarlig for salg i Australia-regionen.

Dele et Power BI-instrumentbord

Når Rita logger på Power Bi-tjeneste og viser det delte instrumentbordet som Grace opprettet, er bare salg fra Australia-regionen synlig.

Gratulerer! Den Power Bi-tjeneste viser den dynamiske sikkerhet på radnivå som er definert i den lokale analysis services-tabellmodellen. Power BI bruker EffectiveUserName egenskapen til å sende gjeldende Power BI-brukerlegitimasjon til den lokale datakilden for å kjøre spørringene.

Oppgave 6: Forstå hva som skjer bak kulissene

Denne oppgaven forutsetter at du er kjent med SQL Server Profiler, siden du må registrere en SQL Server profiler-sporing på den lokale SSAS-tabellforekomsten.

Økten blir initialisert så snart brukeren, Rita, får tilgang til instrumentbordet i Power Bi-tjeneste. Du kan se at salesterritoryusers-rollen trer i kraft umiddelbart med det effektive brukernavnet 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>

Basert på den effektive brukernavnforespørselen konverterer Analysis Services forespørselen til den faktiske contoso\rita legitimasjonen etter spørring av den lokale Active Directory. Når Analysis Services får legitimasjonen, returnerer Analysis Services dataene brukeren har tillatelse til å vise og få tilgang til.

Hvis det oppstår mer aktivitet med instrumentbordet, vil du med SQL Profiler se en bestemt spørring som kommer tilbake til Analysis Services-tabellmodellen som en DAX-spørring. Hvis Rita for eksempel går fra instrumentbordet til den underliggende rapporten, forekommer følgende spørring.

DAX-spørring kommer tilbake til Analysis Services-modellen

Du kan også se under DAX-spørringen som utføres for å fylle ut 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>

Vurderinger

  • Lokal sikkerhet på radnivå med Power BI er bare tilgjengelig med live-tilkobling.

  • Eventuelle endringer i dataene etter behandling av modellen vil være umiddelbart tilgjengelig for brukerne som får tilgang til rapporten med live-tilkobling fra Power Bi-tjeneste.