SQL Server 2016 Güvenlik Özellikleri : Row-Level Security – Bölüm 2

SQL Server 2016 Güvenlik Özellikleri : Row-Level Security. SQL Server 2016 ile gelen güvenlik özellikleri 2. makalemizde satır bazlı yetkilendirme sağlayan Row-Level Security özelliğine değineceğiz. Row-Level Security ya da kısaca RLS, aynı tabloya yetkisi olan ancak tabloda farklı satırları görmesi gereken kullanıcı senaryolarında, bunu karmaşık view’lar ya da uygulama katmanında yapılacak ekstra kodlamaya gerek kalmadan kolaylıkla yapılmasını sağlar.


Resim-1

Row-Level Security Nasıl Çalışır?

SQL Server Always Encrypted örneğimizdeki tabloyu biraz değiştirelim ve müşterilere ilgili müşteri yöneticilerini ekleyelim. Bu kez RandomNameGenerator yok J


Resim-2

Yapmak istediğimiz senaryo her müşteri yöneticisinin sadece kendi müşterisini görmesi, satış direktörünün ise bütün müşterileri görebilmesi. Tabloda ayrım yapacağımız AccountManagerId değerlerine göre AccManager1, AccManager2 ve SalesDirector adında üç kullanıcı oluşturalım. SQL Server 2016 login gerekmediği için WITHOUT LOGIN kullanabiliriz. Sonra da bu üç kullanıcıya Customers tablosu üzerinde SELECT yetkisini verelim (Resim-3).


Resim-3

Sırada RLS adında bir schema oluşturup bu schema altında @AccManager parametresi değerine göre
yetkilendirme sağlayacak fonksiyonu oluşturma işimiz var (Resim-4).


Resim-4

Şimdi gelelim işin asıl kısmına: AccountFilter adında bir security policy oluşturup bunu da Customers tablosu üzerinde STATE = ON diyerek aktif hale getirelim (Resim-5).

Resim-5

Bütün gerekli hazırlıklardan sonra artık oluşturduğumuz 3 kullanıcıyla birlikte konuyla alakasız başka bir kullanıcı yetkileriyle Customers tablosuna bakabiliriz (Resim-6). Her Account Manager kendi müşterisini gördüğü halde satış direktörü bütün tabloyu görebiliyor. Konudan habersiz testuser ise tabloda bir satır bile göremiyor.


Resim-6

SQL Server 2016 Security Policy’yi devre dışı bırakmak isterseniz T-SQL üzerinden Alter ederek ya da SSMS üzerinden Disable Security Policy ile sağlayabilirsiniz (Resim-7).


Resim-7

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

https://www.mshowto.org

Yazı gezinmesi

Mobil sürümden çık