DDM(Dynamic Data Masking)

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 […]

DDM(Dynamic Data Masking)

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 defaultemail, 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…

 

Benzer Yazılar

İkinci Log Dosyasını Silmek – Empty file by migrating the data to other files in the same filegroup

SQL Server 14 saat önce

Bu makale bir önceki makale yapmış olduğumuz ikinci bir log dosyası oluşturduktan sonra ilk log dosyasında sorun giderilip, tekrardan eski yapımıza geçmek için  sonradan oluşturulan ikinci log dosyamızdaki veriler ilk log dosyamızın üzerine yazılıp daha sonra ikinci log dosyamızı silme işlemini ele alacağız.Neden ikinci bir log dosyası oluşturmamız gerektiğini ikinci bir log dosyası oluşturmak konulu makalemde belirtmiştim. Bu yapıyı sağlayacak olan shrink işleminde 3. Kısımda bulunan Empty file by migrating the data to other files in the same filegroup  yöntemi olmuş olacak. Şimdi uygulamalı bir şekilde oluşturmuş olduğum ikinci log dosyasını ilk log dosyası üzerine atalım. İkinci log dosyasında shrink işlemi yaparak boş alanları işletim sistemini iade ediyorum. Log dosyasının boşalması için shrink işleminden önce bir log backup alıyorum. Log backup aldıktan sonra veritabanının üzerine sağ tıklayıp Task>Shrink>Files sekmesine geliyorum. Gelen ekranda file type kısmında log seçtikten sonra file name kısmında shrink yapacağımız ikinci log dosyamızı seçiyorum. Shrink action bölümünde  Empty file […]

İkinci Bir Log Dosyası Oluşturma

SQL Server 14 saat önce

Bu makalede ikinci bir log dosya oluşturma işlemini ele almış olacağım. Karşılaşmış olduğum bir sorun üzerine bu makaleyi yazma gereği duydum. Yazım 2 makaleden oluşmaktadır. Bir gün bir veritabanımızın ldf dosyasının boyutu maksimum sınır olan 2 TB olmuştu böyle bir sorunu çözmek için ikinci bir log dosyası oluşturmuştuk. Neden oluşturduğumuz bu makaleden sonraki makalenin konusu olmuş olacak. Çünkü ikinci bir log dosyası oluşturmak mantıklı değil neden diye soracaksanız bir veritabanında sadece bir log dosyası aktif olabilir. Kısacası ya ldf dosyamız dolmuştur veya ldf dosyamızın olduğu diskte yer olmadığından başka bir disk altında büyütülür. Başka bir disk altında büyütmek tek sunucu üzerinde çalışan databaseler için geçerlidir. AlwaysOn gibi high availability çözümlerinde farklı bir disk altında olması sistemin çalışmamasına sebep olacaktır. Herhangi bir database altında  birden fazla log dosyası olduğunda  sql server sadece bir log dosyasına yazar demiştik. Bu yazma işlemi için hangi log dosyasının autogrowth değeri açıksa veritabanı altında gelen logları […]

ULAŞILAMAYAN DİSKTEKİ DATABASE FİLE KURTARMA

SQL Server 3 hafta önce

Bu makalede Sql Server ’da diskine ulaşılamayan bir veri tabanının files taşıma adımlarından bahsedeceğim. Diyelim ki database files konumlandırmış olduğumuz disklerden bir tanesi offline durumuna geçtiğini gördünüz ve diskin durumu hakkında net bilgi edinememektesiniz. Diskin içerisinde bulunan verileri kurtarmak istiyorsunuz ama disk offline durumda olduğundan dolayı içine erişim sağlayamıyorsunuz bu gibi durumda benim kullanmış olduğum bir yöntemi sizinle paylaşmak istiyorum, Robocopy. Şimdi bir örnek üzerinden adım adım neler yapabileceğimize bakalım. Öncelikle database files konumlandırını tespit ediyoruz; SELECT name as FileLogicalName, physical_name as FileLocation FROM sys.master_files WHERE database_id =DB_ID(N’MuratTest’) Görsel – 1   Database files konumlandırını tespit ettikten sonra offline durumuna getirerek ilgili files konumlarını değiştireceğiz. 1) Öncelikle database offline state çekiyoruz. use master GO ALTER DATABASE [MuratTest] SET OFFLINE WITH ROLLBACK IMMEDIATE 2) Database file taşıma işlemlerini gerçekleştiriyoruz, Command Prompt Rus aas administrator ile çalıştırılır; robocopy D:\Data3\Data D:\Data4\Data /mir /mt:60 /r:2 /w:5 /np /ts /bytes /xd >>D:\Data3\log1.txt Görsel – 2 […]

0 Yorum

Yorum Yaz

Rastgele