SPL ve KQL sorgu kalıpları
Splunk SPL ve Microsoft Sentinel/Defender KQL için sık kullanılan arama, istatistik ve zaman kalıpları.
Son güncelleme 2026-09
SPL temel arama
index=guvenlik sourcetype=firewallBelirtilen indeks ve kaynak türüyle arama kapsamını daraltır.
index=* "Failed password"Tüm indekslerde belirtilen metni arar.
eventtype=basarisiz_girisÖnceden tanımlanmış bir olay türüne göre süzer.
sourcetype=WinEventLog:Security EventCode=4625Windows güvenlik günlüğünde belirli bir olay kimliğini arar.
index=web status>=500Sunucu hatası döndüren web isteklerini süzer.
SPL istatistik komutları
... | stats count by src_ipKaynak IP başına olay sayısını hesaplar.
... | timechart span=1h countOlay sayısını saatlik zaman dilimlerine göre grafikler.
... | top limit=10 src_ipEn sık görülen ilk 10 kaynak IP'yi gösterir.
... | rare userEn nadir görülen kullanıcı adlarını gösterir, anomali taramasında kullanılır.
... | stats dc(user) as benzersiz_kullaniciBenzersiz kullanıcı sayısını hesaplar.
SPL veri şekillendirme
... | eval risk=if(seviye>=8,"yuksek","dusuk")Alan değerine göre yeni bir hesaplanmış alan üretir.
... | rex field=_raw "user=(?<kullanici>\w+)"Ham metinden düzenli ifadeyle yeni bir alan çıkarır.
... | table _time src_ip user actionSonucu yalnız belirtilen sütunlarla tablo halinde gösterir.
... | sort -_timeSonuçları en yeniden en eskiye sıralar.
... | dedup src_ipHer kaynak IP için yalnız ilk kaydı tutar, tekrarları eler.
KQL temel kalıplar
SecurityEvent | where EventID == 4625Belirtilen olay kimliğine göre satırları süzer.
SigninLogs | project TimeGenerated, UserPrincipalName, IPAddressSonuçtan yalnız belirtilen sütunları seçer.
SecurityEvent | extend Saat = format_datetime(TimeGenerated,'HH')Var olan sütunlardan yeni bir hesaplanmış sütun ekler.
SigninLogs | summarize Sayi=count() by IPAddressIP adresi başına kayıt sayısını hesaplar.
SecurityEvent | where Account contains 'admin'Belirtilen metni içeren hesap adlarını süzer.
KQL zaman ve birleştirme
... | where TimeGenerated > ago(24h)Son 24 saatteki kayıtları getirir.
... | summarize count() by bin(TimeGenerated, 1h)Kayıtları saatlik dilimlere göre gruplar.
let esikDegeri = 5;Sorgu içinde tekrar kullanılacak bir değişken tanımlar.
TabloA | join kind=inner (TabloB) on Anahtarİki tabloyu ortak bir alan üzerinden birleştirir.
... | join kind=leftanti (TabloB) on AnahtarYalnız TabloB'de karşılığı olmayan satırları getirir.
KQL örüntü ve karşılaştırma
... | make-series Sayi=count() default=0 on TimeGenerated in range(ago(7d), now(), 1h)Zaman serisi oluşturup eğilim analizine hazırlar.
... | render timechartSonucu zaman ekseni grafiği olarak görselleştirir.
hasTam kelime eşleşmesi arar, contains'e göre daha hızlı ve kesindir.
containsAlt dize eşleşmesi arar, kelime sınırı gözetmez.
==Tam ve büyük/küçük harf duyarlı eşitlik karşılaştırması yapar.