Audit log (denetim kaydi), sistemde kimin, ne zaman, ne yaptigini degistirilemez veya en azindan tespit edilebilir bicimde kaydeden güvenlik ve uyumluluk altyapisidir. Operasyonel loglardan farki amaci ve butunlugudur: debug loglari geçici ve yüksek hacimlidir; audit kayitlari yasal delil, ic sorusturma ve regulasyon denetiminde referans alinir. Yanlış tasarlanmis audit sistemi ya kritik olaylari kacirir ya da depolama maliyetini kontrolden cikarir.
Audit vs application log
Application log: hata ayiklama, performans, is akisi. Audit log: güvenlik ve uyumluluk olaylari. Ayri kanal, ayri depolama ve farklı erişim politikasi uygulanmali.
- Audit: Login, yetki degisikligi, veri export, admin işlemi, config degisikligi.
- App log: Exception, slow query, cache miss, debug trace.
Audit loglari uygulama adminlerinin kolayca silemeyecegi bir store'a yazilmali; append-only veya WORM (Write Once Read Many) depolama tercih edilir.
Audit olay modeli
Her kayıt asgari alanlari icerir:
{
"eventId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-07-25T10:15:30.123Z",
"actor": { "userId": "u-42", "email": "[email protected]", "ip": "203.0.113.10" },
"action": "User.RoleUpdated",
"resource": { "type": "User", "id": "u-99" },
"outcome": "Success",
"changes": { "before": { "role": "User" }, "after": { "role": "Admin" } },
"correlationId": "req-abc-123",
"userAgent": "Mozilla/5.0...",
"tenantId": "tenant-1"
}
Actor sistem ise service account olarak isaretlenir. Outcome: Success, Failure, Denied. Başarısız yetki denemeleri de auditlenir; brute force analizi icin kritiktir.
Hangi olaylar auditlenmeli
- Kimlik dogrulama: login, logout, MFA, şifre degisikligi, hesap kilitleme.
- Yetkilendirme: rol/izin atama, policy degisikligi.
- Veri: PII erisimi, toplu export, silme, anonimlestirme.
- Yapılandırma: API key oluşturma, webhook, entegrasyon ayari.
- Güvenlik: rate limit asimi, imza dogrulama hatasi, admin panel erisimi.
Her CRUD işlemi auditlenmez; is ve risk analizi ile önemli olaylar secilir. Asiri audit gurultu analizi zorlastirir.
Mimari desenler
Transactional outbox
Is verisi ve audit kaydi ayni veritabanı transaction'inda yazilir; outbox tablosundan async indexer (Elasticsearch, SIEM) beslenir. Veri tutarlılığı garanti edilir.
Event-driven audit
Domain event (UserRoleChanged) publish edilir; dedicated audit consumer kayıt oluşturur. Decoupling sağlar; eventual consistency kabul edilir.
Sidecar / proxy audit
API Gateway veya service mesh access log'undan audit turetilir. Uygulama kodu degismeden merkezi toplama; ancak is anlami (before/after) eksik kalabilir.
Butunluk ve degistirilemezlik
Audit kaydina hash zinciri (blockchain benzeri) veya HMAC imza eklenebilir; sonraki kayıt önceki hash'i icerir. Değişiklik tespit edilir. Merkezi SIEM'e forward edilen loglar ayrica imzalanir. Audit veritabanına UPDATE/DELETE yetkisi kisitli rol dışında verilmemeli; DB trigger ile engellenebilir.
Saklama ve arsiv
Yasal saklama suresi sektor ve ulkeye gore degisir (örnek: 5-10 yil finans, KVKK acisindan işleme amaci sona erince silme). Sicak depolama (sorgulanabilir, 90 gun), soguk arsiv (S3 Glacier, immutable bucket) katmanli strateji. Retention policy otomatik uygulanmali; audit silme isleminin kendisi de auditlenir (meta-audit).
Performans ve ölçeklendirme
Audit yazimi kullanıcı istegi latency'sini artirmamali. Async buffer, batch insert ve ayri veritabanı instance'i kullanın. Partitioning: tarih veya tenant bazli tablo bolme. Index: timestamp, actor.userId, action, resource.id. Okuma agir sorgular replica veya search engine uzerinde calistirilir.
Güvenlik ve erişim kontrolu
Audit loglari hassastir; ic tehdit analizi icin degerlidir. RBAC: yalnizca security team ve compliance read. Export auditlenir. PII maskeleme: log okuyucu rolune gore email kismi gizlenebilir. Encryption at rest (TDE, disk encryption) zorunlu.
SIEM entegrasyonu
Splunk, Elastic SIEM, Azure Sentinel, Wazuh gibi platformlara CEF/LEEF veya JSON stream. Correlation rule: 5 başarısız login + 1 başarılı = olasi compromise. Alert runbook ile eslestirilir. MITRE ATT&CK framework olay siniflandirmasi raporlamayi iyilestirir.
.NET uygulama ornegi
public interface IAuditLogger
{
Task WriteAsync(AuditEntry entry, CancellationToken ct = default);
}
public class AuditBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
where TRequest : IAuditableRequest
{
public async Task<TResponse> Handle(TRequest request, ...)
{
var response = await next();
await _audit.WriteAsync(new AuditEntry { Action = request.AuditAction, ... });
return response;
}
}
HttpContext'ten actor bilgisi, middleware'den correlation ID alinir. Hassas command'lar explicit IAuditableRequest implement eder.
Sorgu ve raporlama
Compliance raporu: belirli donemde tüm admin islemleri. Forensic: belirli kullanıcının 30 gunluk aktivitesi. Dashboard: başarısız login trendi. Sorgu API'si pagination ve filtre (tarih araligi, action tipi) sunmali; full table scan onlenmeli.
Yaygın hatalar
- Audit ve app log karistirma.
- Clock skew: UTC zorunlu, NTP senkron.
- Eksik correlation ID; olay zinciri kurulamaz.
- Admin'in audit silmesine izin verme.
- Before/after snapshot eksikligi.
- GDPR: unutulma hakki ile audit celiskisi — yasal danisma gerekir.
Test ve dogrulama
Entegrasyon testinde kritik işlem sonrasi audit kaydi assert edilir. Chaos test: audit servisi down iken ana işlem fail mi yoksa degrade mi — politika net olmali. Penetrasyon testinde audit bypass denemeleri kontrol edilir.
Iyi tasarlanmis audit log sistemi, güvenlik olaylarina hızlı yanıt, regulasyon uyumu ve ic hesap verebilirlik icin vazgecilmezdir. Veri modeli, butunluk garantileri ve operasyonel ölçeklendirme birlikte planlandiginda audit altyapisi hem güvenilir delil kaynagi hem de proaktif tehdit tespiti icin temel oluşturur.
Multi-tenant audit
SaaS uygulamalarda tenantId zorunlu alan; sorgularda tenant izolasyonu. Bir tenant'in audit kaydina baska tenant erisememeli. Row-level security veya ayri index partition.
Cloud native audit
AWS CloudTrail, Azure Activity Log platform seviyesi audit sağlar; uygulama audit'i bunu tamamlar. CloudTrail log file integrity validation ile butunluk dogrulanir. Hibrit mimaride merkezi log aggregation zorunludur.
Veri siniflandirma ve audit kapsami
Hassas veri sinifi (PII, finansal, sağlık) audit gereksinimlerini belirler. Siniflandirma matrisi hangi islemlerin zorunlu audit tetikledigini tanimlar. Düşük riskli okuma islemleri orneklenerek loglanabilir (sampling); yüksek riskli export ve silme her zaman tam kayıt alir.
Latency ve kullanıcı deneyimi
Audit yazimi senkron yapilirsa yüksek trafikte gecikme artar. Outbox veya message queue ile asenkron yazim tercih edilir; kullanıcı işlemi başarılı doner, audit birkac yuz milisaniye gecikmeyle persist edilir. Idempotency key ile tekrarlayan audit kaydi onlenir.
Compliance rapor otomasyonu
SOX ve ISO denetimlerinde standart sorular (kim admin oldu, son 90 gunde kim veri export etti) onceden tanimli SQL veya SIEM sorgulari ile otomatik raporlanir. Manuel Excel cikarma hata ve gecikme üretir; scheduled report ve dashboard export kullanılır.
Immutable audit pipeline
Log shipping sirasinda man-in-the-middle veya local admin degisikligi riskine karşı TLS ile iletim ve imzali batch kullanılır. Object storage versioning ve legal hold ile silme engellenir. Periyodik hash dogrulama script'i zincir butunlugunu kontrol eder.
Forensic hazirlik
Olay mudahale ekibi audit sorgu ornekleri ve veri export prosedurunu yillik tatbikatta calistirir. Log format degisikligi geriye donuk aramayi zorlastirir; schema versioning ve backward compatible alan ekleme kurali konur.
Maliyet optimizasyonu
Audit hacmi buyudukce cold storage tiering ve log compression maliyeti dusurur. Gereksiz debug benzeri audit kayitlari filtrelenir. Sampling düşük riskli okuma olaylarinda kabul edilebilir; silme ve yetki degisikligi asla orneklenmez.