Kişisel Veri (PII) Dinamik ve Statik Maskeleme (Anonymization)
Müşteri temsilcileri, analistler ve test ortamları için kredi kartı, TC Kimlik No, e-posta ve telefon gibi hassas PII verilerini rol bazlı maskeleyin.
Temel Güvenlik ve Uyum Hedefleri
Mimari ve Çalışma Prensibi
Dinamik Veri Maskeleme (DDM), veritabanındaki fiziksel veriyi değiştirmeden sorgu anında maskeleyerek döner. Statik Veri Maskeleme (SDM) ise üretimden staging ortamına veri taşırken PII kolonlarını geri döndürülemez hash/faker fonksiyonlarıyla kalıcı olarak dönüştürür.
-- PostgreSQL Anon (postgresql_anonymizer) veya SQL Server DDM Örneği
-- 1. SQL Server Dynamic Data Masking
ALTER TABLE dbo.Customers
ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()');
ALTER TABLE dbo.Customers
ALTER COLUMN CardNumber ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)');
-- 2. Düşük yetkili kullanıcıya okuma izni (Maskeli görür)
GRANT SELECT ON dbo.Customers TO SupportRole;
-- UNMASK yetkisi verilmediği sürece maskelenmiş veri döner.Adım Adım Uygulama Rehberi
Canlı veya test ortamında güvenle devreye almak için sıralı operasyon adımları.
PII Envanteri ve Sınıflandırması
Tablolardaki kimlik, telefon, e-posta, IBAN ve sağlık verisi gibi PII alanlarını etiketleyin.
SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE column_name ILIKE ANY (ARRAY['%email%', '%phone%', '%tc_kimlik%', '%card%', '%iban%']);Maskeleme Fonksiyonlarını Tanımlama
Kolon türüne uygun maskeleme kurallarını şemaya uygulayın.
-- PostgreSQL Anonymizer Örneği
SECURITY LABEL FOR anon ON COLUMN users.phone
IS 'MASKED WITH FUNCTION anon.partial(phone, 2, "$$$$", 2)';
SECURITY LABEL FOR anon ON COLUMN users.email
IS 'MASKED WITH FUNCTION anon.email()';Uygulama ve Test Kullanıcılarını İzolasyon
Destek ve raporlama rollerini maskeli görünüme zorlayın, yalnızca yetkili servis kullanıcılarına UNMASK hakkı tanıyın.
CREATE USER support_agent WITH PASSWORD 'SecurePass!';
GRANT SELECT ON users TO support_agent;
-- support_agent 'MASKED' veri okuyacaktır.En İyi Saha Pratikleri
- ✓Staging ve dev veritabanlarına canlı yedek yüklerken mutlaka CI/CD pipeline içinde statik maskeleme çalıştırın.
- ✓Maskeleme kurallarını uygulama katmanı yerine veritabanı motorunda tanımlayarak doğrudan SQL istemcilerinde de koruma sağlayın.
Sık Yapılan Hatalar & Tuzaklar
- ⚠WHERE koşullarında maskeli kolonlar üzerinden tahmin yürütme (Inference attack) açıklarına karşı filtre kısıtlamalarını ihmal etmek.
- ⚠Yedekleme dosyalarının (`.dump`, `.bak`) şifresiz ve maskesiz olarak geliştiricilerin yerel bilgisayarlarına indirilmesi.