SQL SERVER 2016 – Dynamic Data Masking

Reading Time: 4 minutes

SQL Server 2016 versiyonu ile hayatımıza giren önemli özelliklerden bir tanesi de Dynamic Data Masking ‘dir. Önceki versiyonlarsa maskeleme sürecini  gerçekleştirmek için bir çok işlem yaparak sağlıyorduk. Genelde maskeleme, tuttuğumuz datanın kullanıcıya sunduğumuz da verinin aslını değil de bir kısmını gizleyerek göstermek olarak tanımlayabiliriz. Örnek olarak kullanıcının TC Kimlik Numarası, Telefon Numarası vb. gibi.

Önceden bu işlemleri bir çok işlem yaparak sağlıyorduk demiştik bunlardan bir tanesi kullanıcıların direk tablo üzerinde sorgulama yapmasını sağlamak yerine VIEW lar oluşturup VIEW lar içerisinde fonksiyonlar kullanarak datayı maskeleyip sunardık.

Yeni versiyon da gelen bu özellik ile bu maliyetli süreç ortadan kalkmış olmaktadır.

Örnek bir tablo oluşturalım ;

Dynamic Data Masking özelliğini , tablo oluştururken veya hali hazırdaki tablolarımız üzerinde de tanımlayabiliyoruz.

Data Maskeleme için 4 adet fonksiyonumuz bulunmaktadır ;

  1. Default

Bu fonksiyon ile maskelemek istediğimiz veri türleri aşağıda ki gibi olduklarında karşılarında ki karakter ile maskelenmektedir.

  • Metinsel Veri : XXXXX
  • Numerik Veri : 0000
  • Teihsel Veri : 01.01.2000 00:00:00.0000000

Örnek tablomuza bu fonksiyon altında kolonlar ekleyelim.

Phone ve Gender kolonlarını ekledik ve Default fonksiyonu ile de maskeledik.

Şimdi ise tablomuza veri basalım.

Şimdi ise SELECt çekecek kullanıcımızı oluşturup yetkilendirmesini gerçekleştirelim.

Kullanıcımızı oluşturduk ve yetkilendirmeyi sağladık.

Bu kullanıcı ile SELECT çekelim :

Gördüğünüz üzere Phone ve Gender alanları Maskelenmiş geldi.

2.Email

Default fonksiyonunun dışında kullanabileceğimiz bir diğer fonksiyon ise EMAIL fonksiyonudur. Bu fonksiyon ile de emila formatımızın ilk harfi alınarak XXXXX olarak maskelenmektedir.

ÖR : [email protected]

Tablomuz üzerinde ki Email kolonunu maskelemek istediğimizde ;

Maskelem işlemini yukarıd aki script ile gerçekleştirdik ve şimdi data mızı çekelim.

Gördüğünüz üzere Emial Kolonu Maskelenmiş şekilde geldi. İlk karekter dışındakilerin hepsi maskelenmiş oldu.

3.Partial

Bu fonksiyonumuz ise Default ve Email fonksiyonlarına göre daha esnek bir fonksiyondur. Maskeleme işlemini istediğimiz şekilde şekillendirebileceğimiz bir yöntemdir.

Maskeleme yöntemi olarak çok kullanışlı bir yöntem olarak bilinir ve örnek verecek olur isek email fonksiyonumuzda ilk harfi gösterip maskeleme yapabilirken burada biz yapacağımız örneğimizde ilk iki  ve son bir harfi göstererek maskeleme yaptırabiliriz.

Genel Kullanım Syntax ‘ı :

Partial (Prefix,[Padding],Suffix)

Syntax ‘ı incelediğimizde ; Prefix bize kaç karakterin görüntülenecğini, [Padding] maskeleme için kullanılacak İfadeyi belirlediğimiz yer (örneğin XXX yerine YYY ile de maskeleme yapabilriz), Suffix ise sondan kaç karakterin görüneceğini belirttiğimiz bölümdür.

Identity Number kolonumuzu Partial maskeleme yapalım ve kuralımızda ilk iki hanesi ve son bir hanesi gözükecek şekilde olsun.

Gerekli maskelememizi yaptık. Kullanıcımız ile datayı kontrol edelim .

Identity_Number kolonumuz a baktığımızda ilk iki hanesi ve son bir hanesi data çekme işleminde de görüldüğü üzere açık ve diğerleri maskelenmiş şekilde gelmektedir.

 4.Random()

Bu fonksiyon ile de random bir değer SET edilerek maskeleme yapılır. Tablomuza Salary adında bir kolon ekleyip datalarımızı salary kolonu için güncelleyeim. Örneğimizde herkesin Salary değeri aynı olsun.

Bu fonksiyon ile verdiğimiz değer aralığında her sorgu çekildiğinde o aralıkta bir değer üretilerek maskeleme yapılır.

Örneğimizde 100000 ile 200000 arasında bir değer üreterek maskeleme yapmasını SET ediyoruz.

Maskeleme işlemini tamamladıktan sonra kullanıcımız ile SELECT çekelim ;

 

Gördüğünüz üzere verilen aralık arasından random bir değer üreterek maskeleme yapılmış oldu.

Maskeleme İşlemini Kolon Üzerinden Kaldırmak

Tablomuzda Email kolonund aki maskelemeyi kaldırmak istediğimiz de ;

ALTER TABLE <Table_Name> ALTER COLUMN <Column_Name> DROP MASKED

query sini hazırlamamız yeterlidir. Örneğimizde ki script ise aşağıda ki gibi olmalıdır.

Daha sonra kullanıcımız ile datayı çekiyoruz ;

Email kolonumuzda ki maskelemenin kalktığını görmekteyiz.

 

2 Replies to “SQL SERVER 2016 – Dynamic Data Masking”

  1. Tһank you for every other great post. Where else may just anybody
    get that kind of infoгmation in such an ideal mɑnnеr of writing?

    I’ve a presentation subsequеnt week, and I am on the search for such info.

Leave a Reply

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