Pazartesi 14:00 — Denetçi masada, log Excel'inde değil
Pazartesi öğleden sonra KVKK Kurumu denetçisi bilgi işlem odasına geçti. Elindeki Madde 12 kontrol listesinden birinci soruyu sordu: "Veri sorumlusu sıfatıyla yaptığınız işlemlere ilişkin günlük tutma ve belgeleme yükümlülüğünüzü nasıl yerine getiriyorsunuz?" IT Manager şirketin firewall, Active Directory ve M365 loglarını topladığını, üç aylık arşiv tuttuğunu söyledi. Denetçi ikinci soruyu yöneltti: "18 Haziran 2026 tarihinde saat 22:17'de dc01 sunucusuna giriş yapan ahmet@sirket.local hesabı için hangi authentication event'iniz var? Bana bu event_id'yi ve kaynak IP'yi gösterebilir misiniz?" IT Manager ekrandaki Excel cetelini açtı; "Haziran ayında 47 bin event toplamışız" satırını gösterdi. Denetçi gülümsedi: "Hangi event'in o tarihte, o hesaba ait olduğunu görmem lazım. Bekliyorum." Oda sessizleşti.
KVKK Madde 12 denetiminde sorun Excel cetelesi veya PowerPoint slide'ı değil, denetçinin spesifik bir olayı sorduğunda saniyeler içinde gerçek event kaydına ulaşabilme kapasitesidir. ShamashAi Compliance modülü bu senaryoyu çözmek için tasarlandı: her KVKK Madde 12 alt maddesi (a–f) için minimum kanıt eşiği (min_evidence_count) tanımlar, toplanan event sayısını eşikle karşılaştırır ve denetim anında covered / partial / no_evidence durumunu saniyede raporlar. Drilldown özelliği ile ilgili kontrolün altındaki gerçek event_id'lere, kaynak cihazlara ve kullanıcılara tek tıkla inersiniz.
KVKK Madde 12 — Excel değil, runtime evidence neden gerekir?
KVKK Madde 12 "Veri Güvenliğine İlişkin Yükümlülükler" başlığı altında veri sorumlusunun teknik ve idari tedbirleri almasını, bu tedbirlere ilişkin kayıt ve belge tutmasını emreder. Ancak Kurum denetimleri Excel'de "2026 Q2: 50.000 event" satırıyla yetinmez; denetçiler somut bir olayı (ör. belirli bir kullanıcının belirli bir zaman diliminde yaptığı işlem) sorgular ve siz o event kaydını gösteremezseniz "günlük tutma yükümlülüğü yerine getirilmemiş" sonucuna varabilirler.
Geleneksel yöntemde IT ekibi şu adımları uygulamaya çalışır:
1. Splunk, Graylog veya manuel script ile log dosyalarını arar.
2. Tarih, kullanıcı, kaynak IP filtrelerini manuel yazar.
3. Sonuçları Excel'e aktarır veya screenshot alır.
4. Denetçiye sunar.
Bu işlem 15–30 dakika sürer; denetim salonunda IT Manager terlerken denetçi bekler. ShamashAi ise KVKK Madde 12'nin altı alt maddesini (a: teknik tedbirler, b: idari tedbirler, c: günlük tutma, d: veri güvenliği politikası, e: düzenli risk değerlendirmesi, f: belgeleme) önceden event_type'larla eşler ve her kontrol için min_evidence_count eşiği tanımlar. Örneğin "c: günlük tutma" kontrolü için en az 1.000 event bekliyorsanız ShamashAi dbo.events tablosunu sorgular, dönem içinde toplanan event sayısını eşikle karşılaştırır ve covered/partial/no_evidence etiketini anlık atar.
ShamashAi Compliance modülü — 6 alt madde, threshold logic, drilldown
ShamashAi Compliance sayfası KVKK Madde 12'nin altı alt maddesini ayrı kontrol satırı olarak gösterir. Her satır:
- Kontrol adı ve alt madde harfi (ör. "c — Günlük Tutma ve İzleme")
- min_evidence_count eşiği (ör. 5.000 event bekliyoruz)
- Toplanan event sayısı (ör. dbo.events'de 47.328 event var)
- Durum (
covered %100 yeşil, partial %50–99 sarı, no_evidence %0–49 kırmızı)
- Drilldown butonu (ilgili event_id'leri listeler)
Örnek kontrol satırı:
Kontrol: KVKK Madde 12-c (Günlük Tutma)
Eşik: ≥5.000 event
Toplanan: 47.328 event
Durum: covered (100%)
Drilldown: [Event'leri Göster]
min_evidence_count threshold mantığı
ShamashAi Compliance modülü her kontrol için eşik değerini dbo.compliance_controls tablosunda tutar:
sql
CREATE TABLE dbo.compliance_controls (
control_id NVARCHAR(50) PRIMARY KEY,
control_name NVARCHAR(200),
kvkk_article NVARCHAR(20),
min_evidence_count INT,
event_type_filter NVARCHAR(MAX), -- JSON array
status NVARCHAR(20), -- covered | partial | no_evidence
last_check_utc DATETIME2
);
Örnek kayıt:
{
"control_id": "kvkk-12-c",
"control_name": "Günlük Tutma ve İzleme",
"kvkk_article": "Madde 12-c",
"min_evidence_count": 5000,
"event_type_filter": ["AUTH_SUCCESS", "AUTH_FAIL_USER", "BRUTE_FORCE_DETECTED", "M365_RISKY_SIGNIN", "BEHAVIORAL_ANOMALY"],
"status": "covered",
"last_check_utc": "2026-08-31T06:00:00Z"
}
Her sabah 06:00'da (veya kullanıcı "Şimdi Hesapla" butonuna bastığında) ShamashAi şu Node.js Fastify endpoint'ini çalıştırır:
javascript
// POST /compliance/recalculate-kvkk-12
fastify.post('/compliance/recalculate-kvkk-12', async (req, reply) => {
const controls = await sql.query`
SELECT control_id, min_evidence_count, event_type_filter
FROM dbo.compliance_controls
WHERE kvkk_article LIKE 'Madde 12%'
`;
for (const ctrl of controls.recordset) {
const eventTypes = JSON.parse(ctrl.event_type_filter);
const countResult = await sql.query`
SELECT COUNT(*) AS cnt
FROM dbo.events
WHERE event_type IN (${eventTypes.join(',')})
AND timestamp_utc >= DATEADD(DAY, -90, GETUTCDATE())
`;
const actualCount = countResult.recordset[0].cnt;
const percentage = (actualCount / ctrl.min_evidence_count) * 100;
let status = 'no_evidence';
if (percentage >= 100) status = 'covered';
else if (percentage >= 50) status = 'partial';
await sql.query`
UPDATE dbo.compliance_controls
SET status = ${status}, last_check_utc = GETUTCDATE()
WHERE control_id = ${ctrl.control_id}
`;
}
return { message: 'KVKK Madde 12 hesaplaması tamamlandı.' };
});
Bu mantık sayesinde Compliance sayfası her açıldığında güncel durum gösterilir; denetçi geldiğinde "Şimdi Hesapla" butonuna basıp son 90 günün event sayısını 3 saniyede yenilersiniz.
Drilldown — saniyede event_id listesi
Compliance sayfasındaki her kontrol satırında
[Event'leri Göster] butonu vardır. Tıkladığınızda ShamashAi şu endpoint'i çağırır:
http
GET /compliance/evidence?control=kvkk-12-c&start=2026-06-01&end=2026-08-31
Node.js backend:
javascript
// GET /compliance/evidence
fastify.get('/compliance/evidence', async (req, reply) => {
const { control, start, end } = req.query;
const ctrl = await sql.query`
SELECT event_type_filter FROM dbo.compliance_controls WHERE control_id = ${control}
`;
const eventTypes = JSON.parse(ctrl.recordset[0].event_type_filter);
const events = await sql.query`
SELECT event_id, timestamp_utc, event_type, source_device, source_user, raw_log
FROM dbo.events
WHERE event_type IN (${eventTypes.join(',')})
AND timestamp_utc BETWEEN ${start} AND ${end}
ORDER BY timestamp_utc DESC
`;
return { control, total: events.recordset.length, events: events.recordset };
});
Sonuç ekranda tablo olarak gösterilir:
| event_id | timestamp_utc | event_type | source_device | source_user | Detay |
|---|---|---|---|---|---|
| evt_93847 | 2026-06-18T19:17:03Z | AUTH_SUCCESS | dc01 | ahmet@sirket.local | [Göster] |
| evt_93848 | 2026-06-18T19:17:11Z | AUTH_FAIL_USER | dc01 | ahmet@sirket.local | [Göster] |
| ... | ... | ... | ... | ... | ... |
Denetçi "18 Haziran 2026 saat 22:17'de ahmet@sirket.local" dediğinde siz timestamp_utc sütununu filtreler, ilgili satırı bulur ve
[Detay] butonuna basarak raw_log JSON'unu gösterirsiniz. Süre: 5 saniye.
CSV, PDF, Evidence Pack ZIP — denetim dosyası hazır
Denetçi bazen "bu listeyi bana verin" der. ShamashAi Compliance sayfasında üç export butonu sunar:
1.
CSV İndir — tüm event satırlarını
kvkk-12-c-evidence-2026-08-31.csv olarak export eder.
2.
Print/PDF — tarayıcı print dialog'u açar; Chrome "PDF olarak kaydet" seçeneğiyle anında PDF oluşturursunuz.
3.
Evidence Pack ZIP — JSON + Markdown + HTML formatında kanıt paketi indirir.
Evidence Pack ZIP içeriği:
kvkk-12-evidence-pack-2026-08-31.zip
├── summary.json # Kontrol bilgisi, event sayısı, durum
├── events.json # Tüm event_id'ler, timestamp, raw_log
├── report.md # Markdown rapor (Git repo'ya commit edilebilir)
└── report.html # Tarayıcıda açılabilir HTML rapor
Örnek summary.json:
{
"control_id": "kvkk-12-c",
"control_name": "Günlük Tutma ve İzleme",
"kvkk_article": "Madde 12-c",
"period": "2026-06-01 – 2026-08-31",
"min_evidence_count": 5000,
"actual_count": 47328,
"status": "covered",
"generated_utc": "2026-08-31T09:15:28Z",
"generated_by": "compliance@sirket.local"
}
Bu ZIP dosyasını denetçiye USB ile verebilir, e-posta ekinde gönderebilir veya şirket doküman yönetim sistemine yükleyebilirsiniz. Denetim tamamlandığında dosya arşiv klasörüne taşınır; gelecek yıl aynı kontrolü tekrar hesapladığınızda farkı görebilirsiniz.
KVKK Madde 12 alt madde mapping — hangi event hangi kontrole girer?
ShamashAi KVKK Madde 12'nin altı alt maddesini şu event_type'larla eşler:
- Madde 12-a (Teknik Tedbirler) →
BRUTE_FORCE_DETECTED, KNOWN_BAD_IP, CERT_EXPIRING, BACKUP_FAILED
- Madde 12-b (İdari Tedbirler) →
SOAR_ACTION (otomatik blok/karantina), dbo.audit_log (yönetici işlemleri)
- Madde 12-c (Günlük Tutma) →
AUTH_SUCCESS, AUTH_FAIL_USER, M365_RISKY_SIGNIN, BEHAVIORAL_ANOMALY
- Madde 12-d (Veri Güvenliği Politikası) → dbo.audit_log'da politika onay kaydı (ShamashAi dokümantasyonu daha fazla bilgi vermiyor; pilot kapsamında detay paylaşılır)
- Madde 12-e (Risk Değerlendirmesi) → dbo.behavior_baselines tablosundaki baseline hesaplama logları (ShamashAi dokümantasyonu daha fazla bilgi vermiyor; pilot kapsamında detay paylaşılır)
- Madde 12-f (Belgeleme) → dbo.incident_groups tablosunda olay grupları ve kapatma notları
Bu mapping şirket büyüklüğüne göre değişebilir; ShamashAi pilot kurulumunda müşteri ile birlikte event_type_filter JSON'u özelleştirilebilir. Örneğin finans sektörü firewall log'larını Madde 12-a'ya, sağlık sektörü PACS sistemindeki erişim loglarını Madde 12-c'ye ekleyebilir.
Compliance sayfası — % skor ve zaman serisi grafik
ShamashAi Compliance sayfası sol tarafta altı kontrol satırını, sağ tarafta özet kartları gösterir:
┌─────────────────────────────────────────────────────────┐
│ KVKK Madde 12 Durum Özeti │
│ Toplam Kontrol: 6 │
│ Covered: 4 (yeşil) │
│ Partial: 1 (sarı) │
│ No Evidence: 1 (kırmızı) │
│ Genel Skor: %75 │
└─────────────────────────────────────────────────────────┘
Altında zaman serisi grafik: son 12 haftanın her hafta sonu genel skoru gösterir. Örneğin 8 hafta önce %60'taydı, yeni event source'lar eklendikçe %75'e yükseldi. Bu grafik CISO'ya trend gösterir; denetim öncesi son 4 haftada skor düştüyse acil müdahale edersiniz.
Compliance sayfası sadece KVKK Madde 12 ile sınırlı değil; ISO 27001:2022 Annex A kontrolleri için de benzer mantık uygulanabilir (ShamashAi dokümantasyonu daha fazla bilgi vermiyor; pilot kapsamında detay paylaşılır).
Runtime evidence vs. statik rapor — fark nedir?
Geleneksel SIEM'ler aylık rapor üretir: "Ağustos ayında 120.000 event toplandı" satırı PowerPoint'e yazılır. Ancak denetçi Eylül'de gelip Ağustos'un 18'inde saat 22:17'deki belirli bir event'i sorduğunda IT ekibi o PowerPoint'i açamaz; geriye dönük sorgu atması gerekir.
ShamashAi runtime evidence yaklaşımı şu farkı getirir:
- Statik rapor: Aylık toplam event sayısı, pie chart, trend grafiği → denetçi kabul etmez.
- Runtime evidence: Denetçi spesifik tarih/saat/kullanıcı sorar → siz
/compliance/evidence?control=X&start=...&end=... endpoint'ini çağırır, 3 saniyede event_id listesi gösterirsiniz.
Bu fark yasal risk açısından kritik: KVKK Madde 18 "veri güvenliğine ilişkin alınan tedbirleri denetleme yetkisi" Kurum'a verir. Denetçi gerçek event kaydı görmeden "tedbirler alınmış" diyemez. ShamashAi bu event kaydını saniyede sunar.
Örnek senaryo — IT Manager denetçiye 3 saniyede cevap verir
Aynı Pazartesi 14:00 senaryosuna dönelim; bu sefer IT Manager ShamashAi Compliance sayfasını açık tutar:
1. Denetçi sorar: "18 Haziran 2026 saat 22:17'de dc01'e giriş yapan ahmet@sirket.local için event var mı?"
2. IT Manager
Madde 12-c — Günlük Tutma satırında
[Event'leri Göster] butonuna basar.
3. Açılan tabloda timestamp_utc sütununu "2026-06-18 19:00" – "2026-06-18 23:59" aralığına filtreler.
4.
ahmet@sirket.local kullanıcısını source_user sütununda arar.
5. Satırı bulur:
evt_93847 | 2026-06-18T19:17:03Z | AUTH_SUCCESS | dc01 | ahmet@sirket.local.
6.
[Detay] butonuna basar; raw_log JSON'u ekrana gelir:
{
"event_id": "evt_93847",
"timestamp_utc": "2026-06-18T19:17:03Z",
"event_type": "AUTH_SUCCESS",
"source_device": "dc01",
"source_user": "ahmet@sirket.local",
"source_ip": "192.168.1.45",
"protocol": "Kerberos",
"workstation": "WKS-IT-05",
"raw_log": "EventID=4624 LogonType=3 IpAddress=192.168.1.45 ..."
}
7. IT Manager ekranı denetçiye çevirir. Denetçi source_ip'yi, workstation'ı not eder. Süre: 3 saniye.
Denetçi ikinci soru sorar: "Aynı gün 23:00'dan sonra bu hesaba başarısız giriş denemesi oldu mu?" IT Manager aynı tabloda timestamp_utc filtresini "2026-06-18 23:00" – "2026-06-19 06:00" yapar, event_type'ı
AUTH_FAIL_USER seçer. Sonuç: 2 satır bulunur. Denetçi tatmin olur.
Limitler ve dürüst notlar
- KVKK Madde 12 alt madde mapping şirket bazında özelleştirilmelidir. ShamashAi varsayılan event_type_filter JSON'u sunar ancak finans, sağlık, telekom sektörlerinde farklı log source'lar (SWIFT, PACS, RADIUS) eklenmelidir. Pilot kurulumda AfnTeknoloji ekibi bu mapping'i müşteri ile birlikte yapar.
- min_evidence_count eşiği mutlak bir kural değildir. 100 cihazlı firma için 5.000 event yeterken 500 cihazlı firma 50.000 event bekleyebilir. ShamashAi eşiği dbo.compliance_controls tablosunda elle değiştirmenize izin verir; otomatik öneri (ShamashAi dokümantasyonu daha fazla bilgi vermiyor; pilot kapsamında detay paylaşılır).
- Evidence Pack ZIP dosyası raw_log içerir; kişisel veri maskeleme ShamashAi'da henüz yoktur. Denetçiye verdiğiniz ZIP'te kullanıcı adları, IP adresleri açık yazılır. Eğer KVKK Madde 12 dışında başka bir denetim için evidence pack hazırlıyorsanız (ör. çalışan disiplin soruşturması) kişisel verileri elle maskelemeniz gerekir.
- ISO 27001:2022 Annex A kontrolleri için benzer mantık uygulanabilir ancak ShamashAi henüz Annex A mapping'ini varsayılan olarak sunmaz. Pilot kapsamında talep edilirse AfnTeknoloji ekibi A.12.4.1 (event logging), A.12.4.2 (log koruması) gibi kontrolleri event_type'larla eşler.
- Zaman serisi grafik haftalık hesaplanır; günlük otomatik hesaplama şu an yoktur. Eğer her gün güncel skor görmek isterseniz manuel "Şimdi Hesapla" butonuna basmanız gerekir. Gelecek sürümlerde cron job ile günlük hesaplama eklenebilir.
Sonuç — denetim salonunda Excel değil, ShamashAi
KVKK Madde 12 denetimi artık Excel cetelesi veya PowerPoint slide'ı ile geçiştirilemez. Kurum denetçileri spesifik bir olayı sorar; siz o event kaydını saniyeler içinde gösteremezseniz "günlük tutma yükümlülüğü yerine getirilmemiş" sonucuna varabilirler. ShamashAi Compliance modülü her Madde 12 alt maddesi için min_evidence_count eşiği tanımlar, dbo.events tablosunu sorgular, covered/partial/no_evidence durumunu anlık hesaplar ve drilldown ile gerçek event_id'lere iner. CSV, PDF, Evidence Pack ZIP export seçenekleri sayesinde denetim dosyasını USB'ye kaydedip denetçiye 30 saniyede teslim edersiniz. Runtime evidence yaklaşımı yasal riski azaltır; IT Manager artık denetim salonunda terlemez.
Pilot programı 30 gün ücretsiz: shamashai.com.tr/iletisim