0 212 951 05 08   bilgi@ofisdata.com

Yazılarımız

OfisData

POWER BI GÜVENLİĞİ: ROL BAZLI YETKİLENDİRME VE VERİ ERİŞİMİ

Power BI projeleri büyüdükçe asıl zor soru “raporu yaptık mı?” değil, “raporu kimin hangi veriyi görerek kullanacağı” oluyor. Aynı dashboard’un satış ekibine, bölge yöneticilerine ve finans ekibine farklı seviyelerde veri göstermesi gerekirken, yanlış bir paylaşım ayarı tek tıkla tüm tabloyu açığa çıkarabilir. Bu yüzden Power BI güvenliği; sadece bir izin ekranı değil, uçtan uca bir erişim tasarımı ve operasyon disiplinidir.

Bu makalede, rol bazlı yetkilendirme yaklaşımını temel alarak Power BI’de veri erişimini nasıl kurgulayabileceğinizi adım adım ele alacağız. Rapor ve çalışma alanı (workspace) seviyesindeki izinlerden başlayıp, dataset güvenliği (RLS/OLS), kimlik yönetimi, paylaşım seçenekleri, tenant ayarları, denetim ve yönetişime kadar kapsamlı bir çerçeve sunacağız.

Hedefimiz; BT, veri ekipleri ve iş birimlerinin birlikte uygulayabileceği, ölçeklenebilir ve denetlenebilir bir “Power BI güvenliği” modeli kurmak. Böylece hem hızlı yayın yapabilir hem de veri sızıntısı riskini azaltabilirsiniz.


Power BI güvenliği katmanları: Neyi nerede korursunuz?

Power BI’de güvenliği doğru kurmanın ilk adımı, kontrol noktalarını katmanlar halinde düşünmektir. Çoğu problem, yanlış katmanda çözüm aramaktan doğar: RLS ile çözülecek bir konuya workspace rolüyle, tenant kuralıyla çözülecek bir konuya rapor paylaşımıyla yaklaşmak gibi.

Genel olarak dört ana katman vardır: (1) kimlik ve grup yönetimi, (2) Power BI servis izinleri (workspace, app, paylaşım), (3) dataset/semantik model güvenliği (RLS/OLS, nesne düzeyi ve ölçü düzeyi kontroller), (4) yönetişim ve denetim (audit, etiketler, tenant ayarları). Bu katmanlar birlikte çalıştığında en az ayrıcalık prensibini sürdürülebilir şekilde uygularsınız.

Kimlik, grup ve erişim: Azure AD merkezli düşünün

Kurumsal senaryoda kullanıcı bazlı atamalar hızla yönetilemez hale gelir. Kullanıcıları tek tek eklemek yerine Azure AD grupları üzerinden erişim vermek, hem ayrılma/işe alım süreçlerinde otomasyon sağlar hem de denetlenebilirliği artırır. Power BI servisinde mümkün olduğunca grup üyeliğini “tek kaynak” (single source of truth) olarak konumlandırın.

Servis izinleri ve model güvenliği arasındaki fark

Workspace rolleri “kim içerik üretebilir/yayınlayabilir” sorusuna, dataset güvenliği ise “kim hangi satırı/kolonu görebilir” sorusuna cevap verir. Örneğin bir kullanıcı raporu görüntüleyebiliyor olsa bile, doğru RLS tanımlıysa yalnızca kendi bölgesinin satışını görür. Bu ayrımı netleştirmek, güvenlik tasarımınızı daha anlaşılır ve sürdürülebilir yapar.

Kurumsal analitik ortamında ekipler arası erişim sınırlarını gösteren yetki matrisi düzeni

Workspace rolleri ve içerik yaşam döngüsü güvenliği

Power BI servisinde en sık yapılan hata, “görsünler” diye herkesi workspace’e eklemektir. Oysa workspace rolleri; geliştirme, yayınlama ve yönetim yetkilerini belirler. İçerik yaşam döngüsü (dev-test-prod) ayrımı yoksa, bir raporun yanlışlıkla güncellenmesi veya dataset bağlantılarının bozulması gibi operasyonel riskler ortaya çıkar.

Admin, Member, Contributor, Viewer: Doğru rol, doğru sorumluluk

Genel pratik: içerik üretenler Contributor/Member, yönetenler Admin, sadece tüketenler Viewer olmalıdır. Viewer rolü; yayınlanmış içerikleri görmeyi sağlarken, modeli ve raporları değiştirme yetkisi vermez. Bu basit ayrım bile veri ürününüzün stabilitesini ciddi ölçüde artırır.

App yayınlamak: Paylaşımı kontrol altına alan yaklaşım

Workspace yerine uygulama (App) üzerinden dağıtım yapmak, kimlerin içeriği göreceğini daha kontrollü yönetmenizi sağlar. Uygulama hedef kitlesini Azure AD gruplarıyla belirleyip, workspace’i daha dar bir üretici ekibe kapatabilirsiniz. Böylece “herkes workspace’te, kim neyi değiştirdi belli değil” problemi ortadan kalkar.

Dataset güvenliği: RLS ile satır bazlı veri erişimi

RLS (Row-Level Security), kullanıcıya göre satır filtreleyerek aynı raporun farklı kullanıcılar tarafından farklı veriyle görüntülenmesini sağlar. Özellikle satış, operasyon, bölge/şube bazlı organizasyonlarda en etkili güvenlik mekanizmalarından biridir. Ancak RLS’i yalnızca “bir DAX filtresi” olarak görmek risklidir; model ilişkileri, kullanıcı eşlemesi, performans ve test stratejisi bir bütün olarak ele alınmalıdır.

Statik ve dinamik RLS: Ölçek ve operasyon farkı

Statik RLS; role sabit filtre yazıp belirli kullanıcıları role eklemeye dayanır. Küçük ekiplerde işe yarasa da yüzlerce kullanıcıda operasyon maliyeti artar. Dinamik RLS; kullanıcının kimliğini (UPN/e-posta) bir güvenlik tablosu üzerinden bölge/organizasyon birimiyle eşleştirir. Bu yaklaşım, kullanıcı değişimleri için daha sürdürülebilir bir yol sunar.

RLS örneği: Kullanıcı-bölge eşlemesi ile dinamik filtre

Aşağıdaki örnekte, SecurityUserRegion tablosu ile kullanıcının erişebileceği bölgeler belirlenir. Kullanıcı rapora girdiğinde USERPRINCIPALNAME() ile kimliği alınır ve ilgili bölge(ler) filtrelenir. Bu tasarımda güvenlik tablosu ile fact tablo ilişkisi (veya dimension üzerinden) net olmalıdır.

// Role: RLS_Region
// Table: SecurityUserRegion (columns: UserUPN, RegionKey)
// Relationship: SecurityUserRegion[RegionKey] -> DimRegion[RegionKey]

VAR __upn =
    LOWER ( USERPRINCIPALNAME() )
RETURN
    SecurityUserRegion[UserUPN] = __upn

İpucu: Kullanıcı alanını normalize etmek için LOWER/TRIM kullanın ve güvenlik tablonuzu kimlik kaynağıyla (ör. HR/AD export) düzenli senkronize edin. Ayrıca “çoklu bölge” yetkileri için tek kullanıcıya birden çok satır tanımlanması doğal bir desen olarak ele alınmalıdır.

OLS ve hassas alanlar: Kolon/nesne düzeyinde erişim

RLS satırları filtreler; ancak bazı senaryolarda satırın görünmesi gerekirken belirli kolonların saklanması gerekir. Örneğin çalışan ücretleri, kişisel veriler veya maliyet detayları. Bu noktada OLS (Object-Level Security) veya model tasarım desenleri devreye girer. Kurumsal bağlamda, veri sınıflandırma ve KVKK/GDPR gereksinimleriyle uyum için bu katman kritik olabilir.

OLS ne zaman tercih edilir, ne zaman modelleme deseni daha doğru?

OLS, model nesnelerini (tablolar/kolonlar) role göre görünmez yapabilir. Ancak rapor tasarımında görsellerin bu alanlara bağımlılığı varsa kullanıcı deneyimi bozulabilir. Alternatif olarak, hassas alanları ayrı bir dataset’te tutmak, “özet vs. detay” ayrımı yapmak veya ölçü (measure) üzerinden kontrollü gösterim tasarlamak daha anlaşılır sonuçlar verebilir.

Paylaşım seçenekleri ve “Build” izni: İnce ayarların gücü

Power BI’de veri sızıntısının önemli bir kısmı, iyi niyetli ama kontrolsüz paylaşım kararlarından kaynaklanır. Raporu görüntülemek ile dataset üzerinde yeni rapor üretmek (Build) arasında büyük fark vardır. Build izni verilen kullanıcı, uygun araçlara sahipse dataset’i kullanarak yeni raporlar üretebilir ve beklenmeyen kombinasyonlarda veri görünürlüğü oluşabilir.

Rapor paylaşımı mı, App dağıtımı mı?

Tekil rapor paylaşımı hızlıdır ama büyüdükçe yönetimi zorlaşır. App dağıtımı ise hedef kitle, sürümleme ve içerik paketleme açısından daha kontrollüdür. Kurumsal senaryoda standart yaklaşım: içerik üretimi workspace’te, dağıtım app üzerinden yapılır. Böylece erişim listeleri parça parça değil, merkezi kurgulanır.

Build izni için pratik kontrol listesi

  • Dataset yeniden kullanımını gerçekten istiyor musunuz, yoksa sadece tüketim yeterli mi?
  • Build verilecekse, kullanıcıları Azure AD grupları ile sınırlıyor musunuz?
  • RLS/OLS testleri “Build kullanıcıları” için de senaryolaştırıldı mı?
  • Paylaşılan dataset’lerde sertifikasyon/endorsement (Certified/Promoted) yaklaşımı tanımlı mı?
Semantik model üzerinde kullanıcı rolü eşlemesiyle satır bazlı erişim kurgusu ve ilişki yönleri

Tenant ayarları, veri sızıntısı riskleri ve güvenli varsayılanlar

Power BI yönetişiminde en kritik noktalardan biri tenant ayarlarıdır. Bazı seçenekler “kolaylık” sağlarken, kurumsal güvenlik çizgisini zayıflatabilir. Örneğin dış paylaşım, herkese açık link, veri dışa aktarma (export), embed seçenekleri veya kişisel çalışma alanı (My Workspace) politikaları. Burada hedef, her şeyi kapatmak değil; kuruma uygun “güvenli varsayılanlar” belirlemektir.

Dış paylaşım ve misafir kullanıcılar: Kontrollü bir çerçeve kurun

B2B misafir erişimi iş ortakları için gerekli olabilir. Ancak hangi içeriklerin dışa açılabileceği, hangi workspace’lerin bu kapsama girdiği ve hangi onay akışının devreye alınacağı net olmalıdır. Uygulamada, ayrı bir “External Sharing” workspace alanı ve ayrı bir dataset stratejisi tercih edilerek risk düşürülebilir.

Export ve Analyze in Excel: Veri kopyalanabilirliğini yönetin

Rapor ekranında görünen veri çoğu zaman “sınırlı” görünür; ancak export ile binlerce satır dışarı alınabilir. Bu nedenle export izinlerini rol, workspace ve hassasiyet etiketleriyle birlikte değerlendirin. Eğer iş gereği export gerekli ise, hassas alanlar için OLS veya ayrı dataset yaklaşımıyla sınır koymayı düşünün.

Denetim, izlenebilirlik ve operasyon: Güvenlik bir kez kurulup bırakılmaz

Güvenlik tasarımı, yayın anında bitmez; asıl değer, kimin neye eriştiğini izleyebilmek ve değişiklikleri yönetebilmektir. Bu yüzden audit (denetim) kayıtları, kullanım metrikleri ve erişim incelemeleri düzenli bir ritme bağlanmalıdır. Kurumsal ekipler için hedef, “hangi rapor kim tarafından paylaşıldı, kim dataset’e erişti, kim export yaptı” gibi sorulara hızlı cevap üretebilmektir.

Audit log ve erişim incelemeleri için ritim önerisi

Haftalık veya aylık periyotlarla kritik workspace’lerde üyelik değişimlerini ve paylaşım aktivitelerini gözden geçirin. Özellikle “Admin sayısı arttı mı?”, “Viewer yerine Contributor verilmiş mi?”, “Bilinmeyen dış kullanıcı eklendi mi?” gibi anormallikler erken sinyal üretir. Bu süreç, güvenliği canlı tutan bir operasyon kasıdır.

Gerçekçi bir güvenlik mimarisi: Referans tasarım

Pratikte en iyi çalışan yaklaşım, “az sayıda workspace, net sorumluluklar ve merkezi dataset stratejisi” ile başlar. Örneğin kurumsal birimlere göre domain workspace’leri, ortak veri ürünleri için merkezi bir “Data Products” alanı ve dağıtım için app yaklaşımı kurgulanabilir. Böyle bir düzende güvenlik; grup üyelikleri, rol tanımları ve dataset RLS/OLS kurallarıyla birlikte yönetilir.

Önerilen akış: Geliştirme → Test → Prod ayrımı

Geliştirme ortamında daha geniş düzenleme yetkileri tanınabilir; ancak Prod ortamında içerik değişikliği ve erişim güncellemeleri daha sıkı kontrol edilmelidir. Bu ayrım, hem hata riskini hem de “kim neyi değiştirdi” belirsizliğini azaltır. Ayrıca canlı ortamda dataset şemasının değişmesi gibi sürprizlerin etkisi düşer.

Power Query ile güvenlik tablosu hazırlama: Basit bir M örneği

Dinamik RLS için güvenlik tablosunu düzenli güncellemek önemlidir. Aşağıdaki örnek, bir CSV kaynağından kullanıcı-bölge eşlemesini alıp temel temizlik uygular. Kaynağınız veritabanı veya API olabilir; mantık aynı kalır: kimlik alanlarını normalize edin ve tekilleştirme kuralları uygulayın.

let
    Source = Csv.Document(
        File.Contents("C:\data\security_user_region.csv"),
        [Delimiter=",", Columns=2, Encoding=65001, QuoteStyle=QuoteStyle.Csv]
    ),
    PromotedHeaders = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    Trimmed = Table.TransformColumns(PromotedHeaders, {{"UserUPN", Text.Trim, type text}}),
    Lowered = Table.TransformColumns(Trimmed, {{"UserUPN", Text.Lower, type text}}),
    ChangedTypes = Table.TransformColumnTypes(Lowered, {{"RegionKey", Int64.Type}}),
    RemovedBlanks = Table.SelectRows(ChangedTypes, each ([UserUPN] <> null and [UserUPN] <> "")),
    DistinctRows = Table.Distinct(RemovedBlanks)
in
    DistinctRows

Bu tabloyu semantik modele ekledikten sonra ilişkileri kurun ve rol tanımlarınızı bu tablo üzerinden yönetin. Böylece güvenlik kurgunuz “koda gömülü listeler” yerine veriyle yönetilen bir yapıya dönüşür.

Denetim kayıtlarıyla paylaşım, export ve erişim olaylarının zaman çizelgesi üzerinde izlenmesi düzeni

Performans ve güvenlik birlikte düşünülmeli

RLS/OLS gibi kontroller, yanlış modelleme ile performansı etkileyebilir. Özellikle çok büyük fact tablolarında, filtreleme yolları ve ilişki yönleri kritik hale gelir. Güvenlik filtreleri dimension üzerinden uygulanabiliyorsa genellikle daha verimli olur. Ayrıca, güvenlik tablosu ile fact arasına gereksiz çoktan-çoğa ilişkiler eklemek karmaşıklığı artırır.

RLS test stratejisi: “View as” yeterli değil

Power BI Desktop’ta “View as” testleri faydalıdır; ancak gerçek kullanıcı deneyimi servis tarafında izinlerle birlikte şekillenir. Bu yüzden test planınıza şu senaryoları ekleyin: Viewer kullanıcı ile app üzerinden erişim, Build izni olan kullanıcı ile yeni rapor oluşturma, export denemeleri, farklı cihaz/oturum koşulları ve dış kullanıcı (varsa) doğrulaması. Testleri standardize etmek, sürpriz riskleri azaltır.

Kurumsal uygulama rehberi: En iyi pratikler ve yaygın tuzaklar

Güvenliği “en sıkı” hale getirmek çoğu zaman işin akışını bozar; en gevşek hale getirmek ise riski artırır. Sağlıklı yaklaşım, kuruma uygun dengeyi kurmaktır. Aşağıdaki pratikler, sahada en fazla değer üreten adımlardır:

  1. Workspace üyeliklerini azaltın; dağıtımı mümkünse app üzerinden yapın.
  2. Kullanıcı bazlı atamalar yerine Azure AD gruplarıyla yönetin.
  3. Dataset yeniden kullanımını kontrol edin; Build iznini bilinçli verin.
  4. Dinamik RLS için güvenlik tablosunu kurumsal kimlik kaynağıyla senkronize edin.
  5. Hassas alanlar için OLS veya ayrı dataset/özetleme desenleri uygulayın.
  6. Tenant ayarlarını “güvenli varsayılanlar” ile yapılandırın; istisnaları süreçle yönetin.
  7. Audit ve erişim incelemelerini düzenli operasyon ritmine bağlayın.

En sık yapılan 7 hata

  • “Herkes görsün” diyerek workspace’e geniş erişim vermek
  • RLS’i statik bırakıp kullanıcı yönetimini manuel sürdürmek
  • Build izninin veri yayılımını artırdığını gözden kaçırmak
  • Güvenlik tablosunu güncel tutmamak ve kimlik alanlarını normalize etmemek
  • Hassas kolonları raporda gizleyip dataset’te açık bırakmak
  • Export/Analyze in Excel gibi kanalları değerlendirmeden izinleri açmak
  • Denetimi ihmal edip olayları geriye dönük takip edememek

Power BI eğitimlerinde güvenlik bölümünü nasıl yapılandırmalısınız?

Birçok kurumda Power BI eğitimleri rapor üretimine odaklanırken, güvenlik kısmı “son bölüm” olarak geçiştiriliyor. Oysa güvenlik, erken tasarım kararlarını etkiler: modelleme, dağıtım, paylaşım ve bakım süreçleri. Eğitim planına güvenliği entegre etmek; ekiplerin ortak dil oluşturmasını ve yanlış pratiklerin yerleşmesini engeller.

Kurumsal ekipler için öneri: temel Power BI içeriklerinin yanında, RLS/OLS, tenant ayarları, paylaşım politikaları, denetim ve operasyon bölümünü ayrı bir modül olarak ele alın. Eğer güvenlik yaklaşımınızı kuruma özel senaryolarla oturtmak istiyorsanız, Power BI eğitimi içeriğini güvenlik odaklı uygulama atölyeleriyle genişletmek hızlı sonuç verir.

Ölçülebilir başarı kriterleri belirleyin

“Güvenliği kurduk” demek yerine, ölçülebilir kriterler tanımlayın: kritik workspace’lerde yalnızca grup bazlı üyelik, Prod ortamında Admin sayısının sınırı, RLS kapsamına giren rapor yüzdesi, export olaylarının izlenmesi, paylaşımların app üzerinden yapılma oranı gibi. Bu metrikler, güvenlik yaklaşımınızın sürdürülebilirliğini görünür kılar.

Sonuç: Güvenli ve ölçeklenebilir Power BI erişim modeli

Power BI’de güvenlik, tek bir ekrandaki izin ayarından ibaret değildir; kimlik yönetimi, servis izinleri, dataset güvenliği ve yönetişim katmanlarının birlikte çalıştığı bir sistemdir. Rol bazlı yetkilendirme yaklaşımıyla; doğru kişilere doğru seviyede erişim vererek hem veri risklerini azaltır hem de ekiplerin hızını korursunuz.

Başlangıç için en etkili adımlar; workspace rollerini sadeleştirmek, app dağıtımını standartlaştırmak, dinamik RLS ile satır bazlı erişimi ölçeklemek ve tenant ayarlarını güvenli varsayılanlarla yapılandırmaktır. Üstüne audit ve düzenli erişim incelemelerini eklediğinizde, Power BI güvenliği “proje” olmaktan çıkar, kurumsal bir yetkinliğe dönüşür.

 OFİS DATA