29 Temmuz 2015 Çarşamba

SQL Server 2016: Dynamic Data Masking

Selam arkadaşlar,

SQL Server 2016 test ortamımda Dynamic Data Masking özelliğini test ettim, sonucu sizinle de paylaşmak istiyorum. Test için AdventureWorks2012.Person.PersonPhone tablosundaki PhoneNumber alanını kullandım. Dynamic Data Masking özelliğini kullanarak, aşağıdaki komutlarla NVARCHAR(25) veritipiyle oluşturulmuş PhoneNumber alanındaki değerlerin ortasındaki 3 karakteri XXX karakterleriyle maskeledim.

Maskelemeden önce verinin nasıl göründüğü

Maskeleme için kullandığım komutlar:

USE [AdventureWorks2012]
GO
ALTER TABLE Person.PersonPhone
ALTER COLUMN PhoneNumber ADD MASKED WITH (FUNCTION = 'partial(3,"-XXX-",4)');

Bu komut ile veriyi değiştirmiş olmuyoruz, sadece soyut olarak maskeliyoruz. db_owner ve sysadmin olmayan ve UNMASK yetkisi bulunmayan tüm kullanıcılar veriyi aşağıdaki gibi görüyor:

Maskelemeden sonra verinin yetkisiz bir kullanıcıya nasıl göründüğü

Eğer isteseydim telefon numaralarına dair hiçbir veriyi göstermezdim ve/veya istediğim sayıda "X" kullanırdım ve değerin kaç karakter olabileceği hakkında da yetkisiz kullanıcılara fikir vermeyebilirdim.

Aşağıdaki komut ile de maskeli bir alanın bu özelliğini kaldırabilirsiniz:

ALTER TABLE Person.PersonPhone ALTER COLUMN PhoneNumber DROP MASKED;

Dynamic Data Masking özelliğinin çalışabilmesi için, bu özelliğin kullanılacağı veritabanının Compatibility Level ayarının 130 (SQL Server 2016) yapılması gerekiyor. Örneğin Compatibility Level ayarı 90 (SQL Server 2005) olan bir veritabanı için bu özellik kullanılamıyor. 

Büyük bir olumsuzluk beklemesem de, performansa nasıl bir etkisi olacağını bilemiyorum; ama kullanımı gayet pratik, uygulama tarafında hiçbir değişiklik gerektirmiyor. Tek değişiklik yönetim tarafında, ilgili alanının yukarıda belirttiğim komut ile MASKED olarak tanımlanması ve ilgili / yetkili olacak kullanıcılara UNMASK yetkisinin verilmesi.

Bu özellik hakkında daha fazla bilgiye Books Online'dan ulaşabilirsiniz:

Kolay gelsin,


Ekrem Önsoy

Hiç yorum yok: