Kurumsal Yazılımda Denetim İzi: Kim, Ne Zaman, Neyi Değiştirdi?

Kurumsal Yazılımda Denetim İzi: Kim, Ne Zaman, Neyi Değiştirdi?

Bir kayıt yanlış değiştiğinde cevabı olmayan soru: bunu kim yaptı? Denetim izi sonradan eklenmez.

Kurumsal bir sistemde denetim izi, bir lüks değil temel bir bileşendir. İhtiyaç genellikle şu cümleyle ortaya çıkar: "Bu müşterinin kredi limiti geçen hafta değişmiş, kim yaptı?" Cevap veremiyorsanız, sorun yalnızca merak değildir — hata düzeltilemez, sorumluluk belirlenemez ve denetimden geçilemez. Üstelik bu bileşen sonradan eklenmesi en zor olanlardandır: geçmişe dönük kayıt üretemezsiniz.

Denetim izi alanları listesi
Eski değer kaydedilmemişse, kayıt "değişti" der ama "neye" demez.

Denetim izi ile uygulama günlüğü aynı şey değildir

İki kavram sık karıştırılır ve karıştırıldığında ikisi de işlevini kaybeder. Uygulama günlüğü teknik amaçlıdır: hata ayıklama, performans izleme, çökme analizi. Genellikle metin tabanlıdır, hacimlidir ve kısa süre saklanır.

Denetim izi ise iş amaçlıdır: kim hangi iş kaydını nasıl değiştirdi? Yapılandırılmıştır, sorgulanabilir olmalıdır ve uzun süre saklanır. İkisini aynı yere yazmak, denetim kayıtlarını hata ayıklama gürültüsü içinde kaybetmek demektir. Teknik tarafın kuralları için üretimde log yazımıza bakabilirsiniz.

Ne kaydedilmeli?

Minimum kayıt beş soruyu cevaplamalıdır: kim, ne zaman, neyi, nasıl ve nereden. Bunlardan en çok atlanan "nasıl" alanıdır — yani eski ve yeni değer. Yalnızca "güncellendi" bilgisi, denetim anında neredeyse hiçbir işe yaramaz.

"Kim" alanında dikkat edilecek bir ayrıntı vardır: bir yönetici başka bir kullanıcı adına işlem yapabiliyorsa (vekâleten giriş), hem gerçek kullanıcı hem işlemi yapan kişi kaydedilmelidir. Aksi halde kayıt, işlemi yapmayan bir kişiyi işaret eder.

Ayrıca yalnızca değişiklikler değil, bazı okumalar da kaydedilmelidir: hassas verinin görüntülenmesi (sağlık kaydı, maaş bilgisi, kişisel veri) birçok düzenlemede kayıt altına alınması gereken bir olaydır.

Nereye yazmalı?

Üç yaygın yaklaşım vardır ve seçim, ihtiyacın derinliğine göre yapılır.

  • Uygulama katmanında kayıt: Servis metotlarında değişiklik bilgisi toplanır. Esnektir ve iş bağlamını (hangi ekrandan, hangi süreçte) içerir; ancak biri veritabanına doğrudan bağlanıp güncelleme yaparsa hiçbir şey kaydedilmez.
  • Veritabanı tetikleyicileri: Değişiklik nereden gelirse gelsin yakalanır. Buna karşılık iş bağlamı zayıftır ve tetikleyiciler bakım açısından görünmez bir katman oluşturur.
  • Olay tabanlı kayıt: Sistem zaten olay üretiyorsa denetim izi bu akıştan beslenir. En temiz çözümdür ama mimari hazırlık gerektirir.

Pratikte çoğu kurumsal sistem birinci yaklaşımı seçer ve doğrudan veritabanı erişimini yetkilendirme ile kısıtlar. Yetki modelinin doğru kurulması bu noktada kritik hâle gelir; yetkilendirme modeli yazımız bu temeli ele alıyor.

Değiştirilemezlik: kaydın kendisi güvenilir mi?

Denetim izinin değeri, değiştirilemez olmasına bağlıdır. Sistem yöneticisinin silebildiği bir kayıt, denetim açısından zayıf bir kanıttır. Uygulanabilir önlemler şunlardır: kayıt tablosuna yalnızca ekleme yetkisi vermek (güncelleme ve silme yok), kayıtları ayrı bir veritabanına veya salt-ekleme yapılan bir depoya yazmak ve kritik ortamlarda her kaydın bir öncekinin özetini içermesini sağlayarak zinciri kırılabilir hâle getirmek.

Sonuncusu karmaşık görünse de basit bir uygulamayla yapılabilir ve "bu kayıt sonradan değiştirildi mi?" sorusuna matematiksel bir cevap verir.

Performans ve hacim

Denetim izi hızla büyür — çoğu sistemde en büyük tablo hâline gelir. İki pratik önlem gerekir. Birincisi, kaydı ana işlemin yolundan çıkarmak: kritik olmayan senaryolarda kayıt bir kuyruğa bırakılıp asenkron yazılabilir. İkincisi, bölümleme ve arşivleme: eski kayıtlar aylık bölümlere ayrılıp soğuk depolamaya taşınabilir.

Saklama süresi ise iş ve mevzuat kararıdır, teknik bir tercih değil. Kritik nokta şudur: süre tanımlanmış olmalıdır. "Her şeyi sonsuza kadar saklayalım" yaklaşımı hem maliyet hem de veri koruma açısından risktir; kişisel veri içeren kayıtlarda özellikle dikkatli olunmalıdır — veri gizliliği yazımızdaki saklama süresi ilkesi burada da geçerlidir.

Kullanılabilirlik: kayıt okunmuyorsa yoktur

En sık görülen başarısızlık, teknik olarak kusursuz ama pratikte kullanılamayan bir denetim izidir. Kayıtlar yalnızca veritabanı sorgusuyla okunabiliyorsa, işi yapan kişi (denetçi, müşteri temsilcisi, yönetici) hiçbir zaman kullanamaz.

Bu yüzden en az bir ekran gereklidir: belirli bir kayıt için "değişiklik geçmişi" görünümü, kullanıcı bazlı filtreleme ve tarih aralığı seçimi. Bu ekran, hem denetim taleplerini hem de günlük destek sorularının önemli bir kısmını doğrudan çözer. Kurumsal mimari kalıpları için Martin Fowler'ın kurumsal mimari yazıları başvurulabilir; benzer bir "kim ne zaman değiştirdi" ihtiyacının kod tarafındaki karşılığı için git ile çalışma yazımıza bakabilirsiniz.

Sonuç

Denetim izi, kurumsal yazılımı "çalışan bir uygulama"dan "güvenilebilir bir sistem"e çeviren bileşendir. Doğru tasarım beş alanı (kim, ne zaman, neyi, nasıl, nereden) eksiksiz kaydeder, eski değeri saklar, kaydı değiştirilemez kılar, saklama süresini tanımlar ve en önemlisi kayıtları gerçekten okunabilir bir ekranda sunar. Bugün sisteminizde tek bir test yapın: geçen ay değiştirilmiş bir kaydı seçin ve kimin, ne zaman, hangi değeri değiştirdiğini bulmaya çalışın. Cevaba beş dakikada ulaşamıyorsanız, denetim iziniz henüz yok demektir.

Beğeniniz benzer içerikleri öne çıkarmamıza yardımcı olur.

Sık Sorulan Sorular

Hayır, bu hem maliyetli hem gereksizdir. Öncelik parasal değer taşıyan, yetki belirleyen ve kişisel veri içeren kayıtlardadır. Geri kalanı ihtiyaç doğdukça kapsama alınabilir.

Kaydın kaybolmaması kritikse evet, aynı işlem içinde yazılmalıdır. Hacim yüksek ve kayıt kritik değilse asenkron yazım performans açısından tercih edilebilir; bu bilinçli bir takastır.

Büyütür, bu yüzden yalnızca değişen alanların kaydedilmesi ve eski kayıtların bölümlenip arşivlenmesi gerekir. Yine de eski değer olmadan denetim izinin pratik değeri çok düşüktür.

Kayıt tablosuna yalnızca ekleme yetkisi verilmeli, kayıtlar ayrı bir depoda tutulmalı ve kritik ortamlarda zincirleme özet (hash) ile bütünlük doğrulanabilir hâle getirilmelidir.

S
superadmin

Bu yazıyı hazırladı. Sorularınız için iletişim sayfasından ulaşabilirsiniz.

Yorumlar (0)

Bu yazıya henüz yorum yapılmamış. İlk yorumu siz yazın!

Yorum Yaz

Yorumunuz onaylandıktan sonra yayınlanır. Ekibimiz gerekirse konuyla ilgili bir yanıt da paylaşır.

En az 10 karakter.