Veri yönetiminde karşılaşılan zorluklardan biri, hassas bilgilerin korunmasını sağlarken bu bilgilerin kullanımını sürdürmektir. Dynamic Data Masking (DDM), bu dengenin sağlanmasına yardımcı olarak, veri tabanlarındaki hassas verileri gizleyip, yetkili kullanıcıların yalnızca gerekli bilgileri görmesini mümkün kılar. Dynamic Data Masking’de default, email, ve partial olmak üzere üç adet parametre bulunmaktadır.
default: Bu yöntem ile yapacağınız veri maskeleme işlemlerinde kolonun veri tipine göre maskeleme işlemi yapar.
- Metinsel kolonlarda veri maskelemeyi ‘xxx’ değeri ile yapar.
- Sayısal kolonlarda veri maskelemeyi tek byte’lık 0 değeri ile yapar.
- Tarihsel kolonlarda veri maskelemeyi ‘01.01.1700 00:00:00.0000000’ değeri ile yapar.
email: E-Mail maskeleme işlemininde bu yöntemi kullanırız. Sadece ilk harfini alarak geri kalanını “XXX@XXXX.com” şeklinde şifreler. Örneğin;FXXX@XXXX.com
partial: Veriyi istediğiniz formatta maskeleyebileceğiniz fonksiyondur.Kullanımına Örnek vermek gerekirse; partial(2,A,2) fonksiyonuyla maskelenmiş bir kolonda verilerin baştan iki karakteri ve sondan iki karakterini gösterecek kalan karakterlerini A harfiyle maskeleyecektir.
random:Veriyi belirlemiş olduğunuz değerler arasında rastgele değerlerle maskeler. Numaric alanlarda kullanılır. Örnek vermek gerekirse; random(10,20) fonksiyonuyla kolona gelen değerleri 10 ile 20 arasında random maskeleyecektir.
Teorik bilgilerimizi anlattığımıza göre artık uygulamaya geçebiliriz 🙂
Öncelikle bir tablomuz olmadığını göz önünde bulundurarak “Datamasking_tbl” adında bir tablo oluşturuyorum, Kolonları sırasıyla veri tiplerine uygun olacak şekilde maskeleme fonksiyonlarını kullanıyorum.
USE FurkanC_Test CREATE TABLE [Datamasking_tbl] ( Id INT PRIMARY KEY IDENTITY, ADI VARCHAR(20) MASKED WITH (FUNCTION = 'default()') NULL, SOYADI VARCHAR(20) MASKED WITH (FUNCTION = 'default()') NULL, TCKIMLIK VARCHAR(11) MASKED WITH (FUNCTION = 'partial (2, "X",2)') NULL, YAŞI INT MASKED WITH (FUNCTION = 'random (0,150)') NOT NULL, EMAIL VARCHAR(50) MASKED WITH (FUNCTION = 'email()') NULL, )
Daha sonra Datamasking_tbl tablomuza maskelemeyi test etmek amaçlı kayıt ekleyelim.
INSERT Datamasking_tbl VALUES ('Furkan', 'Çömlekçi', '125656789', '25', 'furkancomlekci@outlook.com') INSERT Datamasking_tbl VALUES ('Mustafa', 'Aktaş', '542256712', '24', 'mustafaaktas@outlook.com') INSERT Datamasking_tbl VALUES ('Hüseyin', 'Çolak', '768656742', '27', 'huseyincolak@outlook.com') INSERT Datamasking_tbl VALUES ('Oğuzhan', 'Kaya', '983936726', '26', 'oguzhankaya@outlook.com')
Tablomuzu kontrol edelim bakalım kayıtlar maskelendi mi?
Gördüğünüz üzere tablodaki verileri maskelenmiş olarak göremiyorum bunun sebebi benim kullanıcımın Sysadmin rolüne sahip olması. Bu yüzden yeni bir kullanıcı oluşturup “Datamasking_tbl” tablomuza sadece select yetkisi veriyoruz.
Şimdi “EXECUTE AS USER” komutuyla kullanıcımı yeni oluşturduğum kullanıcı ile değiştiriyorum ve tabloma tekrar sorgu atıyorum.
Maskeleme yapmış olduğumuz kolonlardan birinin maskelemesini kaldırmak istersek Aşağıdaki script yardımıyla kaldırabilirsiniz.
USE DatabaseName ALTER TABLE [TableName] ALTER COLUMN CoulumnName DROP MASKED
Daha önceden maskeleme yapılmış bir kolonun maskeleme biçimini değiştirmek istersek, Örneğin ADI kolonu daha önce default fonksiyonla maskelendi bu maskelemeyi partial yöntemiyle değiştirmek istersek;
Eğer bu işlemleri yaparken Yetki hatası alıyorsanız kullanıcınız yeni oluşturduğunuz kullanıcıda kalmış olabilir bu işlemi geri almak için ise “REVERT” kullanabilirsiniz. REVERT işlemi ile kullanıcıyı EXECUTE AS olarak tanımlanan kullanıcıdan önceki kullanıcıya geri alabiliriz.
Oluşturmuş olduğunuz tablonun hangi kolonlarında maskeleme olduğunu görmek isterseniz aşağıdaki script işinize yarayacaktır.
Umarım işinize yarayacak bilgiler verebilmişimdir. Herkese iyi çalışmalar…
0 Yorum