İz Kaydı (Audit Log) Nedir? Kim Neyi Değiştirdi?
İz kaydı, yazılımda bir veriyi kimin, ne zaman, neyi değiştirerek güncellediğini sonradan okunabilir biçimde saklayan kayıttır. Amacı hata ayıklamak değil, sorumluluğu ve değişimin geçmişini göstermektir: iskontonun ne zaman yükseldiği, bir siparişin kim tarafından iptal edildiği, bir kullanıcıya yöneticilik yetkisinin hangi tarihte verildiği bu kayıttan okunur.
Aşağıda iz kaydının sistem günlüğünden farkı, bir satırda bulunması gereken alanlar, nelerin kaydedilip nelerin kaydedilmeyeceği, öncesi-sonrası saklama biçimleri ve saklama süresi sırayla ele alınıyor.
İz kaydı ile sistem günlüğü aynı şey değil
Sistem günlüğü yazılımın teknik davranışını anlatır: hangi istek geldi, hangi hata oluştu, hangi sorgu ne kadar sürdü. Hedef kitlesi geliştiricidir, hacmi büyüktür ve kısa sürede döngüye girip silinir.
İz kaydı ise iş olaylarını anlatır ve hedef kitlesi iş birimidir. Mali müşavir, denetçi, yönetici ya da müşteri temsilcisi bu kaydı okuyabilmelidir. Bu yüzden iz kaydının dili teknik değil iş dilidir: kullanıcı 42 numaralı kayıtta durum alanını güncelledi değil, Ayşe Yılmaz, 10234 numaralı siparişi hazırlanıyor durumundan iptal durumuna aldı.
İki kaydın yeri de ayrıdır. Sistem günlüğünü dosyada tutmak normaldir; iz kaydı sorgulanabilir olmalıdır, bu yüzden veritabanında kendi tablosunda durur.
Bir iz kaydı satırında ne bulunur?
Eksik alanla tutulan iz kaydı, soruyu cevaplamadığı için kimsenin bakmadığı bir tabloya dönüşür. Asgari alanlar şunlardır.
| Alan | Ne işe yarar |
|---|---|
| Zaman | Olayın tam anı. Saat dilimi belirsiz bırakılmaz. |
| Kim | Kullanıcı kimliği ve görünen adı. Ad sonradan değişse bile kimlik kalır. |
| Ne yaptı | Oluşturma, güncelleme, silme, onay, iptal, dışa aktarma gibi işlem türü. |
| Neyi | Etkilenen kaydın türü ve kimliği: sipariş 10234, cari 517, kullanıcı 42. |
| Öncesi ve sonrası | Değişen alanların eski ve yeni değeri. |
| Nereden | Panel, mobil uygulama, entegrasyon ya da zamanlanmış görev. |
| Gerekçe | İptal ve iskonto gibi işlemlerde kullanıcının yazdığı açıklama. |
Nereden alanı küçük görünür ama en çok işe yarayan alandır. Bir değişikliğin elle mi yoksa entegrasyon üzerinden mi geldiğini bilmeden, aynı sorunu iki ayrı yerde aramak zorunda kalırsınız.
Hangi işlemler kaydedilir, hangileri kaydedilmez?
Her tıklamayı kaydetmek tabloyu şişirir ve aranan satırı görünmez kılar. Ölçüt şudur: parası, yetkisi veya sorumluluğu olan işlemler kaydedilir.
- Mutlaka: fiyat, iskonto, stok düzeltme, tahsilat, iade, sipariş iptali, fatura iptali.
- Mutlaka: rol ve yetki değişiklikleri, kullanıcı açma ve kapama, parola sıfırlama talebi.
- Mutlaka: silme ve arşivleme işlemleri, toplu güncellemeler, dışa aktarma ile veri indirme.
- Genellikle gerekmez: liste görüntüleme, arama, sıralama, sayfa gezinme.
- Hiçbir zaman: parola, kart numarası, güvenlik kodu gibi gizli alanların değerleri.
Dışa aktarma kaydını listeye koymak çoğu projede atlanır. Oysa veri dışarı çıkarken bırakılan iz, kişisel veri sorumluluğu açısından en çok sorulan kayıttır.
Öncesi ve sonrası nasıl saklanır?
İki yaklaşım vardır. Birincisi yalnızca değişen alanları yazmaktır: durum alanı hazırlanıyor değerinden iptal değerine geçti. Tablo küçük kalır, okuması kolaydır, çoğu proje için yeterlidir.
İkincisi kaydın tamamının o anki hâlini saklamaktır. Yer tüketir ama kaydın herhangi bir tarihteki tam görünümünü yeniden kurmaya izin verir. Fiyat listeleri ve sözleşme benzeri kayıtlar için bu yöntem tercih edilir.
Hangisini seçerseniz seçin, iz kaydı satırı sonradan güncellenemez olmalıdır. Düzeltilebilen bir iz kaydı, kanıt değeri taşımaz. Yanlış yazılmış bir satır silinmez; üzerine düzeltme satırı eklenir.
Ne kadar saklanır ve kim okur?
Saklama süresini kayıt türü belirler. Mali sonucu olan işlemlerin izi, ilgili kaydın saklama süresi boyunca durmalıdır; oturum ve giriş kayıtları çok daha kısa tutulabilir. Süre kararını yazılı bir politikaya bağlayın, yoksa tablo sınırsız büyür ve ilk sıkışıklıkta kimse neyi silebileceğini bilemez.
Okuma yetkisi de sınırlanmalıdır. İz kaydı, kimin ne yaptığını gösterdiği için kişisel veri içerir; herkese açık bir ekran olmaz. Yaygın düzen şudur: kullanıcı yalnızca kendi işlemlerini, birim yöneticisi kendi biriminin işlemlerini, denetim yetkisi olan rol tümünü görür. Yetki tasarımının bütünü için rol ve yetki yönetimi yazısına bakabilirsiniz.
Okunabilir bir iz kaydı ekranı nasıl olur?
Tutulan kayıt, aranabilir olmadığı sürece işe yaramaz. İz kaydı tablosu büyüdükçe doğru satırı bulmanın tek yolu filtredir ve pratikte dört filtre yeterlidir: tarih aralığı, kullanıcı, işlem türü ve etkilenen kayıt.
İkinci bir ihtiyaç, kaydın kendi ekranından geçmişe bakmaktır. Bir siparişi açan kullanıcı, o siparişe ait iz kaydı satırlarını ayrı bir ekrana gitmeden görebilmelidir; sorunların çoğu zaten tek bir kayıt üzerinde sorulur.
Satırları yazarken teknik alan adları yerine ekranda görünen başlıkları kullanın. status alanı 3 oldu satırı iş birimine hiçbir şey anlatmaz; durum, hazırlanıyor değerinden kargoya verildi değerine geçti satırı ise açıklama gerektirmez. Bu çeviriyi kaydı yazarken yapmak, sonradan raporlarken yapmaktan çok daha ucuzdur.
Özet
İz kaydı, sonradan kurulması en pahalı özelliklerden biridir: geçmiş veri geri gelmez. Projenin başında şu altı soruyu cevaplayın; hangi işlemler kaydedilecek, hangi alanlar tutulacak, öncesi-sonrası nasıl saklanacak, satırlar değiştirilemez mi, ne kadar süre korunacak ve kim okuyacak. Altısının cevabı yazılıysa iz kaydı işe yarar; değilse yalnızca disk tüketir.
KAV Yazılım, özel yazılım projelerinde iz kaydını baştan iş olayları üzerinden tasarlar ve panelde okunabilir bir ekranla birlikte teslim eder.
Sık sorulan sorular
İz kaydı ile sürüm geçmişi aynı şey mi?
İz kaydı veritabanını çok büyütür mü?
Silinen bir kaydın izi nasıl tutulur?
İz kaydını kullanıcılar görebilmeli mi?
- iz kaydı
- veri bütünlüğü
- veri güvenliği
- yetkilendirme
