
Uygulama günlüğü ile yasal kayıt aynı şey değil
Her yazılım ekibinin bir günlük düzeni vardır: hata kayıtları, istek süreleri, hata ayıklama çıktıları. Bu kayıtlar geliştiricinin işini kolaylaştırmak içindir ve genellikle kısa süre tutulup silinir. Yasal yükümlülükler için tutulan trafik kaydı ise bambaşka bir varlıktır: Belirli alanları eksiksiz içermesi, değiştirilmemiş olduğunun gösterilebilmesi, belirli bir süre boyunca saklanması ve bu süre dolduğunda güvenli biçimde imha edilmesi gerekir.
Sosyal ağ kurmak isteyen ekiplerin sık yaptığı hata, bu iki ihtiyacı aynı günlük altyapısıyla karşılamaya çalışmaktır. Sonuçta ya hata ayıklama günlükleri gereksiz yere uzun süre saklanır ya da yasal kayıtlar günlük döndürme ayarlarının kurbanı olur. Mimarinin ilk kararı bu iki akışı baştan ayırmaktır.
Ayrım fiziksel düzeyde de yapılabilir: Yasal kayıtlar ayrı bir veritabanında ya da ayrı bir depolama alanında, ayrı erişim anahtarlarıyla tutulur. Böylece bir geliştirici günlük araçlarına bakarken yasal kayıtlarla karşılaşmaz.
Hangi alanlar kaydedilmeli?
Bir trafik kaydı satırının asgari içeriği şunlardır: hesabın iç kimliği, olay türü (oturum açma, not yayımlama, sohbet başlatma gibi), istemcinin IP adresi, kaynak port, sunucu tarafında alınan hassas zaman damgası ve saat dilimi, cihaz ve tarayıcı bilgisi. IPv6 adresleri tam hâliyle saklanmalı, IPv4 adresleri paylaşımlı bağlantılar nedeniyle mutlaka kaynak portla birlikte tutulmalıdır.
Bir platform yük dengeleyici ya da ters vekil sunucu arkasında çalışıyorsa, istemcinin gerçek IP adresi ve portu bu katmandan güvenilir biçimde aktarılmalıdır. Aksi takdirde kayıtlarda yalnız kendi vekil sunucunuzun adresi görünür ve kayıtların tamamı işe yaramaz hâle gelir. Bu, canlıya geçmeden önce mutlaka sınanması gereken bir ayrıntıdır.
Kaydedilmemesi gerekenler de netleştirilmelidir: notun ya da mesajın içeriği trafik kaydına yazılmaz, içerik kendi tablosunda ve kendi sürüm geçmişinde tutulur. Trafik kaydı ile içerik arasındaki bağ yalnız kimlik alanlarıyla kurulur.
Değiştirilemezlik ve bütünlük
Bir kaydın yasal değeri, sonradan değiştirilmediğinin gösterilebilmesine bağlıdır. Bunun için kayıtlar yalnız eklenebilen bir yapıda tutulmalı, güncelleme ve silme işlemleri uygulama kullanıcısına hiç açılmamalıdır. Her kayıt satırına bir önceki satırın özet değerini içeren zincirli bir SHA-256 özeti eklemek, araya satır eklenmesini ya da satır silinmesini tespit edilebilir kılar.
Zincirin başı ve belirli aralıklardaki ara özetler, ana veritabanından bağımsız bir yere yazılırsa güvence daha da artar. Böylece veritabanına erişimi olan biri bile zinciri baştan yeniden üretse, dışarıda saklanan ara özetle uyuşmazlık ortaya çıkar.
Bütünlük denetimi yalnız bir ihtiyaç anında değil, düzenli aralıklarla otomatik olarak yapılmalıdır. Zincirde bir kopukluk tespit edildiğinde bu durum anında platform yöneticisine ve hukuk sorumlusuna bildirilmeli, olay ayrı bir güvenlik kaydı olarak incelenmelidir.
Saklama süresi yapılandırmada, kodda değil
Trafik bilgisi için öngörülen saklama süresi mevzuatta belirlenir ve zaman içinde değişebilir. Bu süreyi kodun içine sabit bir sayı olarak yazmak, her değişiklikte yeni bir sürüm yayımlamayı gerektirir ve yanlış süreyle çalışma riskini büyütür. Doğrusu, saklama süresini yönetim panelinde ayarlanabilir bir değer olarak tutmak ve bu ayarın her değişikliğini de denetim izine yazmaktır.
Süre dolan kayıtların imhası da otomatik ve belgelenmiş olmalıdır. Hangi tarih aralığındaki kayıtların ne zaman imha edildiği ayrı bir imha tutanağına yazılır. Ancak hakkında yasal talep ya da devam eden bir inceleme bulunan kayıtlar, ilgili talep kapanana kadar imha kapsamından çıkarılabilmelidir; bunun için kayıtlara bir “saklama kilidi” işareti konabilmelidir.
Erişim katmanı
Trafik kayıtlarına doğrudan veritabanı erişimi olabildiğince az kişide bulunmalıdır. Yönetim panelinden yapılan her sorgu, sorgulayan kişinin rolüne göre süzülür ve sorgunun kendisi denetim izine yazılır. Kuytuna demosunda moderatör rolü IP ve port bilgisini hiç göremez; hukuk ve uyum rolü ise bir kullanıcının oturum geçmişini ancak gerekçe seçip not yazdıktan sonra açabilir.
Aynı IP ya da cihazdan açılmış çoklu hesapları işaretlemek, kötüye kullanım tespiti için yararlı bir araçtır. Ancak bu işaret yalnız bir ipucudur; bir yurt yurdu, bir kafe ya da bir mobil operatör aynı IP'yi yüzlerce kişiye paylaştırabilir. İşaret, kendi başına yaptırım gerekçesi olarak kullanılmamalıdır.
Ölçek ve maliyet
Her oturum ve her önemli işlem için bir satır yazmak, büyüyen bir platformda hızla milyonlarca satıra ulaşır. Bu kayıtların sıcak veritabanında tutulması gerekmez; belirli bir yaştan sonra sıkıştırılarak daha ucuz, yalnız okunabilir bir depoya taşınabilir. Önemli olan, taşıma sırasında zincir özetlerinin korunması ve gerektiğinde belirli bir hesap ve tarih aralığı için kayıtların makul sürede bulunabilmesidir.
Bu metin bir demo içindir; gerçek kurulumda hukukçu onayı gerekir. Briefikir, Kuytuna demosundaki trafik kaydı modelini gerçek bir veritabanı ve arşiv katmanıyla kurmak isteyen ekiplere mimari tasarım ve uygulama desteği verebilir; saklama süresinin belirlenmesi ise işletmenin hukuk danışmanının görevidir.
Saat, zaman dilimi ve tutarlılık
Bir trafik kaydının değeri, zaman damgasının doğruluğuna bağlıdır. Sunucuların saatleri güvenilir bir zaman kaynağıyla düzenli olarak eşitlenmeli, kayıtlar tek bir zaman diliminde ya da açık bir saat dilimi bilgisiyle yazılmalıdır. Birden fazla sunucunun farklı saatlerle kayıt yazdığı bir yapıda, bir oturumun hangi sırayla gerçekleştiğini sonradan kanıtlamak zorlaşır.
Zaman damgası istemciden değil, sunucudan alınmalıdır. İstemcinin gönderdiği saat bilgisi isteğe göre değiştirilebilir; en fazla ek bir bilgi olarak saklanabilir.
Sık sorulanlar
Kaynak port neden ayrıca kaydediliyor?
Paylaşımlı IPv4 bağlantılarında aynı IP adresini çok sayıda kişi kullanır; bir oturumu ayırt edebilmek için kaynak port ve hassas zaman damgası gerekir.
Trafik kaydında notun içeriği de tutulur mu?
Hayır. İçerik kendi tablosunda ve sürüm geçmişinde saklanır; trafik kaydı yalnız bağlantı ve işlem bilgilerini içerir.
Bu yazı genel bilgilendirme amaçlıdır, hukuki tavsiye değildir. Kurulumdan önce kendi hukuk danışmanınızla değerlendirin.