Ş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.
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.Tabloyu oluşturup kaydettikten sonra, aşağıda gösterildiği gibi tablonun sütunuyla
DimSalesTerritory
tabloSalesTerritoryID
SalesTerritoryKey
sütunu arasındaDimUserSecurity
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.
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:Bu kullanıcıları gelecek görevlerde göreceksiniz.
Ardından, kullanıcıyla ilişkili bölge ayrıntılarını gösteren tabloyla
DimSalesTerritory
iç birleş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.
Gerekli tüm tabloları aşağıda gösterildiği gibi modele aktarın.
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.
Rol Yöneticisi'ndeki Üyeler'in altında, Görev 1'deki
DimUserSecurity
tabloda tanımladığınız kullanıcıları ekleyin.Ardından, aşağıda Satır Filtreleri sekmesinde gösterildiği gibi hem hem de
DimSalesTerritory
DimUserSecurity
tablolar için uygun işlevleri ekleyin.İşlev,
LOOKUPVALUE
Windows kullanıcı adının işlevin döndürdüğü adla eşleşdiği bir sütununUSERNAME
değerlerini döndürür. Ardından sorguları, döndürülen değerlerinLOOKUPVALUE
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ütununDimUserSecurity[SalesTerritoryID]
tüm değerlerini döndürür. BuradaDimUserSecurity[UserName]
, geçerli Windows kullanıcı adıyla aynıdır veDimUserSecurity[SalesTerritoryID]
ile aynıdırDimSalesTerritory[SalesTerritoryKey]
.Önemli
Satır düzeyi güvenlik kullanılırken USERELATIONSHIP DAX işlevi desteklenmez.
Satış'ın
SalesTerritoryKey
LOOKUPVALUE
iadeleri kümesi daha sonra içindeDimSalesTerritory
gösterilen satırları kısıtlamak için kullanılır. Yalnızca işlevinSalesTerritoryKey
döndürdüğü kimliklerde değerinLOOKUPVALUE
bulunduğu satırlar görüntülenir.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
false
belirtir; yaniDimUserSecurity
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.
ş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.
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.
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
Power BI Desktop'ı başlatın ve Veri>veritabanı al'ı seçin.
Veri kaynakları listesinden SQL Server Analysis Services Veritabanı'nı ve Bağlan seçin.
Analysis Services tablosal örnek ayrıntılarınızı doldurun ve canlı Bağlan seçin. Ardından Tamam'ı seçin.
Power BI ile dinamik güvenlik yalnızca canlı bağlantıyla çalışır.
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.
Alanlar bölmesinde FactInternetSales tablosundan SalesAmount ölçüsünü ve SalesTerritory tablosundan SalesTerritoryRegion boyutunu seçin.
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.
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.
Grace şimdi panoyu Avustralya bölgesi satışları sorumlusu olan rita adlı iş arkadaşı ile paylaşıyor.
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.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin