Teknoloji

KVKK ve GDPR İçin Log Anonimleştirme: IP Maskeleme ve Pseudonymization

Loglar teknik ekipler için hayati: performans analizi, saldırı tespiti, hata ayıklama, kapasite planlama… Ancak KVKK ve GDPR ile birlikte loglar artık sadece teknik bir araç değil, aynı zamanda kişisel veri içeren birer hukuki risk alanı. Özellikle IP adresleri, çerez kimlikleri, kullanıcı ajanları ve istek URL’leri yanlış kurgulanmış bir log mimarisinde doğrudan kişisel veri kategorisine giriyor. Bu noktada soru şu: Hem detaylı log tutup sistemi güvenli ve izlenebilir tutmak, hem de veri minimizasyonu ve saklama süresi sınırlaması gibi yükümlülüklere nasıl uyulur?

DCHost altyapısında yüzlerce projede gördüğümüz en kritik eksik, log anonimleştirme ve pseudonymization katmanının hiç düşünülmemiş olması. Uygulama geliştiriliyor, sunucu kuruluyor, monitoring ekleniyor; ama kimse access.log içinde tam IP, kullanıcı kimliği ve token’ların yıllarca tutulduğunu fark etmiyor. Bu yazıda KVKK ve GDPR perspektifinden log verisini ele alıp, IP maskeleme, pseudonymization ve hosting logları için pratik, uygulanabilir bir yol haritası çıkaracağız. Örnekler ağırlıklı olarak Linux, Apache, Nginx ve merkezi loglama senaryolarına göre hazırlanmıştır.

KVKK, GDPR ve Log Verisi: Nerede Başlıyor, Nerede Bitiyor?

Önce kavramları netleştirelim. KVKK ve GDPR’a göre kişisel veri, kimliği belirli veya belirlenebilir gerçek kişiye ilişkin her türlü bilgidir. IP adresi, çerez ID’leri, cihaz parmak izi, kullanıcı adı, e-posta adresi gibi veriler bunun içine girer. Web ve sunucu logları da bu bilgileri sık sık içerir.

Tipik bir web sunucusu access log satırı düşünün:

192.0.2.45 - - [18/06/2024:10:15:32 +0300] "GET /hesabim/siparisler HTTP/2.0" 200 5123 "-" "Mozilla/5.0 ..."

Burada IP, ziyaret edilen sayfa (URL), zaman damgası ve kullanıcı ajanı bir araya geldiğinde belirlenebilirlik artar ve bu kayıt kişisel veri haline gelir. Bu durumda:

  • KVKK/GDPR kapsamı devreye girer
  • Veri sorumlusu olarak siz, veri işleyen olarak hosting sağlayıcınız (örneğin DCHost) yükümlülük kazanırsınız
  • Logların saklama süresi, erişim yetkileri, anonimleştirme düzeyi ve güvenliği için bilinçli karar vermeniz gerekir

KVKK ve GDPR uyumlu altyapı kurma tarafını daha geniş çerçevede ele aldığımız KVKK ve GDPR uyumlu hosting nasıl kurulur rehberinde genel ilkeleri anlattık. Bu yazıda odağı özellikle log anonimleştirme katmanına indiriyoruz.

Anonimleştirme, Pseudonymization ve Maskeleme: Aynı Şey Değil

Hukuki ve teknik tarafta en çok karışan üç kavram: anonimleştirme, pseudonymization (takma adlandırma) ve maskeleme. Bunları ayırmadan doğru log stratejisi kurmak zor.

Anonimleştirme Nedir?

Anonimleştirme, verinin artık gerçek bir kişiyle geri döndürülebilir şekilde ilişkilendirilememesi demektir. Yani bir kere anonimleştirdiğiniz logu, elinizdeki hiçbir ek bilgiyle bile gerçek kişiye geri bağlayamamanız gerekir. Örneğin:

  • IP adresinin son iki oktetini kalıcı olarak silmek (203.0.x.x gibi) ve orijinal IP’yi hiçbir yerde tutmamak
  • Çerez ID’lerini tamamen kaldırmak
  • Kullanıcı adını sadece rol bilgisiyle (“editor”, “anon” gibi) değiştirmek

Anonimleştirilmiş loglar, çoğu durumda KVKK/GDPR kapsamından çıkar; ancak pratikte “gerçekten geri döndürülemez” olduğundan emin olmak hiç kolay değildir.

Pseudonymization (Takma Adlandırma) Nedir?

Pseudonymization, kişiyi doğrudan tanımlayan verinin, sadece ek bir anahtarla (örneğin gizli bir salt veya lookup tablosu) geri çözülebilen bir takma ad ile değiştirilmesidir. Örnekler:

  • IP adresini SHA-256 ile hash’leyip veritabanında saklamak
  • Kullanıcı ID’sini rastgele bir UUID ile eşleyip, eşleme tablosunu ayrı bir sistemde tutmak

Burada önemli nokta şu: Pseudonymization KVKK/GDPR kapsamını ortadan kaldırmaz, sadece riski ve etkiyi azaltır. Çünkü doğru anahtarla veri tekrar kişiye bağlanabilir. Denetimlerde bu veri hâlâ kişisel veri sayılır.

Maskeleme Nedir?

Maskeleme genellikle teknik bir yöntemdir; hem anonimleştirme hem de pseudonymization için kullanılabilir. Örneğin:

  • IP’nin son oktetini “0” yapmak (192.0.2.45 → 192.0.2.0)
  • Telefon numarasının ortasındaki 4 haneyi yıldızlamak
  • E-posta adresinin kullanıcı adını kısmi göstermek (ali***@ornek.com)

Maskelemenin anonim mi yoksa pseudo mu sayılacağı, maskelemeden önceki orijinal veriyi nerede ve ne kadar süre sakladığınıza bağlıdır.

IP Maskeleme Stratejileri: IPv4 ve IPv6 için Yaklaşımlar

Log anonimleştirmenin kalbi IP adresleri ile başlar. Çünkü birçok log türünde kişisel verinin en belirgin öğesi IP’dir. Hem KVKK/GDPR riskini düşürmek hem de güvenlik analitiğinden çok fazla ödün vermemek için doğru maskeleme stratejisini seçmek kritik.

IPv4 Maskeleme Örüntüleri

IPv4 adresleri için en yaygın stratejiler şunlardır:

  • /24 seviyesinde maskeleme: Son okteti sıfırlamak (192.0.2.45 → 192.0.2.0)
  • /16 seviyesinde maskeleme: Son iki okteti sıfırlamak (192.0.2.45 → 192.0.0.0)
  • Tam anonimleştirme: IP’yi tamamen kaldırmak veya rastgele bir ID ile değiştirmek

/24 çoğu web analitiği senaryosu için yeterli granülerlik sunarken, tekil kullanıcıyı doğrudan ayırt etmeyi zorlaştırır. Güvenlik analizi (örn. IP bazlı saldırı tespiti) kritikse, pseudonymization ile hash’lenmiş IP kullanmak da bir seçenektir.

IPv6 Maskeleme Örüntüleri

IPv6 adresleri çok daha geniş bir adres alanına sahip olduğu için maskeleme genellikle ilk 48 veya 64 biti koruyup kalanını sıfırlamak şeklinde yapılır:

  • /64 maskeleme: 2001:db8:abcd:1234:5678:90ab:cdef:0001 → 2001:db8:abcd:1234::
  • /48 maskeleme: 2001:db8:abcd:1234:5678:90ab:cdef:0001 → 2001:db8:abcd::

Bu sayede aynı ağ bloğundan gelen trafiği görebilir, ama tekil cihazı doğrudan teşhis etmeyi zorlaştırırsınız. IPv6 tarafını ihmal etmemek önemli; birçok ortamda sadece IPv4 için maskeleme yapılıp IPv6 tamamen unutuluyor.

Apache ve Nginx’te Gerçek Zamanlı IP Maskeleme

En sağlıklı yöntem, log anonimleştirmeyi kaynakta yapmak, yani web sunucusunun log’a yazdığı satırı en başta maskelemeden geçirmesidir. Böylece disk üzerinde hiçbir zaman “ham” IP tutulmamış olur.

Apache için Yaklaşım

Apache’de LogFormat direktifiyle custom bir format tanımlayabilir ve IP yerine maskeleme mantığı kurabilirsiniz. Basit bir örnek; IP’nin son oktetini sıfırlamak yerine, mod_remoteip ve çevre değişkenleriyle isteği bir ara katmandan geçirip maskelemek mümkündür. Örneğin bir reverse proxy veya WAF tarafında X-Forwarded-For yerine zaten maskeli IP yazdırabilirsiniz. Apache tarafında ise:

LogFormat "%a %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

Burada %a gelen IP’yi temsil eder. Eğer önde duran bir Nginx reverse proxy’de maskeleme yapar ve Apache’ye sadece maskeli IP’yi geçirirseniz, Apache logları otomatik olarak anonim hale gelir.

Nginx için Yaklaşım

Nginx tarafında daha esnek bir yapı kurabilirsiniz. IP maskeleme için map ve log_format kombinasyonu oldukça işe yarar. Basitleştirilmiş bir örnek:

map $remote_addr $masked_ip {
    ~^(?<a>d+.d+.d+).d+$  $a.0;   # IPv4 için son okteti 0'la
    ~^(?<a>[0-9a-fA-F:]+):[0-9a-fA-F]+$  $a::; # IPv6 için son kısmı :: yap
    default  $remote_addr;
}

log_format anonymized '$masked_ip - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

access_log /var/log/nginx/access_anonymized.log anonymized;

Bu örnekte:

  • $remote_addr’ı regex ile parçalayarak $masked_ip isimli yeni bir değişkene dönüştürüyoruz
  • log_format içinde ham IP yerine $masked_ip kullanıyoruz
  • Sonuç: Diskte hiçbir zaman ham IP saklanmıyor

Benzer yaklaşımı Nginx reverse proxy mimariniz içinde de kullanabilirsiniz; önde duran Nginx, arkadaki tüm uygulamalara sadece maskelemiş adresleri geçirebilir.

Pseudonymization ile Kullanıcı Takibi ve Gizlilik Dengesi

Bazı projelerde IP’yi tamamen anonimleştirmek yeterli gelmez; özellikle güvenlik analizi, fraud tespiti veya oran sınırlama (rate limiting) gibi senaryolarda aynı kullanıcının davranışını bir süre takip etmek istersiniz. Burada pseudonymization devreye girer.

Basit bir strateji şöyle olabilir:

  • IP adresi + gün (veya saat) bilgisini birleştirin: 192.0.2.45|2024-06-18
  • Buna güçlü bir salt ekleyip SHA-256 ile hash’leyin
  • Logs’a bu hash değerini “client_id” olarak yazın, ham IP’yi hiç tutmayın

Böylece:

  • Aynı gün içinde gelen isteklerin aynı “client_id” ile geldiğini görür, saldırı tespiti yapabilirsiniz
  • Salt sadece güvenli bir ortamda tutulduğu için log sızsa bile doğrudan IP’ye geri dönmek zordur
  • Salt’ı periyodik değiştirerek riskinizi daha da azaltırsınız

Burada kilit soru: Salt’ı nerede ve ne kadar süre saklıyorsunuz? Eğer salt kalıcı ve erişilebilir durumdaysa, denetim makamları bu veriyi hâlâ kişisel veri olarak değerlendirecektir. Bu nedenle pseudonymization’ı “risk azaltıcı ama hâlâ koruma gerektiren” bir katman olarak düşünmek doğru olur.

Hangi Hosting Loglarında Anonimleştirme Gerekir?

DCHost ortamlarında en sık karşılaştığımız log türlerini ve tipik KVKK/GDPR riskini kabaca aşağıdaki gibi özetleyebiliriz.

Log Türü Örnek Kaynak Tipik Kişisel Veriler Önerilen Yaklaşım
Web erişim logları Apache, Nginx IP, URL, çerez ID, user-agent Kaynakta IP maskeleme + gerekiyorsa pseudonymization
Web hata logları Apache, Nginx, uygulama Query string, form verileri Hata mesajlarında PII’yi asla loglama, filtre katmanı
Uygulama logları PHP, Node.js, Laravel, WordPress eklentileri Kullanıcı ID, e-posta, token, IP PII loglamayı tasarımdan yasakla, gerekirse hash’le
Mail logları Postfix, Exim vb. Gönderen/alıcı adresi, IP Zorunlu saklama + kısıtlı erişim, sürelere dikkat
Sistem / auth logları syslog, journal, auth.log Kullanıcı adları, IP, komutlar Yetkiyi kısıtla, saklama süresini kısa tut

Özellikle web erişim logları için IP maskeleme ve uygulama logları için kişisel veri loglamama prensibi en kritik iki adım. E-posta ve kimlik doğrulama logları ise çoğu zaman yasal ve operasyonel gereklilikler nedeniyle bir süre ham veri içermek zorunda; bu durumda süre, erişim ve şifreleme tarafını sıkı tutmak gerekir. Bu konuda detaylı örnekleri hosting ve e-posta altyapısında log saklama süreleri yazımızda daha ayrıntılı anlattık.

Log Saklama Süreleri, Yedekler ve KVKK/GDPR Dengesi

Anonimleştirme tek başına yeterli değil; saklama süresi doğru kurgulanmamışsa yine sorun yaşanır. KVKK ve GDPR’da “gereğinden uzun süre saklamama” ilkesi çok açık. Pratikte DCHost müşterileriyle kurduğumuz tipik çerçeve şöyle oluyor:

  • Ham (anonimleştirilmemiş) loglar: 7–30 gün arası, sadece güvenlik ve hata analizi için
  • Anonimleştirilmiş loglar: 6–12 ay arası, kapasite planlama, raporlama ve istatistik için
  • Özet istatistikler: Süresiz, artık kişisel veri içermeyecek şekilde

Bu ayrımı uygulayabilmek için log pipeline’ınızı iki katmanlı düşünmeniz gerekir: Önce ham loglar toplanır, ikinci katmanda anonimleştirme/pseudonymization yapılır, üçüncü katmanda ise sadece anonim veya özet veri daha uzun süre saklanır. Bu stratejinin yedeklerle de uyumlu olması şart; yedek saklama süresi nasıl belirlenir rehberinde bu dengeyi ayrıntılı işledik.

Unutmayın: Log dosyalarınızın kopyaları yedeklerin içinde de yaşayabilir. Yani prod sunucuda 30 günde sildiğiniz bir log, 1 yıl saklanan tam yedeklerin içinde kalmaya devam edebilir. Bu yüzden yedek stratejinizde de logların saklama süresini ve anonimleştirme durumunu dikkate almanız gerekir.

Merkezi Loglama ve Anonimleştirme Katmanını Nereye Koymalı?

Tek bir VPS ile sınırlı değilseniz ve çok sunuculu bir mimaride çalışıyorsanız, loglarınızı genellikle merkezi bir sisteme taşıyorsunuzdur: ELK, Loki, Prometheus, vs. Bu durumda anonimleştirme katmanını nereye koyduğunuz kritik hale gelir.

  • Kaynakta anonimleştirme: Her sunucuda Nginx/Apache/uygulama, log’a yazmadan önce IP’yi maske veya hash’ler
  • Taşıma katmanında anonimleştirme: rsyslog, Filebeat, Promtail gibi ajanlar logu merkezi sisteme göndermeden önce filtre uygular
  • Merkezde anonimleştirme: Logstash, Loki pipeline vb. gelen log’u indexlemeden önce temizler

DCHost olarak pratikte tavsiyemiz: kritik kişisel veriyi kaynağa en yakın noktada temizlemek. Böylece hem disk, hem network, hem de merkezi log sisteminizde ham veri dolaşmamış olur. Birden fazla sunucuda merkezi loglama ve VPS log yönetimi için Loki + Promtail rehberlerimizde bu mimarinin teknik ayrıntılarını adım adım anlattık.

Linux Sunucularda Adım Adım Log Anonimleştirme Planı

Teoriyi bir kenara bırakıp pratik bir yol haritası çıkaralım. DCHost üzerinde kendi VPS’inizde veya dedicated sunucunuzda uygulayabileceğiniz tipik bir plan şu şekilde:

1. Log Envanterini Çıkarın

Önce neyi tuttuğunuzu bilin. Aşağıdaki soruları cevaplayarak başlayın:

  • Hangi servisler log üretiyor? (web, uygulama, veritabanı, mail, sistem)
  • Log dosyaları nerede, hangi formatta?
  • Loglarda IP, kullanıcı adı, e-posta, telefon, TC kimlik gibi veriler var mı?

Bu aşamada birkaç günlük log örneğini alıp, basit grep ve anonimleştirme kontrolleri yapabilirsiniz. “@”, “+90”, “TC” gibi desenler üzerinden tarama yapmak işe yarar.

2. Kişisel Veriyi Sınıflandırın

Bulduğunuz veriyi üç seviyeye ayırın:

  • Kritik PII: TC kimlik, telefon, adres, e-posta gibi açık kimlik verileri
  • Dolaylı PII: IP, çerez ID’si, kullanıcı ajanı, benzersiz cihaz ID’leri
  • Teknik veri: HTTP durum kodu, response byte, query süresi vb.

Hedefiniz: Kritik PII’yi loglardan tamamen çıkarmak, dolaylı PII’yi ise maskeleme veya pseudonymization ile riskini düşürmek.

3. Saklama Politikası Oluşturun

Her log türü için saklama süresini ve anonimleştirme zamanını belirleyin. Örneğin:

  • access.log (ham): 14 gün, sonra sil veya anonimleştir
  • access_anonymized.log: 6 ay
  • error.log: 30 gün, kritik PII yoksa 3 aya kadar uzatılabilir

Bu politikanın yedek ve arşivlerinizle de tutarlı olması gerekir. Gerekirse iki aşamalı logrotate senaryosu kurgulayabilirsiniz: önce lokal dosyada kısaltma, sonra merkezi sistemde toplu silme.

4. Web Sunucusunda IP Maskeleme Kurun

Önce en riskli ve en hacimli kaynaktan başlayın: web erişim logları. Yukarıda verdiğimiz Nginx map/log_format örneğini kendi ortamınıza uyarlayarak maskeli bir access_anonymized.log üretin. Apache tarafında ise ya önde duran bir Nginx reverse proxy ile maskeli IP geçin ya da logging’i tamamen uygulama katmanına taşıyın.

WordPress, Laravel gibi uygulamalarda kullandığınız erişim loglamayı (örneğin Laravel request logging) gözden geçirip, IP ve kullanıcı kimliklerini doğrudan loglamamaya dikkat edin. Bu tür framework bazlı güvenlik sertleştirmesini merak ediyorsanız WordPress güvenlik sertleştirme kontrol listesi yazımıza da göz atabilirsiniz.

5. Uygulama Loglarını Temizleyin

KVKK ve GDPR ihlallerinin önemli bir kısmı, uygulama geliştiricilerin “debug için her şeyi loglayalım” yaklaşımından kaynaklanıyor. Özellikle:

  • Login/register formlarında girilen e-posta ve telefonlar
  • Ödeme hatalarında kart veya isim bilgileri
  • API hatalarında tüm request gövdesini loglayan middleware’ler

Üretim ortamında bu verilerin log’lanmasını tamamen kapatın. Debug amaçlı tam gövde loglamak gerekiyorsa, bunu sadece kısa süreli, izole bir staging ortamında yapın ve logları hızla silin.

6. Merkezi Log Pipeline’ına Filtre Ekleyin

Grafana Loki, Elasticsearch veya benzeri bir merkezi loglama kullanıyorsanız, ingest katmanında ek filtreler tanımlayın. Örneğin Promtail’de belirli regex desenlerine uyan alanları kaldırabilir veya maskeleyebilirsiniz. Aynı şekilde rsyslog ile gelen satırlarda IP alanını regex ile değiştirip sonra uzak sunucuya forward etmek de mümkün.

Böylece masaüstünüzde açtığınız bir Grafana tablosunda hiçbir zaman ham IP veya hassas kişisel veri görmemiş olursunuz; bu da ekran paylaşımı, ekran görüntüsü vb. riskleri de azaltır.

7. Test, Dokümantasyon ve Denetim Hazırlığı

Yapılandırmaları devreye almadan önce mutlaka:

  • Eski ve yeni logları karşılaştırın (örneğin aynı isteğin iki log’undaki IP farkını görün)
  • Denetim sırasında gösterebileceğiniz kısa bir dokümantasyon hazırlayın: “web erişim loglarında IP şu şekilde maskelenir, ham loglar X gün saklanır” gibi
  • İç prosedürlerinize log anonimleştirme ve saklama süresi politikasını dahil edin

Böyle bir dokümantasyon, olası bir veri ihlali veya otorite denetiminde elinizi çok güçlendirir.

DCHost Altyapısında Log Anonimleştirme İçin Önerdiğimiz Mimari

DCHost olarak hem paylaşımlı hosting hem de VPS/dedicated/colocation tarafında logları güvenlik, performans ve mevzuat gereklilikleri arasında dengelemeye çalışıyoruz. Genel yaklaşımımız şöyle:

  • Paylaşımlı hosting ortamlarında, güvenlik ve performans analizi için gerekli minimum ham log tutulur, erişim sıkı şekilde sınırlandırılır
  • VPS ve dedicated sunucu kullanan müşterilerimize, log pipeline’ını tamamen kendilerine göre tasarlayabilecekleri esnek bir ortam sunarız
  • İsteyen müşteriler için, kendi VPS’leri üzerinde Grafana Loki + Promtail veya ELK tabanlı merkezi loglama mimarisini kurma ve IP maskeleme/pseudonymization katmanını birlikte tasarlama konusunda destek veririz

Özellikle çok sunuculu mimarilerde, log anonimleştirme stratejinizi hosting mimarinizle birlikte yeniden düşünmek istiyorsanız, bizimle çalışırken “log saklama süresi, anonimleştirme noktası ve merkezi log yapısı” üçlüsünü tek seferde planlamak çok daha sağlıklı oluyor.

Sık Yapılan Hatalar ve Denetimlerde Karşımıza Çıkan Senaryolar

Son olarak sahada en çok gördüğümüz hataları toparlayalım. Bunların çoğu küçük gibi görünse de KVKK/GDPR perspektifinden ciddi risk yaratabiliyor:

  • access.log içinde tam IP + kullanıcı adı + e-posta kombinasyonunu uzun süre saklamak
  • Ödeme veya destek formlarındaki tüm alanları debug modunda loglayıp, flag’i unutmak
  • Uygulama token’larını (JWT, session ID) loglara olduğu gibi yazmak
  • Logrotate yapılandırmasını ihmal edip, yıllanmış log dosyalarını aynı dizinde tutmak
  • Yedekleri planlarken logların içeriğini hiç hesaba katmamak
  • Geliştirme ortamlarında gerçek üretim verisiyle test yapmak ve bu ortamların loglarını temizlememek

Denetim veya ihlal incelemelerinde ilk bakılan yerlerden biri log dosyaları oluyor. İhlal tespit edilirken loglara bakmak zorunda kalmak, ama aynı logların içinde fazlasıyla kişisel veri görmek çoğu zaman cezayı büyüten etkenlerden biri haline geliyor.

Sonuç: Loglarınızı Susturmayın, Doğru Konuşturun

Logları tamamen kapatmak, KVKK ve GDPR riskini sıfırlamaz; sadece sizi kör bırakır. Asıl amaç, logları ihtiyacınız olduğu kadar detaylı ama gerekenden fazla kişisel veri içermeyecek şekilde tasarlamaktır. IP maskeleme, pseudonymization, saklama süresi planlaması ve merkezi log mimarisi bu denklemin ana parçaları.

DCHost olarak biz, loglarınızı hem güvenlik ve performans için etkin şekilde kullanabildiğiniz, hem de KVKK ve GDPR beklentilerine uyumlu kalabildiğiniz bir altyapıyı kurmanıza yardımcı oluyoruz. İster tek bir Linux VPS, ister çok sunuculu bir mimari üzerinde olun; log envanterinizi çıkarıp anonimleştirme stratejinizi netleştirmek için bugünden başlamak en sağlıklısı. Özellikle KVKK ve GDPR uyumlu hosting, log saklama süreleri ve merkezi loglama mimarisi hakkında daha derin teknik rehberler arıyorsanız, ilgili yazılarımızı inceleyebilir ve ihtiyaç duyduğunuz noktada DCHost ekibiyle doğrudan iletişime geçebilirsiniz.

Sıkça Sorulan Sorular

İkisi de tek başına doğru cevap değil; önemli olan iş ihtiyacı ile veri koruma yükümlülüklerini birlikte dengelemek. Güvenlik olaylarını araştırabilmek, performans sorunlarını teşhis edebilmek ve hukuki yükümlülükleri yerine getirebilmek için belirli bir süre log tutmanız gerekir. Bu nedenle pratik yaklaşım genellikle iki katmanlı olur: Kısa süreli ham log (örneğin 7–30 gün) ve daha uzun süreli anonimleştirilmiş veya özet log (örneğin 6–12 ay). Böylece hem saldırı ve hata analizine imkân verir, hem de kişisel verinin gereğinden uzun süre saklanmasını engellersiniz. Anahtar nokta; bu politikanın yazılı olması, yedeklerle uyumlu kurgulanması ve gerçekten uygulanmasıdır.

IP adresi KVKK ve GDPR yorumlarında çoğunlukla kişisel veri olarak kabul edilir, çünkü genellikle belirli bir gerçek kişiyle ilişkilendirilebilir. Ancak her senaryoda bağlam önemlidir. Örneğin sadece NAT çıkış IP’si ya da tamamen iç ağ adresleri farklı değerlendirilebilir. Yine de web erişim logları gibi son kullanıcı trafiğinin kaydedildiği alanlarda IP’yi kişisel veri olarak görmek ve buna göre hareket etmek en güvenli yaklaşımdır. Bu, IP’yi her zaman tamamen yok etmek zorundasınız demek değildir; fakat en azından son okteti sıfırlamak gibi maskeleme yöntemleriyle riskinizi düşürmeniz güçlü şekilde tavsiye edilir. Güvenlik analizi için gerekliyse, pseudonymization da bir seçenek olabilir.

Önce yapılandırma değişikliğini devreye aldıktan sonra, test amacıyla bilinen bir IP’den (örneğin kendi bağlantınızdan veya VPN üzerinden) birkaç istek gönderin. Ardından ilgili access.log veya access_anonymized.log dosyasını açarak, kendi gerçek IP’nizin orada nasıl göründüğünü kontrol edin. Eğer son oktet 0’a inmiş veya tamamen hash’lenmiş bir değere dönüşmüşse maskeleme çalışıyor demektir. Nginx kullanıyorsanız log_format içinde gerçekten $remote_addr yerine $masked_ip gibi tanımladığınız değişkenin kullanıldığını doğrulayın. Sistemin farklı sanal host’larında aynı formatın geçerli olduğundan emin olun ve logrotate sonrası yeni dosyalarda da aynı davranışın devam ettiğini kontrol etmeyi unutmayın.

En güvenli yaklaşım, mümkün olduğunca anonimleştirmeyi kaynağa en yakın noktada, yani log satırının ilk üretildiği yerde yapmaktır. Böylece hem yerel disklerde, hem ağ üzerinden taşınırken, hem de merkezi log sisteminde ham IP veya hassas veri hiç dolaşmamış olur. Ancak bazı durumlarda teknik kısıtlar nedeniyle tüm filtreleri merkezde yapmak isteyebilirsiniz. Bu senaryoda en azından taşıma katmanında (rsyslog, Filebeat, Promtail vb.) temel maskeleri uygulayıp, merkezde daha gelişmiş temizleme kuralları eklemek iyi bir orta yol olabilir. DCHost ortamlarında sıklıkla kullandığımız model; web sunucusunda IP maskeleme, ajan katmanında ek filtreler ve merkezi sistemde saklama süresi politikalarını birlikte uygulamaktır.

Doğru kurgulanmış bir anonimleştirme/pseudonymization katmanı, güvenlik analizi yapmayı imkânsız hale getirmek zorunda değildir. Örneğin IP adresini tamamen silmek yerine, /24 seviyesinde maskelemek veya zaman bazlı salt ile hash’leyip client_id üretmek, aynı saldırganın tekrar eden denemelerini görmenizi hâlâ sağlar. Önemli olan; hangi seviyede granulariteye güvenlik için gerçekten ihtiyaç duyduğunuzu belirlemek ve bunun üzerine bir maskeleme stratejisi kurmak. Çoğu projede bire bir gerçek IP yerine, tutarlı bir takma ID veya maskeleme uygulanmış IP ile de yeterli saldırı tespiti yapılabiliyor. Gerektiğinde kısa süreli ham log penceresi bırakmak da güvenlik ve mevzuat dengesini sağlamanın pratik yollarından biridir.