Şirket içi Analysis Services tablolu modelinde satır düzeyi güvenlik uygulama

Aşağıdaki adımları uygulamak için örnek bir anlam modeli kullanan bu öğreticide, şirket içi Analysis Services Tablolu Modeli'nde satır düzeyi güvenlik uygulama ve bunu Power BI raporunda kullanma adımları gösterilmektedir.

  • AdventureworksDW2012 veritabanında yeni bir güvenlik tablosu oluşturma
  • Tablosal modeli gerekli olgu ve boyut tablolarıyla oluşturma
  • Kullanıcı rollerini ve izinlerini tanımlama
  • Modeli Analysis Services tablolu örneğine dağıtma
  • Rapora erişen kullanıcıya göre uyarlanmış verileri görüntüleyen bir Power BI Desktop raporu oluşturma
  • Raporu Power BI hizmeti dağıtma
  • Raporu temel alan yeni bir pano oluşturma
  • Panoyu iş arkadaşlarınızla paylaşma

Bu öğretici adventureworksDW2012 veritabanını gerektirir.

1. Görev: Kullanıcı güvenlik tablosunu oluşturma ve veri ilişkisini tanımlama

SQL Server Analysis Services (SSAS) tablolu modeliyle satır düzeyi dinamik güvenliği tanımlamayı açıklayan birçok makale bulabilirsiniz.

Buradaki adımlar AdventureworksDW2012 ilişkisel veritabanının kullanılmasını gerektirir.

  1. AdventureworksDW2012'de tabloyu aşağıda gösterildiği gibi oluşturun DimUserSecurity . Tabloyu oluşturmak için SQL Server Management Studio'yu (SSMS) kullanabilirsiniz.

    Create DimUserSecurity table

  2. Tabloyu oluşturup kaydettikten sonra, aşağıda gösterildiği gibi tablonun sütunuyla DimSalesTerritory tablo SalesTerritoryIDSalesTerritoryKey sütunu arasında DimUserSecurity ilişki kurmanız gerekir.

    SSMS'de DimUserSecurity'ye sağ tıklayın ve Tasarım'ı seçin. Ardından Tablo Tasarım Aracı> Relationships... öğesini seçin. İşiniz bittiğinde tabloyu kaydedin.

    Foreign Key Relationships

  3. Tabloya kullanıcı ekleyin. DimUserSecurity'ye sağ tıklayın ve İlk 200 Satırı Düzenle'yi seçin. Kullanıcıları ekledikten sonra tablo DimUserSecurity aşağıdaki örneğe benzer şekilde görünmelidir:

    DimUserSecurity table with example users

    Bu kullanıcıları gelecek görevlerde göreceksiniz.

  4. Ardından, kullanıcıyla ilişkili bölge ayrıntılarını gösteren tabloyla DimSalesTerritorybirleşim yapın. Buradaki SQL kodu iç birleşimi yapar ve görüntüde tablonun nasıl göründüğü gösterilir.

    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]
    

    Birleştirilen tablo, 2. Adımda oluşturulan ilişki sayesinde her satış bölgesinden kimin sorumlu olduğunu gösterir. Örneğin, Rita Santos'un Avustralya'dan sorumlu olduğunu görebilirsiniz.

2. Görev: Olgular ve boyut tabloları ile tablosal model oluşturma

İlişkisel veri ambarınız hazır olduktan sonra tablosal modeli tanımlamanız gerekir. modeli SQL Server Veri Araçları (SSDT) kullanarak oluşturabilirsiniz. Daha fazla bilgi için bkz . Yeni Tablosal Model Projesi Oluşturma.

  1. Gerekli tüm tabloları aşağıda gösterildiği gibi modele aktarın.

    Imported SQL Server for use with data tools

  2. Gerekli tabloları içeri aktardıktan sonra Okuma iznine sahip SalesTerritoryUsers adlı bir rol tanımlamanız gerekir. SQL Server Veri Araçları'da Model menüsünü ve ardından Roller'i seçin. Rol Yöneticisi'nde Yeni'yi seçin.

  3. Rol Yöneticisi'ndeki Üyeler'in altında, Görev 1'deki DimUserSecuritytabloda tanımladığınız kullanıcıları ekleyin.

    Add users in Role Manager

  4. Ardından, aşağıda Satır Filtreleri sekmesinde gösterildiği gibi hem hem de DimSalesTerritoryDimUserSecurity tablolar için uygun işlevleri ekleyin.

    Add functions to Row Filters

  5. İşlev, LOOKUPVALUE Windows kullanıcı adının işlevin döndürdüğü adla eşleşdiği bir sütunun USERNAME değerlerini döndürür. Ardından sorguları, döndürülen değerlerin LOOKUPVALUE aynı veya ilişkili tablodaki değerlerle eşleştiği yerle kısıtlayabilirsiniz. DAX Filtresi sütununa aşağıdaki formülü yazın:

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

    Bu formülde LOOKUPVALUE işlev, sütunun DimUserSecurity[SalesTerritoryID] tüm değerlerini döndürür. Burada DimUserSecurity[UserName] , geçerli Windows kullanıcı adıyla aynıdır ve DimUserSecurity[SalesTerritoryID] ile aynıdır DimSalesTerritory[SalesTerritoryKey].

    Önemli

    Satır düzeyi güvenlik kullanılırken USERELATIONSHIP DAX işlevi desteklenmez.

    Satış'ın SalesTerritoryKeyLOOKUPVALUE iadeleri kümesi daha sonra içinde DimSalesTerritorygösterilen satırları kısıtlamak için kullanılır. Yalnızca işlevin SalesTerritoryKey döndürdüğü kimliklerde değerin LOOKUPVALUE bulunduğu satırlar görüntülenir.

  6. Tablo için DimUserSecurity , DAX Filtresi sütununa aşağıdaki formülü ekleyin:

        =FALSE()
    

    Bu formül, tüm sütunların olarak çözümlendiğini falsebelirtir; yani DimUserSecurity tablo sütunları sorgulanamaz.

Şimdi modeli işlemeniz ve dağıtmanız gerekir. Daha fazla bilgi için bkz . Dağıtma.

3. Görev: Şirket içi veri ağ geçidinize Veri Kaynakları ekleme

Tablosal modeliniz dağıtıldıktan ve kullanıma hazır olduktan sonra, şirket içi Analysis Services tablolu sunucunuza bir veri kaynağı bağlantısı eklemeniz gerekir.

  1. şirket içi analiz hizmetinize Power BI hizmeti erişimine izin vermek için ortamınızda yüklü ve yapılandırılmış bir şirket içi veri ağ geçidine sahip olmanız gerekir.

  2. Ağ geçidi doğru yapılandırıldıktan sonra Analysis Services tablolu örneğiniz için bir veri kaynağı bağlantısı oluşturmanız gerekir. Daha fazla bilgi için bkz . Veri kaynağınızı yönetme - Analysis Services.

    Create data source connection

Bu yordam tamamlandıktan sonra ağ geçidi yapılandırılır ve şirket içi Analysis Services veri kaynağınızla etkileşime hazırdır.

4. Görev: Power BI desktop kullanarak analysis services tablolu modelini temel alan rapor oluşturma

  1. Power BI Desktop'ı başlatın ve Veri>veritabanı al'ı seçin.

  2. Veri kaynakları listesinden SQL Server Analysis Services Veritabanı'nı ve Bağlan seçin.

    Connect to SQL Server Analysis Services Database

  3. Analysis Services tablosal örnek ayrıntılarınızı doldurun ve canlı Bağlan seçin. Ardından Tamam'ı seçin.

    Analysis Services details

    Power BI ile dinamik güvenlik yalnızca canlı bağlantıyla çalışır.

  4. Dağıtılan modelin Analysis Services örneğinde olduğunu görebilirsiniz. İlgili modeli ve ardından Tamam'ı seçin.

    Power BI Desktop artık kullanılabilir tüm alanları Alanlar bölmesinde tuvalin sağında görüntüler.

  5. Alanlar bölmesinde FactInternetSales tablosundan SalesAmount ölçüsünü ve SalesTerritory tablosundan SalesTerritoryRegion boyutunu seçin.

  6. Bu raporu basit tutmak için şu anda başka sütun eklemeyeceğiz. Daha anlamlı bir veri gösterimi elde etmek için görselleştirmeyi Halka grafik olarak değiştirin.

    Donut chart visualization

  7. Raporunuz hazır olduğunda, raporu doğrudan Power BI portalında yayımlayabilirsiniz. Power BI Desktop'taki Giriş şeridinde Yayımla'yı seçin.

5. Görev: Pano oluşturma ve paylaşma

Raporu oluşturdunuz ve Power BI hizmetinde yayımladınız. Artık model güvenlik senaryolarını göstermek için önceki adımlarda oluşturulan örneği kullanabilirsiniz.

Kullanıcı Grace, Sales Manager rolünde tüm farklı satış bölgelerindeki verileri görebilir. Grace bu raporu oluşturur ve Power BI hizmeti yayımlar. Bu rapor önceki görevlerde oluşturuldu.

Grace raporu yayımladıktan sonra, sonraki adım Power BI hizmeti bu raporu temel alan TabularDynamicSec adlı bir pano oluşturmaktır. Aşağıdaki görüntüde Grace'in tüm satış bölgelerine karşılık gelen verileri görebildiğine dikkat edin.

Power BI service dashboard

Grace şimdi panoyu Avustralya bölgesi satışları sorumlusu olan rita adlı iş arkadaşı ile paylaşıyor.

Share a Power BI dashboard

Rita Power BI hizmeti oturum açtığında ve Grace'in oluşturduğu paylaşılan panoyu görüntülediğinde, yalnızca Avustralya bölgesinden gelen satışlar görünür.

Tebrikler! Power BI hizmeti, şirket içi Analysis Services tablolu modelinde tanımlanan dinamik satır düzeyi güvenliği gösterir. Power BI, sorguları çalıştırmak üzere geçerli Power BI kullanıcı kimlik bilgilerini şirket içi veri kaynağına göndermek için özelliğini kullanır EffectiveUserName .

6. Görev: Arka planda neler olduğunu anlama

Bu görev, şirket içi SSAS tablolu örneğinizde bir SQL Server profil oluşturucu izlemesi yakalamanız gerektiğinden SQL Server Profiler hakkında bilgi sahibi olduğunuzu varsayar.

Kullanıcı Rita Power BI hizmeti panoya eriştiğinde oturum başlatılır. Salesterritoryusers rolünün etkin kullanıcı adıyla hemen etkilendiğini görebilirsiniz.<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>

Etkin kullanıcı adı isteğine bağlı olarak Analysis Services, yerel Active Directory'yi sorguladıktan sonra isteği gerçek contoso\rita kimlik bilgilerine dönüştürür. Analysis Services kimlik bilgilerini aldıktan sonra Analysis Services, kullanıcının görüntüleme ve erişim iznine sahip olduğu verileri döndürür.

Panoda daha fazla etkinlik gerçekleşirse SQL Profiler ile Analysis Services tablolu modeline DAX sorgusu olarak geri dönen belirli bir sorgu görürsünüz. Örneğin Rita panodan temel alınan rapora geçerse aşağıdaki sorgu gerçekleşir.

DAX query comes back to Analysis Services model

Rapor verilerini doldurmak için yürütülen DAX sorgusunun altında da görebilirsiniz.

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>

Dikkat edilmesi gereken noktalar

  • Power BI ile şirket içi satır düzeyi güvenlik yalnızca canlı bağlantıyla kullanılabilir.

  • Modeli işledikten sonra verilerde yapılan tüm değişiklikler, rapora Power BI hizmeti canlı bağlantıyla erişen kullanıcılar tarafından hemen kullanılabilir.