SQL Server Row-Level Security (RLS)

SQL Server 2016 ile duyurulmuş olan satır seviyesinde güvenlik uygulaması kullanıcıların sadece yetkileri oldukları satırlara erişmesini sağlar.

Birçok kullanıcının aynı veri tabanını kullandığı ortamlarda kullanıcılar tablolarda sadece kendilerine ait bilgileri filtreleyerek eriştirmemizi sağlar.

Önemli bir uygulama olan RLS veri tabanı katmanında çalışır. Herhangi bir uygulamadan veriye erişim sağlanmak istendiğinde erişim kısıtlamaları uygulanır. Böylelikle daha iyi bir güvenlik katmanı sağlanır.

RLS Uygulaması:

Veri tabanıma ürün satışları ile ilgili bir tablo oluşturuyorum.

Satış tabloma satışlardan sorumlu personelin adı, satışın yapıldığı ülke ve miktarı giriyorum.

Bu satırlardan yer alan kişilerin sadece kendi satış bilgilerini görmelerini sağalacağım.

Üç kullanıcı için hesap oluşturuyorum.

Kullanıcılara tablodan veri çekmek yetkisi veriyorum.

Satırları kullanıcıya göre filtreleyen bir fonksiyon oluşturuyorum.

Son olarak ise bir güvenlik politikası oluşturuyorum. Bu politika tabloya her erişimde filtrelemeyi zorunlu olarak uygulayacaktır.

Bu aşamadan son kullanıcılar (User1,User2 ve User3) sadece kendi verilerini görebilirler.

Sorgunun planına baktığımızda “predicates” bölümünde filtreyi görmekteyiz.

Güvenlik politikasını aşağıdaki komut ile devre dışı bırakabiliriz.

Alter Security Policy  SatisGuvenlikPolitikasi with (State = off)

Fonksiyona farklı değişkenler de ekleyebiliriz. Örneğin son yılın verisini gözükmesini isteyebiliriz.

İşlemleri geri almak için fonksiyon ve güvenlik politikası silinebilir.

Kaynak:

https://learn.microsoft.com/en-us/sql/relational-databases/security/row-level-security?view=sql-server-ver16
Paylaş

Leave a Reply

Your email address will not be published. Required fields are marked *