Konuyu Açan #1
SQL Üretim Verilerini Test Ortamında Maskeleme

Giriş ve Amaç
Üretim verileri çoğu zaman hassas kişisel bilgileri içerir ve test/QA süreçlerinde bu verilerin yanlış kullanımı risk doğurur. Maskeleme, gerçek değerlerin yerine anlamını koruyan sahte/katsayılı değerler koyarak güvenlik ve yasal uyumu sağlayan bir uygulamadır. Amaç, test senaryolarını çalıştırırken iş mantığını bozmadan verinin niteliğini korumaktır: tarih bütünü, sayı aralıkları, uluslararası formatlar ve referans bütünlükleri maskeleme sonrası da çalışır halde olmalıdır.

Kapsam ve stratejiler
  • Maskeleme seviyesi: Enine (full) maskeleme yerine alan bazlı maskeleme seçin. Örneğin ad/soyadlar için basit hileli isimler, e-posta için sahte adresler, telefon için son dört haneyi koruyup kalanını gösterme.
  • Kural tabanlı yaklaşım: Verinin tipine göre maskelenme kuralları belirleyin. String alanlarda karakter bazında, sayısal alanlarda aralıkları ve formatları koruyan maskeleme kullanın.
  • Referans bütünlüğü: FK ile bağlı kayıtlar bozulmasın. Maskeleme dışında olmayan alanlar, ilişkileri kırmadan çalışmalıdır.
  • Zamana duyarlılık: Timestamps ve tarih alanlarında gerçek aralıklar korunabilir (örneğin ay ve gün formatı), ancak yıl veya saat gibi detaylar maskelenebilir.
  • Performans kaygısı: Büyük tablolarda maskeleme işlemi çift yönlü olabilir; test verileri çoğunlukla read-onlyyse, view-based maskeleme veya dynamic data masking (DDM) çözümleri değerlendirilebilir.


Uygulama adımları
  1. Envanter oluşturun: Üretim verilerini içeren tabloları ve kolonları listeleyin. Hangi alanların maskeleme gerektirdiğini, hangi alanların kalıcı referanslar için gerekli olduğunu belirleyin.
  2. Maskeleme şeması tasarlayın: Her alan için hedeflenen davranışı belirleyin.

  • İsimler: Gerçek adlar yerine sahte adlar veya öğeler.
  • E-posta: kullanıcı@domain.tld formatını koruyarak kullanıcı kısmını maskeleme.
  • Telefon: son dört hane sabit kalabilir, önceki kısmı x'ler veya rastgele rakamlar.
  • Adres: Sokak ve şehir bilgisi korunsun ama tam adres elemanları yerine bölgesel benzetimler.
  • Doğum tarihi: Yaş aralığını veya ay/gün yüzeyini koruyarak yıla bağlı hassasiyeti düşürme.

  1. Maskeleme tekniklerini seçin:

  • Sabit dönüşüm (deterministic masking): Aynı girdiye aynı çıktı; testin tekrarlanabilirliğini sağlar.
  • Rastgele maskeleme: Her çalışmada farklı değer; güvenlik risklerini artırabilir, ama test çeşitliliği için kullanışlı olabilir.
  • Şifreleme benzeri dönüşüm: Anahtar yönetimiyle reversible maskeleme, gerektiğinde orijinal değere dönme olanağı sağlar.

  1. Uygulama örneği (basit SQL yaklaşımı):

  • Ad ve soyadı maskeleme: UPDATE kullanıcılar SET ad = CONCAT(LEFT(ad,1), REPEAT('', LENGTH(ad)-1)), soyad = CONCAT(LEFT(soyad,1), REPEAT('', LENGTH(soyad)-1)) WHERE ortam = 'test';
  • E-posta maskeleme: UPDATE kullanıcılar SET mail = CONCAT(SUBSTRING(mail,1,3), '*@', SUBSTRING(mail, LOCATE('@', mail)+1)) WHERE ortam = 'test';
  • Telefon maskeleme: UPDATE kullanıcılar SET telefon = CONCAT('*-', RIGHT(telefon, 4)) WHERE ortam = 'test';

  1. Doğrulama ve güvenlik: Maskeleme sonrası tüm referans integritesi korunuyor mu? Test hesapları üzerinde güvenlik denetimleri yapın; maskeleme kriterlerini gerektiğinde güncelleyin.
  2. Taşınabilirlik ve temizleme: Test verisi tamamlandığında maskeleme kurallarını audit edilip gerektiğinde geri dönüşüm prosedürü uygulanır.


Sonuç ve güvenlik çıkarımları
Maskeleme, test süreçlerini güvenli ve yasal uyumlu tutarken iş mantığına dair kontrolleri bozmamaya odaklanır. Deterministik maskeler tekrar eden testlerle karşılaştırma yapmayı kolaylaştırırken, daha yüksek güvenlik gereksinimlerinde reversible maskelerle güvenlik ve esneklik arasında denge kurulabilir. Üretim verisini mümkün olduğunca az kısıtlayıcı bir şekilde hazırlamak, testlerin güvenli ve güvenilir yürütülmesini sağlar.

Her kurguya uygun spesifik bir senaryo varsa paylaşın; mevcut tablo yapınızı ve hangi alanların maskeleme gerektirdiğini belirtirseniz, uyumlu adımlarla özelleştirilmiş bir plan çıkarayım.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 3, Üyeler: 3, Misafirler: 0)
Toplam: 3 (üyeler: 3, misafirler: 0)
0 alıntı seçildi