Bilgi güvenliği, bir varlık türü olan bilginin izinsiz veya yetkisiz bir biçimde erişim, kullanım, değiştirilme, ortadan kaldırılma ve hasar verilmesini önlemek olarak tanımlanır. Gizlilik, bütünlük ve erişilebilirlik olarak üç temel unsurdan oluşur. Bu üç durumdan biri zarar görürse güvenlik zafiyeti oluşur. Bilgi güvenliği ve kişisel verilerin korunması günümüzde en çok ihtiyaç duyulan konulardan biridir.
Kişisel veri, Kişisel Verilerin Korunması Kanunu’nda[1] “kimliği belirli veya belirlenebilir gerçek kişiye ilişkin her türlü bilgi” olarak ifade edilir. Bu anlamda yalnızca gerçek kişilere ait Kişisel Veri kanun kapsamına alınmıştır ve bu kişilerle ilişkilendirilecek her türlü bilgi bu kanun kapsamında korunmaktadır. Gelişen teknoloji ile birlikte kişilerin özel hayat gizliliği her geçen gün zorlaşırken kişisel verilerin korunması ile ilgili gereklilikler bu kanunda açıkça belirtilmiştir. Bu kanun gereğince kişisel verilerin korunması için verilerin silinmesi, yok edilmesi veya anonim haline getirilmesi gerekmektedir. Bu durum, “Kişisel Verilerin Silinmesi, Yok Edilmesi veya Anonim Hale Getirilmesi” yönetmeliğinde[2] açık şekilde belirtilmiştir. Bu yönetmeliğin 10. Maddesinde, kişisel verilerin anonim hale getirilmesi ile ilgili bilgiler aşağıdaki şekilde belirtilmiştir;
Kişisel verilerin anonim hale getirilmesi özellikle test ortamlarında mutlaka uygulanması gereken bir yöntemdir zira test ortamlarında geliştiricilerin geliştirme yapabilmek için canlı ortamlara göre daha geniş yetkilerle erişim yapmaları kişisel verilerin daha korumasız hale gelmesine sebep olur.
Veritabanlarında tutulan hassas verilerin anonim hale getirilebilmesi için kullanılan yöntemlerin en yaygın olanı veri maskelemedir. Veri maskeleme, tablolarda tutulan verilerin çeşitli yöntemler ile değiştirilerek orijinalinden tanınmaz hale getirilmesi işlemidir.
Oracle veritabanları için veri maskeleme işlemini Oracle Enterprise Manager 12c Cloud Control üzerinde sunulan Data Masking eklentisini kullanarak yapacağız. Sürecin tamamını gösterebilmek adına, bu makalede örnek olarak TC Kimlik numarası içeren kolonları maskelemeye çalışacağız.
Veri maskeleme işleminin ilk adımı; hassas bilgi olarak tanımladığımız veri tipini içeren kolonların tespit edilmesidir. Dolayısıyla, öncelikle veritabanında TC Kimlik numarası içeren kolonları tespit etmemiz gerekir. Bu tespitin yapılabilmesi için aşağıda belirtilen adımları sırayla uygulayacağız;
Oracle Enterprise Manager Cloud Control 12c arayüzünden giriş yapıyoruz. Menüden Enterprise > Quality Management > Application Data Modeling sayfasına giriyoruz.
Actions > Sensitive Column Types girdiğimizde karşımıza hazır olarak gelen hassas kolon tiplerini göreceğiz. Bu tipler kredi kartı numarası, mail adresi, telefon no, IP adresi, Amerikan sosyal güvenlik numarası gibi birçok veri tipini içermektedir. Bizim örneğimizde kullanacağımız TC Kimlik numarası veri tipi bu hazır gelen veri tipleri arasında bulunmadığından TC Kimlik numarası içeren kolonları bulabilmek için yeni bir hassas kolon tipi yaratmamız gerekiyor. Bunun için Actions > Sensitive Column Types > Create adımlarını takip ederek yeni kolon tipi yaratma menüsüne giriyoruz. TC Kimlik Numarası için aşağıda görülen şekilde ayarları yapıyoruz.
Bu ayarlarda “Search Patterns” kısmında girilmesi gereken alanların kullanım amaçları şu şekildedir:
Column Name: “;” ile ayrılmış her bir pattern, veritabanında ilgili kapsamda bulunan tablolarda yer alan kolonların adlarında aranır. Örneğin, kapsamda seçilen şemada bir tabloda “TC_ID” şeklinde bir kolon bulunuyorsa, o kolon detayları aşağıda anlatılacak keşif işleminde potansiyel hassas veri taşıyan kolon olarak değerlendirilir.
Column Comment: “;” ile ayrılmış her bir pattern, yukarıdakine benzer şekilde kolon açıklaması kısımlarında taranır.
Column Data: Bu kısımda belirtilen “Oracle Regular Expression” şeklindeki pattern, kapsamdaki tabloların kolon verilerinde aranır. Bizim örneğimizde, TC Kimlik no, tam olarak 11 haneden oluşan bir sayı olduğundan ^[0-9]{11}$ şeklinde bir regular expression girilmiştir.
Sonraki adımda, bu tipteki verilerin hangi veritabanında ve bu veritabanında hangi şemada bulmak istediğimizi ayarlamamız gerekmektedir. Bunun için yeni bir uygulama verisi modeli yaratmalıyız. Bunun için Application Data Modeling kısmına gidiyoruz ve Create diyoruz. Açılan ekranda veri maskelemesi yapılacak kapsamı belirlemek için önce veritabanı ve sonrasında ilgili şemaları seçiyoruz. Belirlediğimiz kapsamda, aradığımız hassas veri tipine ait kolonları bulmak için, oluşturduğumuz uygulama veri modelini seçip Edit’e tıklıyoruz. Açılan sayfada “Sensitive Columns” sekmesine geçerek Actions > Create Sensitive Columns Discovery Job giriyoruz. Açılan ekranda, aşağıdaki gibi, veri modelimizden keşfetmek istediğimiz şemaları ve hassas kolon tiplerini seçiyoruz ve başlatıyoruz.
Bu job’ın çalışma süresi seçtiğimiz şemadaki veri büyüklüğüne göre değişiklik gösterebilir. Job tamamlandıktan sonra Sensitive Columns > Sensitive Column Discovery Results giriyoruz ve burada sonuçları görüntülüyoruz.
Gelen ekranda, seçtiğimiz hassas kolon tipine göre, potansiyel hassas veri olarak değerlendirilen kolonlar listelenir. Listelenen kolonların hangi sebeple potansiyel hassas veri içerdiği “Name” ve “Data” kolonlarından anlaşılabilir. “Name” kısmında onay işareti olan kolonlar, belirlediğimiz kolon adı patternlerine uyanlardır. “Data” kısmında beliritlen yüzde değeri ise o kolonda aranan data tipine uyan kayıtların oranıdır. Listede gelen her bir potansiyel kolon konunun uzmanı tarafından incelenir ve hassas bilgi olarak değerlendirilen kolonlar Set Sensitive Status > Sensitive olarak işaretlenir.
Hassas bilgi içerdiği belirlenen kolonlarda veri maskeleme işlemi yapılabilmesi için veri maskeleme scriptleri oluşturulması gerekir. Oracle Enterprise Manager ile bu scriptlerin otomatik olarak oluşturulması oldukça kolaydır. Bunun için, Enterprise > Quality Management > Data Masking Definitions kısmından, Create ‘e tıklıyoruz ve aşağıdaki gibi daha önce oluşturduğumuz uygulama veri modelini seçiyoruz.
Şimdi ise daha önceden belirlediğimiz hassas kolonları nasıl maskelemek istediğimizi belirlememiz gerekiyor. Bu yüzden Columns > Add ‘e tıklıyoruz ve uygulamak istediğimiz şemayı ile hassas kolon tipini seçerek Search yapıyoruz. Burada aşağıdaki gibi daha önceden belirlediğimiz hassas kolonlar karşımıza geliyor ve hangi kolonlara veri maskeleme uygulamak istiyorsak onları seçiyoruz. Sonrasında define format and add ‘e tıklıyoruz.
Sonraki adımda, seçilen kolondaki verileri hangi yöntemle maskelemek istediğimizi Format Entry kısmından belirliyoruz. Örneğin, belirlediğimiz TC kimlik no kolonunda tüm kayıtları sabit olarak “11111111111” yapmak istiyorsak, “Fixed Number” seçerek Value bölümüne “11111111111” yazmamız yeterli olacaktır.
Oracle Enterprise Manager ile birlikte gelen Format Entry kütüphanesinde, aşağıda görüleceği üzere, birçok farklı format kullanarak maskeleme scripti oluşturmak mümkün. Birkaç örnek vermek gerekirse; “Random Numbers” ile rasgele rakamlar üretebilir, “Shuffle” ile seçilen kolondaki değerleri kendi içinde karıştırabilir, “Substitute” ile verinin belli bölümlerini başka verilerle yer değiştirtebiliriz.
Tüm bu ayarları yaptıktan sonra, maskeleme scriptini yaratmaya geçebiliriz. Enterprise > Quality Management > Data Masking Definitions bölümünden hazırladığımız maskeleme tanımını seçip, Generate Script butonuna bastığımızda, Oracle Enterprise Manager bize test ortamında uygulayabileceğimiz ve veriyi veritabanı işleyişini etkilemeyecek şekilde maskeleyebileceğimiz bir script üretecektir.