Dynamic Data Masking

Serdar BAYRAK

Updated on:

Bu makalede Hassas olduğunu düşündüğümüz tablonun içindeki verinin kısmi ya da tamamının değiştirilmesi ya da kapatılması konusunu inceleyeceğiz.

Bahsi geçen özellik SQL Server 2016 yılında Microsoft tarafından tanıtıldı. Özellikle ilgili verilerin bazı uygulamalar ya da kullanıcılar tarafından okunmasının sakıncalı olduğu durumlarda bu veriler maskeleyerek gerçekleştirebiliriz. Bu makalede AdventureWorks2017 veri tabanı altında Production.Location tablosu kullanılmıştır.

 

Başlangıçta daha önce bizden başka birisi burada bu özelliği aktif etmiş ya da kullanıyor olabilir. Hem maskelenmiş kolon var mı hem de burada adım adım giderek nasıl eklendiğini göreceğiz.

Aşağıdaki sorgu ile ilgili veri tabanı üzerinde hangi tabloların hangi kolonlarında maskeleme özelliği var onu aşağıdaki script ile kontrol edebiliriz.

 

 

1-)

Eğer tablo yok yeni oluşturuyor isek;

Maskelenmesini istediğimiz kolonları belirleyerek ve bu alanları type’larına göre maskeliyoruz.

Örn. String derğerler için; varchar==>partial, Integer Değerleri için, Int==> random yada default gibi.

 

Eğer tablo var ise;

Maskeleme yapmak istediğimiz kolona aşağıdaki script ile maskeleme özelliği katıyoruz. Biz aşağıda partial ve random olarak iki kolon için bu özellikleri göreceğiz.

Bunların dışında e-mail ve tarih alanları için ayrıca function kullanılabilir.

 

 

2-)

Eğer kullanıcı yok ise;

Aşağıdaki script ile kullanıcıyı oluşturuyoruz.

Maskeleme yapılmış tabloya oluşturulan kullanıcıda select yetkisi veriyoruz.

 

 

Burada önemli nokta eğer kullanıcı var olan bir kullanıcı ise kullanıcının sysadmin veya dbowner olmamasına dikkat edilmeli aksi takdirde kolon maskelense dahi kullanıcının yetkilerinde dolayı verileri normal hali ile görecektir.

Aşağıdaki script ile oluşturulan ya da var olan kullanıcının veriyi okuyup okuyamadığını test edilebilirsiniz.

 

 

 

Eğer Kullanıcının maskeleme olan tabloda select yetkisi var ise;

Aşağıdaki script ile maskelemeyi aktifleştirebiliriz. Maskeleme aktifleştirildikten sonra aşağıdaki script ile test edebiliriz.

REVERT işlemi ile kullanıcıyı execute as olarak tanımlanan kullanıcıdan önceki kullanıcıya geri alabiliriz. Bu işlem bize eski eski kullanıcımız ile devam etmemizi sağlayacak.

 

Eğer kullanıcının maskeleme olan tabloda verileri maskeli olarak görmesini istemiyor isek;

Aşağıdaki script ile bu özelliği kaldırabiliriz. Maskeleme kaldırdıktan sonra aşağıdaki script test edebiliriz. Aşağıdaki script ile testuser olan kullanıcıyı geri alabiliriz. Bu işlem bize eski eski kullanıcımız ile devam etmemizi sağlayacak.

 

3-)

Eğer maskelediğimiz bir kolonu kaldırmak ister isek;

 

*Önemli Bilgiler

1.Maskeleme; Computed Column Üzerinde Çalışmaz.

2.Data Maskeleme yapıldığında Full-Text Index Çalışmaz.

Yorum yapın