SQL 2016 Dynamic Data Masking Nedir? Microsoft SQL 2016 ile birlikte Data maskeleme alanında bir yenilik ile karşımıza çıktı. Bildiğiniz ve hepinizin fark ettiği gibi bazı Dataları son kullanıcıya açık bir şekilde göstermek güvenlik açığıdır. Hepiniz bankalarda havale yaparken ya da alışverişlerinizde kredi kartınızın ilk ve son 4 rakamını açık diğer rakamların ise * ya da x işareti ile maskelendiğini fark etmişsinizdir. Ya da ad ve soyadınızın ilk iki harfi açık diğer harflerin ise gizli olduğunu görmüşsünüzdür. Bu yazılım ile yapılan bir maskeleme işlemleri artık SQL Server 2016 ile çok basit bir şekilde yapılabilmekte. Ve yetkisi olmayan kullanıcılar bu Data’yı herhangi bir Select sorgusunda tanımladığınız algoritmaya göre maskelenmiş bir şekilde görebilmekte.
Resim-1
Şimdi bu yöntemi biraz daha detaylı olarak irdelemeye başlayalım.
SQL 2016 Dynamic Data Masking nasıl yapılır?
Aslında yapılması gereken işlem basit. Bunun için size bir kod parçacığı üzerinden örnekleme ile anlatacağım işin prosedürünü.
CREATE TABLE Membership
(MemberID int IDENTITY PRIMARY KEY,
FirstName varchar(100) MASKED WITH (FUNCTION = ‘partial(1,”XXXXXXX”,0)’) NULL,
LastName varchar(100) NOT NULL,
Phone# varchar(12) MASKED WITH (FUNCTION = ‘default()’) NULL,
Email varchar(100) MASKED WITH (FUNCTION = ’email()’) NULL);
Öncelikle yukarıdaki SQL kodu ile bir tablo yaratalım. Bu tablodaki Firstname kolonunu maskeleyelim ve amacımız ilk harfi göstermek diğer harfleri ise maskelemek olsun. Telefonda Default E-mail’de ise özel olarak tanımlanmış email fonksiyonu ile maskeleme tanımlayalım. Sonrasında ise 3 adet satır ekleyelim.
INSERT Membership (FirstName, LastName, Phone#, Email) VALUES
(‘Roberto’, ‘Tamburello’, ‘555.123.4567’,‘RTamburello@contoso.com’),
(‘Janice’, ‘Galvin’, ‘555.123.4568’, ‘JGalvin@contoso.com.co’),
(‘Zheng’, ‘Mu’, ‘555.123.4569’, ‘ZMu@contoso.net’);
Sysadmin rolündeki bir kullanıcı ile sorgu çekerseniz eğer hiçbir değişiklik farketmeyeceksiniz.
SELECT * FROM Membership;
Resim-2
Şimdi maskeleme yaptığımız alanı test etmek için bir kullanıcı yaratalım.
CREATE USER TestUser WITHOUT LOGIN;
GRANT SELECT ON Membership TO TestUser;
EXECUTE AS USER = ‘TestUser’;
SELECT * FROM Membership;
REVERT;
Yukarıdaki kod parçacığı ile de bir test kullanıcısı oluşturup bu kullanıcıya sadece Select yetkisi veriyoruz. Tekrar Select sorgusunu çalıştırdığımızda ise sonuç;
Resim-3
İsim alanında sadece kişinin ilk harfini telefon ve mailde ise tanımladığımız fonksiyonlara göre gelen değerleri görmekteyiz.
Ek olarak mevcut bir tabloda maskeleme eklemek veya silmek için de aşağıdaki komutu kullanabilirsiniz.
ALTER TABLE Membership
ALTER COLUMN LastName ADD MASKED WITH (FUNCTION = ‘partial(2,”XXX”,0)’);
ALTER TABLE Membership
ALTER COLUMN LastName DROP MASKED;
Kullanıcı yetkilendirmesi için ise aşağıdaki kodu kullanabilirsiniz.
GRANT UNMASK TO TestUser;
EXECUTE AS USER = ‘TestUser’;
SELECT * FROM Membership;
REVERT;
Ayrıca maskelenen veriyi hangi kullanıcını görüp göremeyeceği bilgisini ayarlamak için ise SQL kullanıcının o veritabanı için oluşan yetkilendirme alanlarını kullanabilirsiniz. Bunun için obje olarak Veritabanı’nı seçmelisiniz dolayısı ile o Veritabanı için Unmask yetkisini Grant veya Deny olarak değiştirebilirsiniz.
Resim-4
Başka bir makalede buluşmak dileğiyle.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs : SQL 2016 Dynamic Data Masking nedir, SQL 2016 Dynamic Data Masking kurulumu, SQL 2016 Dynamic Data Masking ayarlari, SQL 2016 Dynamic Data Masking settings, SQL 2016 Dynamic Data Masking, sql 2016 Data maskeleme, Data maskeleme nasil yapilir, Data maskeleme ayarlari, sql Data maskeleme,