İlginizi Çekebilir
  1. Ana Sayfa
  2. SQL Server
  3. SQL Server 2016 Güvenlik Özellikleri : Row-Level Security – Bölüm 2

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

2016 Güvenlik Özellikleri : . ile gelen güvenlik özellikleri 2. makalemizde satır bazlı yetkilendirme sağlayan özelliğine değineceğiz. 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

https://www.mshowto.org

Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümünde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap