Ekinlikler
31 Mar 23 - 2 Nis 23
Microsoft Fabric, Power BI, SQL ve yapay zeka topluluğu tarafından yönetilen nihai etkinlik. 31 Mart - 2 Nisan 2025.
Bugün kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Bu makale, Power BI Desktop ile çalışan bir veri modelleyicisi olarak sizi hedefler. Veri modellerinizde satır düzeyi güvenliği (RLS) zorunlu kılmaya yönelik iyi tasarım uygulamalarını açıklar.
RLS'nin tablo satırlarını filtrelediğinden anlamak önemlidir. Tablolar, sütunlar veya ölçüler dahil olmak üzere model nesnelerine erişimi kısıtlamak için yapılandırılamazlar.
Not
Bu makalede RLS veya nasıl ayarlanacağı açıklanmaktadır. Daha fazla bilgi için bkz . Power BI Desktop için satır düzeyi güvenlik (RLS) ile veri erişimini kısıtlama.
Ayrıca, Azure Analysis Services veya SQL Server Analysis Services ile dış barındırılan modellere canlı bağlantılarda RLS'yi zorunlu kılmayı kapsamaz. Bu gibi durumlarda RLS, Analysis Services tarafından zorlanır. Power BI çoklu oturum açma (SSO) kullanarak bağlandığında, Analysis Services RLS'yi zorlar (hesabın yönetici ayrıcalıkları olmadığı sürece).
Birden çok rol oluşturmak mümkündür. Tek bir rapor kullanıcısı için izin gereksinimlerini göz önünde bulundurduğunuzda, rapor kullanıcısının birden çok rolün üyesi olacağı bir tasarım yerine tüm bu izinleri veren tek bir rol oluşturmaya çalışın. Bunun nedeni, rapor kullanıcılarının doğrudan kendi kullanıcı hesabını kullanarak veya dolaylı olarak güvenlik grubu üyeliğiyle birden çok rolle eşlenebiliyor olmasıdır. Birden çok rol eşlemesi beklenmeyen sonuçlara neden olabilir.
Bir rapor kullanıcısı birden çok rollere atandığında RLS filtreleri eklenir. Bu, rapor kullanıcılarının bu filtrelerin birleşimini temsil eden tablo satırlarını görebileceği anlamına gelir. Dahası, bazı senaryolarda rapor kullanıcılarının tablodaki satırları görmediğini garanti etmek mümkün değildir. Bu nedenle, SQL Server veritabanı nesnelerine (ve diğer izin modellerine) uygulanan izinlerden farklı olarak, "bir kez reddedildi her zaman reddedildi" ilkesi geçerli değildir.
İki rolü olan bir model düşünün: Çalışanlar adlı ilk rol, aşağıdaki kural ifadesini kullanarak tüm Bordro tablosu satırlarına erişimi kısıtlar:
FALSE()
Not
Bir kural, ifadesi olarak değerlendirildiğinde FALSE
tablo satırı döndürmez.
Ancak, Yöneticiler adlı ikinci bir rol, aşağıdaki kural ifadesini kullanarak tüm Bordro tablosu satırlarına erişime izin verir:
TRUE()
Dikkatli olun: Rapor kullanıcısı her iki rolle de eşlenmişse tüm Bordro tablosu satırlarını görür.
RLS, her DAX sorgusuna otomatik olarak filtre uygulayarak çalışır ve bu filtrelerin sorgu performansı üzerinde olumsuz bir etkisi olabilir. Bu nedenle, verimli RLS iyi model tasarımına gelir. Aşağıdaki makalelerde açıklandığı gibi model tasarımı yönergelerini izlemek önemlidir:
Genel olarak, olgu türündeki tablolarda değil boyut türündeki tablolarda RLS filtrelerini zorunlu kılmak genellikle daha verimlidir. Ayrıca, RLS filtrelerinin diğer model tablolarına yayılmasını sağlamak için iyi tasarlanmış ilişkilere güvenin. RLS filtreleri yalnızca etkin ilişkiler aracılığıyla yayılır. Bu nedenle, model ilişkileri aynı sonucu elde edebilirken LOOKUPVALUE DAX işlevini kullanmaktan kaçının.
DirectQuery tablolarında RLS filtreleri uygulandığında ve diğer DirectQuery tablolarına ilişkin ilişkiler olduğunda kaynak veritabanını iyileştirin. Uygun dizinler tasarlamayı veya kalıcı hesaplanan sütunları kullanmayı içerebilir. Daha fazla bilgi için bkz . Power BI Desktop'ta DirectQuery modeli kılavuzu.
Performans Analizi kullanarak Power BI Desktop'ta RLS filtrelerinin performans etkisini ölçmek mümkündür. İlk olarak, RLS uygulanmadığında rapor görseli sorgu sürelerini belirleyin. Ardından, RLS'yi zorunlu kılmak ve sorgu sürelerini belirleyip karşılaştırmak için Modelleme şerit sekmesindeki Farklı Görüntüle komutunu kullanın.
Power BI'da yayımlandıktan sonra üyeleri anlam modeli rolleriyle eşlemeniz gerekir. Rollere yalnızca anlamsal model sahipleri veya çalışma alanı yöneticileri üye ekleyebilir. Daha fazla bilgi için bkz . Power BI ile satır düzeyi güvenlik (RLS) (Modelinizde güvenliği yönetme).
Üyeler kullanıcı hesapları, güvenlik grupları, dağıtım grupları veya posta etkin gruplar olabilir. Mümkün olduğunda güvenlik gruplarını anlam modeli rolleriyle eşlemenizi öneririz. Microsoft Entra Id'de güvenlik grubu üyeliklerini yönetmeyi içerir. Büyük olasılıkla görevi ağ yöneticilerinize devreder.
Modeli doğru filtrelediğinden emin olmak için her rolü test edin. Modelleme şerit sekmesindeki Farklı Görüntüle komutu kullanılarak kolayca yapılabilir.
ModelDE USERNAME DAX işlevini kullanan dinamik kurallar varsa beklenen ve beklenmeyen değerleri test ettiğinizden emin olun. Power BI içeriği eklerken (özellikle müşterileriniz için ekleme senaryolarını kullanarak) uygulama mantığı herhangi bir değeri etkili bir kimlik kullanıcı adı olarak geçirebilir. Mümkün olduğunda yanlışlıkla veya kötü amaçlı değerlerin satır döndürmeden filtrelere neden olduğundan emin olun.
Uygulamanın etkin kullanıcı adı olarak kullanıcının iş rolünü geçirdiği Power BI embedded'ı kullanan bir örnek düşünün: "Yönetici" veya "Çalışan". Yöneticiler tüm satırları görebilir, ancak çalışanlar yalnızca Tür sütun değerinin "İç" olduğu satırları görebilir.
Aşağıdaki kural ifadesi tanımlanır:
IF(
USERNAME() = "Worker",
[Type] = "Internal",
TRUE()
)
Bu kural ifadesiyle ilgili sorun, "Çalışan" dışındaki tüm değerlerin tüm tablo satırlarını döndürmesidir. Bu nedenle, yanlışlıkla "Wrker" gibi bir değer istemeden tüm tablo satırlarını döndürür. Bu nedenle, beklenen her değer için test eden bir ifade yazmak daha güvenlidir. Aşağıdaki geliştirilmiş kural ifadesinde, beklenmeyen bir değer tablonun satır döndürmesine neden olur.
IF(
USERNAME() = "Worker",
[Type] = "Internal",
IF(
USERNAME() = "Manager",
TRUE(),
FALSE()
)
)
Bazen hesaplamalar, RLS filtreleri tarafından kısıtlanmayan değerlere ihtiyaç duyar. Örneğin bir raporun, rapor kullanıcısının satış bölgesi için kazanılan gelirin kazanılmış tüm gelirlere göre oranını görüntülemesi gerekebilir.
Bir DAX ifadesinin RLS'yi geçersiz kılabilir olması mümkün olmasa da, aslında RLS'nin zorlandığını bile belirleyemez; bir özet model tablosu kullanabilirsiniz. Özet model tablosu "tüm bölgeler" için geliri almak üzere sorgulanır ve RLS filtreleri tarafından kısıtlanmaz.
Şimdi bu tasarım gereksinimini nasıl uygulayabileceğinizi görelim. İlk olarak aşağıdaki model tasarımını göz önünde bulundurun:
Model dört tablodan oluşur:
Aşağıdaki ifade SalesRevenueSummary hesaplanan tablosunu tanımlar:
SalesRevenueSummary =
SUMMARIZECOLUMNS(
Sales[OrderDate],
"RevenueAllRegion", SUM(Sales[Revenue])
)
Not
Toplama tablosu aynı tasarım gereksinimini elde edebilir.
Satış Temsilcisi tablosuna aşağıdaki RLS kuralı uygulanır:
[EmailAddress] = USERNAME()
Üç model ilişkisinin her biri aşağıdaki tabloda açıklanmıştır:
İlişki | Açıklama |
---|---|
Satış Temsilcisi ve Satış tabloları arasında çoka çok ilişki vardır. RLS kuralı, USERNAME DAX işlevini kullanarak gizli Satış Temsilcisi tablosunun EmailAddress sütununu filtreler. Bölge sütun değeri (rapor kullanıcısı için) Sales tablosuna yayılır. | |
Tarih ve Satış tabloları arasında bire çok ilişki vardır. | |
Date ve SalesRevenueSummary tabloları arasında bire çok ilişki vardır. |
Aşağıdaki ifade Revenue % All Region ölçüsünü tanımlar:
Revenue % All Region =
DIVIDE(
SUM(Sales[Revenue]),
SUM(SalesRevenueSummary[RevenueAllRegion])
)
Not
Hassas olguların açığa çıkarılmasını önlemeye dikkat edin. Bu örnekte yalnızca iki bölge varsa, rapor kullanıcısının diğer bölgenin gelirini hesaplaması mümkün olabilir.
Bazen RLS kullanmaktan kaçınmak mantıklıdır. Statik filtreler uygulayan yalnızca birkaç basit RLS kuralınız varsa, bunun yerine birden çok anlam modeli yayımlamayı göz önünde bulundurun. Her anlam modeli aynı veri izinlerine sahip belirli bir rapor kullanıcı kitlesine ait veriler içerdiğinden, anlam modellerinin hiçbiri rolleri tanımlamaz. Ardından, hedef kitle başına bir çalışma alanı oluşturun ve çalışma alanına veya uygulamaya erişim izinleri atayın.
Örneğin, yalnızca iki satış bölgesi olan bir şirket, her satış bölgesi için farklı çalışma alanlarına bir anlam modeli yayımlamaya karar verir. Anlamsal modeller RLS'yi zorlamaz. Ancak, kaynak verileri filtrelemek için sorgu parametrelerini kullanırlar. Bu şekilde, her çalışma alanında aynı model yayımlanır; bunlar yalnızca farklı anlam modeli parametre değerlerine sahiptir. Satış temsilcilerine çalışma alanlarından (veya yayımlanan uygulamalardan) yalnızca birine erişim atanır.
RLS'yi önlemenin çeşitli avantajları vardır:
Ancak RLS'yi önlemenin dezavantajları vardır:
RLS beklenmeyen sonuçlar üretirse aşağıdaki sorunları denetleyin:
Belirli bir kullanıcı herhangi bir veri göremiyorsa, bunun nedeni UPN'lerinin depolanmamış olması veya yanlış girilmesi olabilir. Ad değişikliğinin sonucu olarak kullanıcı hesabı değiştiğinden bu durum ani bir şekilde gerçekleşebilir.
İpucu
Test amacıyla USERNAME DAX işlevini döndüren bir ölçü ekleyin. "Ben Kimim" gibi bir ad vekleyebilirsiniz. Ardından ölçüyü rapordaki bir kart görseline ekleyin ve Power BI'da yayımlayın.
Anlam modeli üzerinde yalnızca Okuma iznine sahip oluşturucular ve tüketiciler yalnızca görmelerine izin verilen verileri görüntüleyebilir (RLS rol eşlemelerine göre).
Kullanıcı çalışma alanında veya uygulamada bir raporu görüntülediğinde, RLS anlam modeli izinlerine bağlı olarak zorunlu kılınabilir veya uygulanmayabilir. Bu nedenle, içerik tüketicilerinin ve oluşturucularının yalnızca RLS'nin zorunlu kılınması gerektiğinde temel alınan anlam modeli üzerinde Okuma iznine sahip olması kritik önem taşır. RLS'nin zorunlu kılınıp uygulanmadığını belirleyen izin kuralları hakkında ayrıntılı bilgi için Rapor tüketici güvenliği planlaması makalesine bakın.
Bu makaleyle ilgili daha fazla bilgi için aşağıdaki kaynaklara göz atın:
Ekinlikler
31 Mar 23 - 2 Nis 23
Microsoft Fabric, Power BI, SQL ve yapay zeka topluluğu tarafından yönetilen nihai etkinlik. 31 Mart - 2 Nisan 2025.
Bugün kaydolunEğitim
Modül
Satır düzeyi güvenlik uygulama - Training
Satır düzeyi güvenlik (RLS), belirli bir kullanıcı için verileri hedefleyen tek bir rapor veya bir rapor kümesi oluşturmanıza olanak sağlar. Bu modülde, statik veya dinamik bir yöntem kullanarak RLS'yi uygulamayı ve Microsoft Power BI'ın RLS'yi Power BI Desktop ve Power BI hizmeti test etmeyi nasıl kolaylaştırdığı hakkında bilgi edineceksiniz.
Sertifikasyon
Microsoft Certified: Power BI Data Analyst Associate - Certifications
Demonstrate methods and best practices that align with business and technical requirements for modeling, visualizing, and analyzing data with Microsoft Power BI.