Implementácia zabezpečenia na úrovni riadkov v tabuľkovom modeli služby Analysis ServicesImplement row-level security in an Analysis Services tabular model

Tento kurz používa vzorovú množinu údajov na vykonanie krokov uvedených nižšie a ukazuje, ako implementovať zabezpečenie na úrovni riadkovtabuľkovom modeli Analysis Services a ako ho použiť v zostave služby Power BI.Using a sample dataset to work through the steps below, this tutorial shows you how to implement row-level security in an Analysis Services Tabular Model and use it in a Power BI report.

  • Vytvorenie novej tabuľky zabezpečenia v databáze AdventureworksDW2012Create a new security table in the AdventureworksDW2012 database
  • vytvorenie tabuľkového modelu s potrebnými tabuľkami faktov a dimenzií,Build the tabular model with necessary fact and dimension tables
  • definovanie rolí používateľov a povolení,Define user roles and permissions
  • nasadenie modelu do tabuľkovej inštancie služby Analysis Services,Deploy the model to an Analysis Services tabular instance
  • vytvorenie zostavy aplikácie Power BI Desktop, ktorá zobrazuje údaje prispôsobené používateľovi, ktorý si zostavu prezerá,Build a Power BI Desktop report that displays data tailored to the user accessing the report
  • nasadenie zostavy v službe Power BI,Deploy the report to Power BI service
  • vytvorenie novej tabule na základe zostavy,Create a new dashboard based on the report
  • zdieľanie tabule so spolupracovníkmi.Share the dashboard with your coworkers

Tento kurz vyžaduje databázu AdventureworksDW2012.This tutorial requires the AdventureworksDW2012 database.

Úloha 1: Vytvorenie tabuľky zabezpečenia používateľa a definovanie vzťahov medzi údajmiTask 1: Create the user security table and define data relationship

Môžete nájsť mnoho článkov, v ktorých sa popisuje spôsob definovania dynamického zabezpečenia na úrovni riadkov pomocou tabuľkového modelu služby SQL Server Analysis Services (SSAS) .You can find many articles describing how to define row-level dynamic security with the SQL Server Analysis Services (SSAS) tabular model. Pre náš príklad použijeme článok Implementácia dynamického zabezpečenia pomocou filtrov riadkov.For our sample, we use Implement Dynamic Security by Using Row Filters.

Kroky v tomto postupe vyžadujú relačnú databázu AdventureworksDW2012.The steps here require using the AdventureworksDW2012 relational database.

  1. V databáze AdventureworksDW2012 DimUserSecurityvytvorte tabuľku tak, ako je to zobrazené nižšie.In AdventureworksDW2012, create the DimUserSecurity table as shown below. Na vytvorenie tabuľky môžete použiť nástroj SQL Server Management Studio (SSMS).You can use SQL Server Management Studio (SSMS) to create the table.

    Vytvorenie tabuľky DimUserSecurity

  2. Po vytvorení a uložení tabuľky je potrebné vytvoriť vzťah medzi stĺpcom SalesTerritoryID tabuľky DimUserSecurity a stĺpcom DimSalesTerritory tabuľky SalesTerritoryKey, ako je to znázornené nižšie.Once you create and save the table, you need to establish the relationship between the DimUserSecurity table's SalesTerritoryID column and the DimSalesTerritory table's SalesTerritoryKey column, as shown below.

    V nástroji SSMS kliknite pravým tlačidlom myši na tabuľkuDimUserSecurity a vyberte položku Návrh.In SSMS, right-click DimUserSecurity, and select Design. Potom vyberte položky Návrhár tabuľky > Vzťahy... . Keď skončíte, tabuľku uložte.Then select Table Designer > Relationships.... When done, save the table.

    Vzťahy cudzieho kľúča

  3. Pridajte používateľov do tabuľky.Add users to the table. Kliknite pravým tlačidlom myši na tabuľkuDimUserSecurity a vyberte položku Upraviť prvých 200 riadkov.Right-click DimUserSecurity and select Edit Top 200 Rows. Po pridaní používateľov by tabuľka DimUserSecurity mala vyzerať podobne ako v nasledujúcom príklade:Once you've added users, the DimUserSecurity table should appear similar to the following example:

    Tabuľka DimUserSecurity s príkladmi používateľov

    Týchto používateľov uvidíte v nadchádzajúcich úlohách.You'll see these users in upcoming tasks.

  4. Ďalej vykonajte vnútorné spojenie s tabuľkou DimSalesTerritory, v ktorej sú zobrazené podrobnosti oblasti priradené k používateľovi.Next, do an inner join with the DimSalesTerritory table, which shows the user associated region details. Tento kód SQL vykonáva vnútorné spojenie a obrázok znázorňuje, ako bude potom tabuľka vyzerať.The SQL code here does the inner join, and the image shows how the table then appears.

    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]
    

    Spojená tabuľka znázorňuje, kto je zodpovedný za jednotlivé oblasti predaja, vďaka vzťahom vytvoreným v kroku 2.The joined table shows who is responsible for each sales region, thanks to the relationship created in Step 2. Môžete napríklad vidieť, že Ján Kováč je zodpovedný za Austráliu.For example, you can see that Rita Santos is responsible for Australia.

Úloha 2: Vytvorenie tabuľkového modelu s tabuľkami faktov a dimenziíTask 2: Create the tabular model with facts and dimension tables

Keď je váš relačný sklad údajov pripravený, je potrebné definovať tabuľkový model.Once your relational data warehouse is in place, you need to define the tabular model. Model je možné vytvoriť pomocou nástrojov SQL Server Data Tools (SSDT).You can create the model using SQL Server Data Tools (SSDT). Ďalšie informácie nájdete v téme Vytvorenie nového projektu tabuľkového modelu.For more information, see Create a New Tabular Model Project.

  1. Vykonajte import všetkých potrebných tabuliek do modelu, ako je to zobrazené nižšie.Import all the necessary tables into the model as shown below.

    Importovaný server SQL Server na použitie s údajovými nástrojmi

  2. Po importovaní potrebných tabuliek musíte definovať rolu s názvom SalesTerritoryUsers s povolením na čítanie.Once you've imported the necessary tables, you need to define a role called SalesTerritoryUsers with Read permission. Vyberte ponuku Model v nástroji SQL Server Data Tools a potom vyberte položku Roly.Select the Model menu in SQL Server Data Tools, and then select Roles. V dialógovom okneSprávca rolí vyberte položku Nové.In Role Manager, select New.

  3. Na karte Členovia v dialógovom okne Správca rolí pridajte používateľov, ktorých ste definovali v tabuľke DimUserSecurity v časti Úloha 1.Under Members in the Role Manager, add the users that you defined in the DimUserSecurity table in Task 1.

    Pridanie používateľov v dialógovom okne Správca rolí

  4. Ďalej pridajte správne funkcie pre tabuľky DimSalesTerritoryDimUserSecurity, ako je uvedené nižšie na karte Filtre riadkov.Next, add the proper functions for both DimSalesTerritory and DimUserSecurity tables, as shown below under Row Filters tab.

    Pridanie funkcií na karte Filtre riadkov

  5. V tomto kroku použijete funkciu LOOKUPVALUE na vrátenie hodnôt pre stĺpec, v ktorom meno používateľa v systéme Windows zodpovedá menu používateľa, ktoré vráti funkcia USERNAME.The LOOKUPVALUE function returns values for a column in which the Windows user name matches the one the USERNAME function returns. Potom môžete dotazy obmedziť na výsledky, kde sa hodnoty vrátené funkciou LOOKUPVALUE zhodujú s hodnotami v tej istej alebo súvisiacej tabuľke.You can then restrict queries to where the LOOKUPVALUE returned values match ones in the same or related table. V stĺpci Filter DAX zadajte nasledujúci vzorec:In the DAX Filter column, type the following formula:

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

    V tomto vzorci funkcia LOOKUPVALUE vráti všetky hodnoty pre stĺpec DimUserSecurity[SalesTerritoryID], kde parameter DimUserSecurity[UserName] je rovnaký ako meno aktuálne prihláseného používateľa Windowsu a parameter DimUserSecurity[SalesTerritoryID] je rovnaký ako parameter DimSalesTerritory[SalesTerritoryKey].In this formula, the LOOKUPVALUE function returns all values for the DimUserSecurity[SalesTerritoryID] column, where the DimUserSecurity[UserName] is the same as the current logged on Windows user name, and DimUserSecurity[SalesTerritoryID] is the same as the DimSalesTerritory[SalesTerritoryKey].

    Dôležité

    Keď sa používa zabezpečenie na úrovni riadkov, funkcia jazyka DAX USERELATIONSHIP nie je podporovaná.When using row-level security, the DAX function USERELATIONSHIP is not supported.

    Množina hodnôt predaja, ktorú vráti funkcia LOOKUPVALUE parametra SalesTerritoryKey, sa potom použije na obmedzenie riadkov zobrazených v parametri DimSalesTerritory.The set of Sales SalesTerritoryKey's LOOKUPVALUE returns is then used to restrict the rows shown in the DimSalesTerritory. Zobrazia sa len riadky s hodnotou SalesTerritoryKey v ID, ktoré vráti funkcia LOOKUPVALUE.Only rows where the SalesTerritoryKey value is in the IDs that the LOOKUPVALUE function returns are displayed.

  6. V prípade tabuľky DimUserSecurity v stĺpci filtra DAX pridajte tento vzorec:For the DimUserSecurity table, in the DAX Filter column, add the following formula:

        =FALSE()
    

    Tento vzorec určuje, že všetky stĺpce sa vyhodnotia na hodnotu false. To znamená, že stĺpce tabuľky DimUserSecurity nie je možné dotazovať.This formula specifies that all columns resolve to false; meaning DimUserSecurity table columns can't be queried.

Teraz je potrebné spracovať a nasadiť model.Now you need to process and deploy the model. Viac informácií nájdete v téme Nasadenie.For more information, see Deploy.

Úloha 3: Pridanie zdrojov údajov v rámci vašej lokálnej brány údajovTask 3: Add Data Sources within your On-premises data gateway

Keď je váš tabuľkový model nasadený a pripravený na používanie, je potrebné pridať pripojenie zdroja údajov k lokálnemu tabuľkovému serveru služby Analysis Services.Once your tabular model is deployed and ready for consumption, you need to add a data source connection to your on-premises Analysis Services tabular server.

  1. Ak chcete povoliť službe Power BI prístup k lokálnym službám analýzy, vo vašom prostredí musí byť nainštalovaná a nakonfigurovaná lokálna brána údajov.To allow the Power BI service access to your on-premises analysis service, you need an on-premises data gateway installed and configured in your environment.

  2. Keď je brána správne nakonfigurovaná, je potrebné vytvoriť pripojenie zdroja údajov pre vašu tabuľkovú inštanciu služby Analysis Services.Once the gateway is correctly configured, you need to create a data source connection for your Analysis Services tabular instance. Ďalšie informácie nájdete v téme Spravovanie zdroja údajov – Analysis Services.For more information, see Manage your data source - Analysis Services.

    Vytvorenie pripojenia k zdroju údajov

Keď je tento postup dokončený, brána je nakonfigurovaná a pripravená na prácu s lokálnym zdrojom údajov služby Analysis Services.With this procedure complete, the gateway is configured and ready to interact with your on-premises Analysis Services data source.

Úloha 4: Vytvorenie zostavy na základe tabuľkového modelu služby Analysis Services pomocou aplikácie Power BI DesktopTask 4: Create report based on analysis services tabular model using Power BI desktop

  1. Spustite aplikáciu Power BI Desktop a vyberte položku Získať údaje > Databáza.Start Power BI Desktop and select Get Data > Database.

  2. Zo zoznamu zdrojov údajov vyberte možnosť Databáza služby SQL Server Analysis Services a položku Pripojiť.From the data sources list, select the SQL Server Analysis Services Database and select Connect.

    Pripojenie k databáze služby SQL Server Analysis Services

  3. Vyplňte údaje tabuľkovej inštancie služby Analysis Services a vyberte položku Pripojiť naživo.Fill in your Analysis Services tabular instance details and select Connect live. Potom vyberte tlačidlo OK.Then select OK.

    Údaje v službe Analysis Services

    V službe Power BI funguje dynamické zabezpečenie iba s dynamickým pripojením.With Power BI, dynamic security works only with a live connection.

  4. Uvidíte, že nasadený model je v inštancii služby Analysis Services.You can see that the deployed model is in the Analysis Services instance. Vyberte príslušný model a potom stlačte tlačidlo OK.Select the respective model and then select OK.

    V aplikácii Power BI Desktop sa teraz zobrazia všetky dostupné polia napravo od plátna na table Polia.Power BI Desktop now displays all the available fields, to the right of the canvas in the Fields pane.

  5. Na table Polia vyberte mierku SalesAmount z tabuľky FactInternetSales a dimenziu SalesTerritoryRegion z tabuľky SalesTerritory.In the Fields pane, select the SalesAmount measure from the FactInternetSales table and the SalesTerritoryRegion dimension from the SalesTerritory table.

  6. Budeme sa snažiť zachovať túto zostavu jednoduchú, takže teraz nebudeme pridávať žiadne ďalšie stĺpce.To keep this report simple, we won't add any more columns right now. Ak chcete mať lepšie znázornenie údajov, zmeňte vizualizáciu na prstencový graf.To have a more meaningful data representation, change the visualization to Donut chart.

    Vizualizácia prstencového grafu

  7. Keď je vaša zostava pripravená, môžete ju publikovať priamo na portáli služby Power BI.Once your report is ready, you can directly publish it to the Power BI portal. Na páse s nástrojmi Domov v aplikácii Power BI Desktop vyberte položku Publikovať.From the Home ribbon in Power BI Desktop, select Publish.

Úloha 5: Vytvorenie a zdieľanie tabuleTask 5: Create and share a dashboard

Vytvorili ste zostavu a publikovali ste ju do služby Power BI.You've created the report and published it to the Power BI service. Teraz môžete použiť príklad, ktorý ste vytvorili v predchádzajúcich krokoch, na znázornenie scenára zabezpečenia modelu.Now you can use the example created in previous steps to demonstrate the model security scenario.

V rámci svojej roly môže manažér predaja môže používateľka Gabriela zobraziť údaje zo všetkých oblastí predaja.In the role as Sales Manager, the user Grace can see data from all the different sales regions. Gabriela vytvorí túto zostavu a publikuje ju do služby Power BI.Grace creates this report and publishes it to the Power BI service. Táto zostava bola vytvorená v predchádzajúcich úlohách.This report was created in the previous tasks.

Po publikovaní zostavy vytvorí Gabriela na jej základe tabuľu v službe Power BI s názvom TabularDynamicSec.Once Grace publishes the report, the next step is to create a dashboard in the Power BI service called TabularDynamicSec based on that report. Na nasledujúcom obrázku si všimnite, že Gabriela môže zobraziť údaje zodpovedajúce všetkým oblastiam predaja.In the following image, notice that Grace can see the data corresponding to all the sales region.

Tabuľa služby Power BI

Teraz Gabriela zdieľa tabuľu so svojím kolegom Jánom, ktorý je zodpovedný za predaj v Austrálii.Now Grace shares the dashboard with a colleague, Rita, who is responsible for the Australia region sales.

Zdieľanie tabule Power BI

Keď sa Ján prihlási do služby Power BI a zobrazí zdieľanú tabuľu, ktorú vytvorila Gabriela, mal by vidieť iba predaje z austrálskej oblasti.When Rita logs in to the Power BI service and views the shared dashboard that Grace created, only sales from the Australia region are visible.

Blahoželáme!Congratulations! Služba Power BI zobrazuje dynamické zabezpečenie na úrovni riadkov definované v lokálnom tabuľkovom modeli Analysis Services.The Power BI service shows the dynamic row-level security defined in the on-premises Analysis Services tabular model. Služba Power BI používa vlastnosť EffectiveUserName na odoslanie prihlasovacích údajov aktuálneho používateľa služby Power BI do lokálneho zdroja údajov na spustenie dotazov.Power BI uses the EffectiveUserName property to send the current Power BI user credential to the on-premises data source to run the queries.

Úloha 6: Informácie o tom, čo sa deje v zákulisíTask 6: Understand what happens behind the scenes

Pri tejto úlohe sa predpokladá, že ste oboznámení s rozhraním SQL Server Profiler, pretože je potrebné zaznamenať sledovanie pomocou rozhrania SQL Server Profiler vo vašej lokálnej tabuľkovej inštancii SSAS.This task assumes you're familiar with SQL Server Profiler, since you need to capture a SQL Server profiler trace on your on-premises SSAS tabular instance.

Relácia sa inicializuje hneď, ako používateľ Ján otvorí tabuľu v službe Power BI.The session gets initialized as soon as the user, Rita, accesses the dashboard in the Power BI service. Ako vidíte, rola salesterritoryusers je okamžite efektívna s aktuálne používaným menom používateľa rita@contoso.comYou can see that the salesterritoryusers role takes an immediate effect with the effective user name as rita@contoso.com

       <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>

Na základe požiadavky aktuálne používaného mena používateľa skonvertuje služba Analysis Services skutočné contoso\rita prihlasovacie údaje po dotazovaní lokálnej služby Active Directory.Based on the effective user name request, Analysis Services converts the request to the actual contoso\rita credential after querying the local Active Directory. Keď služba Analysis Services získa prihlasovacie údaje Analysis Services vráti údaje, ku ktorým má používateľ povolenie na zobrazenie a prístup.Once Analysis Services gets the credential, Analysis Services returns the data the user has permission to view and access.

Ak sa na tabuli vykonajú ďalšie činnosti, pomocou rozhrania SQL Profiler sa zobrazí konkrétny dotaz vracajúci sa do tabuľkového modelu služby Analysis Services ako dotaz jazyka DAX.If more activity occurs with the dashboard, with SQL Profiler you would see a specific query coming back to the Analysis Services tabular model as a DAX query. Napríklad ak Ján prejde z tabule na základnú zostavu, objaví sa nasledujúci dotaz.For example, if Rita goes from the dashboard to the underlying report, the following query occurs.

Dotaz jazyka DAX sa vráti k modelu služby Analysis Services

Nižšie môžete tiež vidieť dotaz DAX, ktorý po spustení vykoná vyplnenie údajov zostavy.You can also see below the DAX query that is getting executed to populate report data.

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>

Dôležité informácieConsiderations

  • Lokálne zabezpečenie na úrovni riadkov so službou Power BI je dostupné iba s dynamickým pripojením.On-premises row-level security with Power BI is only available with live connection.

  • Všetky zmeny v údajoch po spracovaní modelu by boli okamžite k dispozícii pre používateľov, ktorí pristupujú k zostave s dynamickým pripojením zo služby Power BI.Any changes in the data after processing the model would be immediately available for the users accessing the report with live connection from the Power BI service.