Product Tour

ShamashAi'ın 25 sayfası tek tek.

Bu makale, ShamashAi'ın her sayfasının ne yaptığını, hangi olayı hangi tabloya yazdığını, hangi karar mantığını işlettiğini, IT yöneticisinin ekrana baktığında ne göreceğini detaylı anlatır. Hızlı bir gezi değil, satın alma kararı için yeterli bir teknik döküman.

Control Center, ShamashAi'ın posture skoru dediği 0–100 arası bir tek sayı etrafında inşa edilmiştir. Bu skor, runtime telemetrisinden deterministik olarak hesaplanır — pazarlama göstergesi değil, gerçek operasyonel basıncın özetidir.

Posture skoru nasıl hesaplanır?

Başlangıç değeri 100. Aşağıdaki kalemler düşürür:

  • Çözülmemiş kritik vaka × 18 puan (max −36)
  • Diğer aktif vakalar × 3 puan (max −18)
  • Critical visibility gap × 10, high × 4 (max −30)
  • Agent offline = −28, degraded = −12
  • License over-limit = −20, expired = −24
  • Compliance % < 70 ise (70 - mevcut) / 2 puan

Sonuç ≥ 80 ise Operationally calm (yeşil), ≥ 60 Attention needed(sarı), < 60 High pressure (kırmızı). Tek satırlık özet: "X aktif vaka, Y high-priority görünürlük açığı, %Z uyumluluk."

Control Center
Control Center — KPI'lar, control filters, action queue, M365 alertsLive data

3-katmanlı yapı (Wave 3 · Haz 2026)

Önceki sürümde Control Center 10 widget'ı her zaman ekranda gösteriyordu — IT yöneticisi "ne yapayım?" sorusunun cevabı için göz gezdirmek zorundaydı. Wave 3'te 3-katmanlı odak hiyerarşisi getirildi: kritik katman her zaman görünür, geri kalan ihtiyaç olduğunda açılır. Default ekran 3× daha sade — mobil viewport'ta da kullanılır oldu.

🔝 Kritik katman (her zaman görünür · gizlenemez)

  • Posture skoru — büyük, sol — durumun tek satırlık özeti.
  • Attention queue — 3 KPI: Active incidents · Visibility gaps · Agent health.
  • Service problems — 3 KPI: M365 phishing/malware · Switch/AP down · Backup failures.
  • License / compliance — 3 KPI: Lisans durumu · KVKK % · ISO 27001 %.
  • "What needs attention first" — tek büyük action panel, posture'ı düşüren kalemleri sıralar.

Bunlar Control Center'ın özü: "skor X / vakam Y / lisansım Z" — sayfaya bakan IT yöneticisi anlık karar verir.

📊 Operasyonel detay (default açık · Customize ile gizlenir)

  • Coverage detail — KVKK kontrol başına evidence event sayıları.
  • Service layers — 5 katmanlı topology özeti (external → edge → perimeter → vlan → internal).
  • Operational pulse — M365 + SharePoint + Backup canlılığı.
  • Profile checks — kategori bazlı izleme kontratları (firewall = WAN + VPN + policy, server = disk + service + interface, vs.)

🔬 İleri analiz (default kapalı · Customize ile açılır)

  • Attack source map (Wave 2) — bloklanan saldırı kaynaklarının geo-IP haritası, son 30 gün.
  • Event trends (Wave 2) — 30 günlük sparkline + severity donut + Top-N event_type bar.
  • Fragility panel (Wave 2) — "Biz olmadan dayanır mı?" sorusunu cevaplayan 0-100 skoru.

Yöneticiye lazım olduğunda 1 tıkla görüntüler, yoksa ekran temiz kalır. Customize butonu yedi opsiyonel widget'ın görünürlüğünü ve sırasını localStorage'da saklar.

Üst aksiyon butonları

Briefing haftalık executive PDF üretir (Wave 2 · CEO summary). Wall NOC TV mode'a geçer (Wave 2). Incidents / Remediation / Readiness kısayolları sırasıyla SLA kuyruğuna, posture görevlerine ve production preflight kontrolüne yönlendirir.

Topology layout LOCKED — her müşteride aynı yerleşim kullanılır:

┌────────────────────────────────────────────────┐
│ EXTERNAL SERVICES                              │
│ [M365] [Website] [Mail Provider]               │
├────────────────────────────────────────────────┤
│              ☁ Internet                        │
├────────────────────────────────────────────────┤
│ PUBLIC EDGE                                    │
│ [WAN IP1] [WAN IP2]                            │
├────────────────────────────────────────────────┤
│ PERIMETER  →  [Firewall 01]                    │
├────────────────────────────────────────────────┤
│ Interface row (clickable filters)              │
│ [internal·192.169.1.0/24] [dmz] [fortilink]    │
├────────────────────────────────────────────────┤
│ INTERNAL NETWORK                               │
│ Switch · Identity · Server · Database · NAS    │
└────────────────────────────────────────────────┘
Topology
Topology · 5 katman, otomatik gruplama

Bucket-match priority

  • 1. device.network_id manuel pin — operatörün seçimi, asla override edilmez.
  • 2. IP-CIDR match — descending prefix length, /32 beats /24.
  • 3. Hiçbiri eşleşmezse Other bucket.

Edge taksonomisi

Cihazlar arası ilişkiler 9 kategoriye ayrılır: network (wan_uplink, switch_port, lldp_neighbor), DHCP/DNS, identity (ad_member, ldap_bind), tunnel (ipsec, ssl_vpn, mpls, expressroute), compute (vmware_host, k8s_node), storage, security (siem_log_source, edr_managed), app/SaaS, mail/web (mail_route, web_hosted_at, waf_protected).

Cihaz kartı ne gösterir?

  • İkon + isim + IP + vendor
  • "via <log source>" rozeti (Win Event Log / Syslog / SNMP)
  • Yeşil/kırmızı live dot + son event sayısı
  • LOGS LIVE / Reachable / No logs durumu
  • Auto-collapse: 2+ cihazlı kategori başlangıçta kapalı, tek cihaz açık.

Cihaz kayıtları dbo.devices tablosunda tutulur, her satır şu sütunları içerir:

  • name, ip (UNIQUE), vendor, device_type
  • protocol + port — primary management channel
  • secondary_protocol + secondary_port — dual-channel (örn. management + log)
  • auth_type (none / password / api_key)
  • credential_secretAES-256-GCM şifreli (CREDENTIAL_KEY env)
  • snmp_read_community_secret, snmp_trap_community_secret
  • enabled, tags (JSON), category
  • soar_enabled, soar_block_group
  • network_id (FK → networks) — manuel pin
Resources
Resources · cihaz envanteri ve Add Device formu

Aksiyon butonları

  • Test connection — protokole göre canlı test (TCP probe, REST auth, SNMP sysDescr).
  • Discover — vendor adapter'ı çağırır, network_id, vlan, edges keşfeder.
  • Bulk import — CSV (name, ip, vendor, device_type, protocol, ...) yüklenir.
  • AI advice — cihaz vendor + recent events ile Claude'a hardening önerisi sorulur.
  • Risk posture sekmesi — risk score'a göre sıralı liste, sahip, son aktivite.

Site, müşterinin fiziksel ya da mantıksal bir lokasyonudur. Her cihaz bir site'a aittir; event ingest pipeline'ı, topoloji haritası, evidence pack ve compliance raporları site bazında filtrelenebilir. Site silindiğinde altındaki tüm cihaz/olay/edge'lerin kademeli silinmesi tek aksiyonla yapılır — ya da son site silinirse instance tamamen sıfırlanıp wizard'a döner.

Site tipleri

TypeTipik kullanım
on_premBirincil ofis, kendi sunucu odası — HQ
branchŞube ya da uzak satış noktası
drFelaket kurtarma sahası, failover için stand-by
coloKolokasyon merkezi — kiralı kabin
cloud_regionAzure / AWS / GCP bölgesi
home_officeUzaktan çalışan IT yetkilisi setup'ı

Parent-child hiyerarşi

site.parent_id ile sitelerin hiyerarşisi modellenir. HQ → Branch1 / Branch2 ya da Primary Region → DR Region gibi. UI bu hiyerarşiyi iç içe gösterir; rapor scope'u child site'lara doğru genişletilebilir.

Site-aware her şey

  • Header SiteSelector — sağ üst dropdown, hızlı geçiş, URL'e ?site_id= push eder
  • Topology — site bazlı katman görünümü
  • Events / Incidents / Reachability — site filtresi
  • Devices — site bazında envanter ve CSV export
  • Onboarding wizard — birinci site burada açılır (Office name adımı)
  • Settings → Sites — admin CRUD: yeniden adlandır, tip değiştir, lokasyon, parent

Site cascade silme

Bir site silindiğinde altındaki devices, events, reachability_logs, device_edges, incident_groups, component_status, metric_samples, networks, change_requests, maintenance_windows, soar_actions, alert_rule_hits, behavior_baselines, remediation_tasks ve audit_log scope'u kademeli silinir. Tek site varsa silme işlemi instance reset'e dönüşür ve admin onboarding wizard'a yönlendirilir.

Device categories dbo.device_categories tablosunda tutulur, her kayıt:key (slug), label, tier (1–5 topoloji katmanı),parent_key (alt kategori varsa), icon, display_order. Reorder API ile drag-and-drop sıralama. Auto-categorize endpoint'i mevcut cihazları heuristik ile kategoriye düşürür.

Category health profiles

Her kategori için "bu cihaz tipinin sağlıklı sayılması için" beklentiler tanımlıdır: son N dakikada heartbeat, log akış oranı, credential varlığı, parser kalitesi. Beklenti karşılanmıyorsa category-health/findings üretir; Coverage ve Visibility Gaps sayfaları bu finding'leri toplar.

User category permissions

/users/:id/category-permissions — analist rolündeki kullanıcılar yalnızca izin verilen kategorilerin cihaz/olay verisini görebilir. Sahaya çıkan tedarikçilere "sadece firewall + switch" erişimi verilebilir; AD ve database görünmez.

Olaylar dbo.events tablosuna 4 indeksle yazılır (tenant+timestamp, severity, device, event_type). Hot-path query'ler (severity ≥ medium, son 24h) milisaniye cinsindendir.

Events
Events · KPI'lar + filtreler + canlı liste

Filtreler

  • Source / Vendor / Device type / Event type — tam metin
  • Severity — info / low / medium / high / critical
  • Min priority — Critical 80+ / High 60+ / Medium 30+ / Low 10+
  • Triage status — Open / Acknowledged / Investigating / Resolved / False positive
  • Search — IP, kullanıcı, mesaj, event tipi free-text

Görünümler

3 sekme: All events / Security / Legacy telemetry. 2 mod: Grouped (aynı tip+IP+user+message kümelenir, "5 occurrences" rozeti) / Raw (her satır ayrı). Auto-refresh 30 saniye.

KPI'lar

  • Active sources — event üreten cihaz sayısı (dakika içinde)
  • Incoming events — filtrelerden sonraki sonuç adedi
  • Critical priority — score ≥ 80 olanlar
  • Unresolved critical — open/active triage olanlar

Export + reachability

CSV export — mevcut filtre + 500 satır limit. Sağ üstte Reachability logs butonu, TCP probe + ICMP sonuçlarının ayrı tablosuna yönlendirir (event tablosunu kirletmesin diye ayrılmıştır).

Headline

En üstte olayın human-readable özeti, alt başlık olarak event_type, sağda 5 haneli risk score. Severity rengine göre başlık ve çerçeve renkli.

"Why this score" rozetleri

Risk motorunun ürettiği reasons listesi — base:65, admin_user×1.5,threat_ip×2.0, suspicious_geo:RU×1.7, off_hours×1.3. Her rozet humanizeReason ile "Privileged user ×1.5" gibi okunaklı hale getirilir. İlk 6 tane gösterilir, kalanı "+N more" ile aşağıda.

MITRE ATT&CK chip'leri — her olayda, tıklanır

30+ kanonik event tipi MITRE ATT&CK tekniklerine eşlenir (Brute Force T1110, Valid Accounts T1078, Phishing T1566, EternalBlue exploit, Account Manipulation T1098, Data Destruction, Inhibit System Recovery…).

  • Events listesinde her satırda en alakalı 2 chip
  • Event Detail sayfasında tüm chip'ler + her birinin rationale ve confidence'ı
  • Alert Rules formunda seçilen match_event_type hangi tekniklere düşüyorsa tıklanır chip'ler (attack.mitre.org'a gider)

Mapping katalogu testlerle korunur: maps authentication failures to brute force,returns rich MITRE metadata assertion'ları her sürümde yeşil — yeni event tipleri eklendiğinde de uyumlu kalır.

Triage controls

5 durum: Open (default), Acknowledged, Investigating, Resolved, False positive. Status değişiklikleri event_triage tablosuna yazılır + audit_log'a düşer.

AI Investigator

"AI ile incele" butonu çağrıldığında POST /ai/investigate-event/:id endpoint'i şunu yapar:

  • Aynı src_ip'den son 6 saatteki ilgili olayları toplar
  • 5 threat intel feed'inde (Tor, FireHOL, Spamhaus, USOM, Abuse.ch FeodoTracker) eşleşme arar
  • Geo enrichment ekler (country, ASN, org) — MaxMind GeoLite2 lokal
  • Behavioral baseline varsa ekler (kullanıcının normal patterni)
  • Hepsini AI'ya yollar; özet Türkçe varsayılan (Settings → AI'dan EN'e çevrilebilir)
  • Credentials ASLA gönderilmez — sadece anonim metadata
  • Aynı event_id için 5 dk cache

Block IP butonu

Eğer event'in src_ip'si public ve bloklanabilirse, üst sağda Block IP butonu çıkar. Tıklayınca SOAR queue'sine direkt iletilir, confirmation dialog (default 60 dk).

Source geography

Public src_ip için ülke kodu, isim, şehir, ASN, organizasyon. Bilgi MaxMind GeoLite2 embedded DB'den, internet aranmaz.

Event Details + Raw Data

Canonical fields tablosu (timestamp, source, vendor, device_type, src_ip, dst_ip, user, action) + raw JSON payload (vendor'un ham mesajı). Forensic için tam fidelity.

Incident Queue
Incident queue · 7 kuyruk + KPI'lar

SLA Policy (skor bazlı)

PriorityAcknowledgeResolve
Critical (80+)15 dakika4 saat
High (60+)1 saat24 saat
Medium (30+)8 saat72 saat
Low (<30)24 saat168 saat (7 gün)

SLA renkleri

  • On track (yeşil) — hedefin %75'inden az süre geçti
  • Soon (sarı) — %75 ile %100 arası
  • Overdue (kırmızı) — hedef aşıldı
  • Closed (gri) — resolved/false_positive, SLA durdu

7 kuyruk sekmesi

Active (open + ack + investigating), Critical (80+ unresolved), Open, Acknowledged, Investigating, Resolved, False positive.

Üst KPI'lar

  • Active incidents — açık iş yükü
  • Unresolved critical — kritik SLA basıncı
  • SLA overdue — yangın
  • Unassigned — sahibi olmayan açık vakalar
  • Closed this window — son 7 günde kapatılan

Quick actions

Her satırın sağında: Ack / Investigate / Resolve / False+ / Block IP. Tek tık, confirmation dialog. Audit log'a yazılır.

dbo.incident_groups aynı group_key (event_type + device_id + src_ip karması) altındaki event'leri tek satıra toplar. Üst grup: title,severity, risk_score (en yüksek), status (open / acknowledged / investigating / resolved / false_positive),evidence_count, first_seen_at, last_seen_at.

Otomatik kümeleme

  • Yeni event geldiğinde upsertIncidentGroupFromEvent çağrılır
  • Aynı group_key varsa evidence_count +1, last_seen_at güncellenir
  • Group resolved ise ve aynı kök tekrar gelirse yeni grup açılır (re-open değil)
  • Group başına latest_event_id ile son delil event linklenir

Triage grup üzerinde

5 status (open / ack / investigating / resolved / false_positive) ve assignee grup seviyesinde set edilir. 200 alt event'i tek tek kapatmak yerine grubu kapatırsın — altındakiler implicit olarak resolved sayılır. Audit log'a group transition'lar yazılır.

Top event types summary

/incident-groups/summary?days=7 son N gün için aktif grup sayısı, unresolved critical sayısı, status histogramı ve en sık 10 event_type'ı döner — Control Center KPI'ları bu summary'den beslenir.

dbo.component_status tablosunda her bileşen kendi satırında durur:component_type (disk / fan / temperature / power / vpn_tunnel / interface_port…),component_key (örn. disk_0, vpn_to_branch),state (ok / warning / critical / unknown / up / down),severity, status_text, important,last_event_id, last_seen_at.

Hangi event hangi bileşene düşer?

  • HARDWARE_FAULT · disk SMART, fan, PSU, temperature → ilgili component
  • INTERFACE_DOWN / LINK_DOWN → port component
  • VPN_TUNNEL_DOWN · IPSec / SSL VPN → tunnel component
  • BACKUP_FAILED · Veeam / Acronis job → backup job component
  • CERTIFICATE_EXPIRING · SSL / TLS expiry → certificate component

Component-aware UI

Topology cihaz kartları "3/4 fan ok" rozeti gösterir. Cihaz detayında component listesi: disk-disk durumu, hangi sertifika 30 günden az kaldı, hangi VPN tünel düşük. Coverage ve Visibility Gaps sayfaları "important" component'lerin gözden kaçmamasını sağlar.

Summary endpoint

/components/summary?limit=8 en kötü 8 component'i döner — Executive Snapshot'ta ve haftalık summary maillerinde "Dikkat çekenler" kutusu bu listeyi gösterir.

Bir kural şu alanlardan oluşur:

  • name + description
  • match_event_type — specific event veya any
  • match_severity — info..critical veya any
  • match_user_re — kullanıcı adı regex'i
  • group_by — src_ip / user / device_id / none
  • threshold_count (default 5)
  • window_minutes (default 5)
  • cooldown_minutes (default 5) — re-trigger önler
  • severity_override — composite hangi severity ile gitsin
  • notify_email — eposta gönderilsin mi
  • enabled
Alert Rules
Alert rules · CRUD + presets + preview

Preview (test mode)

Yeni kural yazarken Preview butonu, kuralı son 7 günün gerçek olaylarına uygular ve "kaç kez ateşlerdi" diye gösterir. Yanlış pozitifleri önceden görmenizi sağlar.

Composite event

Kural ateşlediğinde ALERT_RULE_FIRED sentetik olayı üretilir (severity = override veya source severity), bildirim kanalına gider, audit log'a düşer. Re-trigger cooldown süresince susturulur.

State persistence

Kural hit'leri dbo.alert_rule_hits tablosuna yazılır — restart sonrası sliding window kaybolmaz. Pre-compiled regex cache, evaluator stats endpoint'i mevcut.

Baselines
Behavioral baselines · per-user fingerprint

Tablo şeması

CREATE TABLE dbo.behavior_baselines (
  project_id     UNIQUEIDENTIFIER,
  user_name      NVARCHAR(255),
  sample_count   INT,
  hours_bitmap   INT,        -- 24-bit, hangi saat?
  days_bitmap    INT,        -- 7-bit (Pzr=0)
  top_src_ips    NVARCHAR    -- JSON [{ip, count}]
  top_countries  NVARCHAR    -- JSON [{cc, count}]
  top_devices    NVARCHAR    -- JSON [{device_id, count}]
  last_seen_at   DATETIME2,
  last_built_at  DATETIME2
);
-- Gece 02:00'de yeniden kurulur (30 günlük pencere)

Sapma tespiti

  • Yeni saat — hours_bitmap'te bit yoksa
  • Yeni gün — days_bitmap'te bit yoksa
  • Yeni ülke — top_countries dışındaysa
  • Yeni cihaz — top_devices dışındaysa
  • Yeni IP — top_src_ips dışında, ülke aynı olsa bile

Risk multiplier'a beslenir

Sapma tek başına BEHAVIORAL_ANOMALY composite event üretir (score 70, severity high). Aynı kullanıcının aynı oturumda devam eden olayları için risk multiplier'abaseline_anomaly × 1.x olarak eklenir — sıradan AUTH_SUCCESS critical olabilir.

Manuel rebuild

Filter user + Rebuild butonu. Rebuild süresi ~50ms × kullanıcı sayısı; 500 kullanıcılık tenant için ~25 saniye.

Parametreler

SabitDeğer
WINDOW_MS5 dakika sliding
THRESHOLD5 fail
EMIT_COOLDOWN_MS5 dk (re-trigger önler)
MAX_KEYS5000 src_ip (memory cap)

FAIL_TYPES (korelasyon kapsamı)

  • AUTH_FAIL_USER
  • AUTH_FAIL_RDP
  • AUTH_FAIL_UNLOCK
  • M365_SIGNIN_FAILURE
  • SQL_LOGIN_FAILED
  • VPN_LOGIN_FAILED

Password spray ayrımı

Pencere içinde 3+ farklı kullanıcıya saldırı varsa "password spray" mesajı, tek kullanıcıya odaklı saldırıda "targeted brute-force". Distinct user listesi composite payload'ında JSON olarak iletilir.

score = base(event_type)
        × privileged_user_mult     // admin/root → ×1.5
        × threat_ip_mult           // TI hit → ×2.0
        × suspicious_geo_mult      // beklenmeyen ülke → ×1.7
        × off_hours_mult           // mesai dışı → ×1.3
        (cap: 100)

severity = critical (≥80) | high (≥60) | medium (≥30) | low (≥10) | info

Tunable env vars

  • RISK_TZ_OFFSET_HOURS — default 3, range -12..14
  • RISK_BUSINESS_HOUR_START — default 8
  • RISK_BUSINESS_HOUR_END — default 18

Multi-region kurulumlarda kuralı yeniden yazmadan saat dilimi tunable. Reason listesi UI'da "Privileged user ×1.5" gibi humanize edilir.

SOAR
SOAR · action history + manual block + quarantine + status

İki aksiyon modu

ModeEndpointHedef IPTipik kullanım
Block IPPOST /soar/blockPublic IP (RFC1918 dışı)Brute-force / scan / known-bad IP perimeter'da kes
Quarantine internalPOST /soar/quarantinePrivate IP de izinli (10.x, 172.16.x, 192.168.x)Compromise olmuş iç cihazı network'ten ayır

Mantık aynı address-group manipülasyonu; fark action_scope ve hedef IP validasyonu. Block IP private adresleri kabul etmez (içeride bloklamak transit policy ile mantıklı değil). Quarantine private/CGNAT IP'lere izin verir — saldırgana dönüşmüş iç endpoint'i (worm, ransomware lateral, kompromize hesap) anında kesip incident response'un nefes alma süresini kazandırır.

Akış

  1. Trigger — composite event, alert rule, threat intel veya manual
  2. POST /api/v2/cmdb/firewall/address — yeni address objesi shamashai-block-<IP> (subnet /32)
  3. PUT .../firewall/addrgrp/Shamashai-Blocked — append member
  4. Customer'ın hazır transit + local-in DENY policy düşürür
  5. Auto-expire loop her 60sn (default 60 dk sonra silinir)
  6. Audit log + soar_actions tablo (append-only kanıt)

Defansif tasarım

  • ASLA policy edit, sadece group member listesi
  • Private/loopback/CGNAT IP block edilemez
  • Per-firewall request queue, 1.1s pacing
  • HTTPS keep-alive agent, maxSockets:1
  • 5-attempt retry (2/4/8/16s) on 429/503
  • API key auth zorunlu (admin password yasak — lockout sebebi)
  • Trusted host = Shamashai server IP'si

Customer-side hazırlık (FortiOS 7.0+)

# 1. API user + trusted host
config system api-user
  edit "shamashai"
    set accprofile "super_admin"
    config trusthost
      edit 1
        set ipv4-trusthost <SHAMASHAI_IP> 255.255.255.255

# 2. Placeholder + grup
config firewall address
  edit "shamashai-soar-placeholder"
    set subnet 240.0.0.1 255.255.255.255

config firewall addrgrp
  edit "Shamashai-Blocked"
    set member "shamashai-soar-placeholder"

# 3. Transit DENY policy (en üste taşı)
# 4. Local-in DENY policy (admin web UI'a brute force için)
config firewall local-in-policy
  edit 0
    set intf "wan1"
    set srcaddr "Shamashai-Blocked"
    set action deny
Local-in policy her install'da unutulur — onsuz transit policy admin web UI'a gelen attack'ı durdurmaz. Kontrol listesinde mecburi adım.
Compliance
Compliance · ISO 27001:2022 Annex A coverage

ISO 27001:2022 Annex A — 19 control

  • A.5.7 Threat intelligence
  • A.5.10 Acceptable use
  • A.5.24 Incident management planning
  • A.5.25 Event assessment
  • A.5.26 Incident response
  • A.5.28 Evidence collection
  • A.6.3 Awareness/training
  • A.8.2 Privileged access
  • A.8.5 Secure authentication
  • A.8.7 Malware protection
  • A.8.8 Vulnerability management
  • A.8.9–10 Configuration · Information deletion
  • A.8.12 Data leakage prevention
  • A.8.15–17 Logging · Monitoring · Clock sync
  • A.8.20 Network security
  • A.8.23 Web filtering

KVKK Madde 12 (Veri Güvenliği) — 6 alt madde

Yetkisiz erişim önleme · log tutma · retention · sızma testi kanıtı · ihlal bildirimi · denetim. Her madde için ShamashAi'ın hangi tabloyu/feature'ı kanıt olarak sunduğu rationale alanında açıklanır.

Status hesaplaması

Covered: min_evidence_count sayısının üzerinde kanıt var. Partial: kanıt var ama threshold'un altında. No evidence: hiç kanıt yok.

Drilldown

Bir control'a tıklayınca GET /compliance/evidence?control=A.5.7 çağrılır, kontrolü satisfike eden gerçek olaylar (event_id, timestamp, source) listelenir. Auditor "kanıtla" diye sorduğunda bu liste yeterlidir.

Export

Print/PDF — clean stylesheet ile window.print(). CSV — control × status matrisi. Evidence pack (Reports sayfası) — JSON + Markdown + HTML, ZIP olarak indirilir.

Coverage
Coverage · tier başına yüzde

Coverage skoru tier × kategori × vendor matrisinde hesaplanır. "Bu cihaz tipini görüyor musun?" testi, beklenen vs gerçekleşen log akışı. Her cihaz satırında ayrıca parser confidence rozetiyle "ham log var ama kanonik event'e dönüşüyor mu" sorusunun cevabı görünür.

AI Parser Önerisi — bilinmeyen vendor için

Parser confidence low veya none olan satırlarda AI Parser butonu çıkar. Operatör cihazın 5–20 satır ham log örneğini yapıştırır → AI önerir:

  • Format tespiti — syslog RFC3164/5424, CEF, LEEF, JSON, key-value, CSV, custom
  • Event tipi eşlemesi — Shamashai'nin 34 kanonik event tipinden hangisine düştüğü, regex / JSON path / grok pattern'i ile
  • Alan çıkarımlarısrc_ip, user,action, severity gibi kanonik alanlar için pattern
  • Operatör için uyarılar — timezone varsayımı, PII, belirsiz severity gibi notlar

Öneri-only. Hiçbir şey otomatik uygulanmaz — operatör çıkan pattern'i agent parser config'e veya connector pack maintainer'a iletir. Canonical event-type ismi AI tarafından uydurulmaz: sabit 34-item taxonomy listesinden seçilir, yanlış isim UI'a sızamaz.

Visibility gaps
Visibility gaps · sessiz cihazlar listesi

Issue tipleri

  • never_seen — hiç event gelmemiş
  • no_logs_24h — 24 saat sessiz
  • no_health_10m — 10 dk health check yok
  • credential_missing — kimlik bilgileri eksik
  • parser_raw_only — sadece SYSLOG_RAW, classify edilmemiş

Priority

  • Critical — kritik kategori cihazı sessiz (firewall, DC)
  • High — önemli kategori cihazı log atmıyor
  • Medium — secondary kategori sorunu
  • OK — sorun yok
Reports
Reports · evidence pack + weekly summary

Evidence Pack içerik

  • Olay özeti + risk reasons
  • Triage history (kim ne zaman ack/resolve etti)
  • Related events (zaman çizelgesi)
  • Audit log (kim ne yaptı)
  • SOAR aksiyon (varsa)
  • Threat intel matches
  • Geo enrichment
  • MITRE ATT&CK mapping

Weekly Executive Summary

Pazartesi 09:00 (Europe/Istanbul) otomatik PDF + e-posta. IT yöneticisi rapor yazmaz. Send now butonu manuel tetikleme, Preview anlık örnek üretir.

Audit
Audit log · who changed what, when

dbo.audit_log append-only — silinmez. Project silinse bile kayıtlar kalır (forensics için). Filtreler: action prefix (device, soar, credential, ...) ve target. Last 500 entry default.

Remediation
Remediation tasks · owner + due date + risk acceptance

Her görevin owner, due date, status (open / in_progress / accepted_risk / closed). Compliance gap, visibility gap, lisans uyarıları otomatik bu kuyruğa düşer.

Per-event-type runbook: hangi sırayla hangi aksiyon, hangi kanıt yakalanmalı, kim onaylar. Vardiya devri ve incident kapanış kontrol listesi.

Per-user atanan vakalar, açık/kapalı oranı, ortalama time-to-ack ve time-to-resolve. "Kim aşırı yüklü?" sorusuna sayısal cevap.

Her change kaydı: risk_level (low/medium/high), status (planned/in_progress/completed/rolled_back), rollback evidence. Maintenance window ile entegre — değişiklik sırasında alarm üretmez.

Scope: project / site / device. Active window varsa /ingest endpoint'i alert evaluation atlar. Veri kaybı yok, sadece alarm yok.

dbo.reachability_logs — check_type, status (ok/warn/fail/unknown), latency_ms, message. Filtreler: source, status, free text. Devices'tan DeviceHealthConnector tarafından beslenir.

Network scan
Network scan · port discovery + AI advice

Port listesi: 22, 80, 161, 443, 514, 5985, 8080, 8443. Sonuçlar: live hosts, open ports, fingerprints. AI advice butonu — bulgularla cihaz envanteri için "şunu da ekle" önerileri.

MX lookup

POST /discovery/mx-lookup — domain alır, MX kayıtlarını çözer, mail sağlayıcısını tanır: Microsoft 365 (outlook.com / mail.protection.outlook.com),Google Workspace (aspmx.l.google.com), Yandex, Zoho ya da on-prem MX. Wizard "Hangi mail provider'sın?" sorusunu sormaz — cevabı kendi bulur, doğrulatır.

Website lookup

POST /discovery/website-lookup — domain → A record, TLS sertifika grab (relaxed, expired sertifikalara karşı tolerant), hosting ipucu (Cloudflare / AWS / Azure / GCP / on-prem). Sertifika expiry tarihi otomatik CERTIFICATE_EXPIRING event flow'una bağlanır — yenileme yarın olsa bile mail/push alırsın.

M365 probe

POST /discovery/m365/probe — Azure App Registration credential ile (Mail.Send + Directory.Read.All) tenant'a bağlanır, alabildiği data tiplerini doğrular. Sonrasında POST /discovery/m365/devices çağrılır; Graph API ile Intune / Entra ID kayıtlı cihazlar envanter haritasına aktarılır (max 1000).

External surface temizlik

POST /discovery/external-surface/delete — yanlış eklenen bir external IP ya da mail/web pseudo-cihaz tek tıkla silinir. Onboarding wizard sırasında deneme amaçlı eklenen kayıtların sonradan temizlenmesi için.

Discovery prob'ları credential öncesidir: domain ve public DNS yeterli. Bu sayede satış demo'sunda müşteri "mail/web altyapımı nasıl görüyorsun?" diye sorduğunda 5 saniyede pano dolar — kimlik bilgisi paylaşmadan.
Onboarding
Setup wizard · 12 adım

Adımlar

  1. Admin setup (ilk admin yoksa) — env: ADMIN_EMAIL + ADMIN_PASSWORD
  2. License key paste — Ed25519 imzalı JWT
  3. Company / project oluştur
  4. Welcome — vizyon + süre tahmini
  5. Mail domain — auto MX, M365 / Google / on-prem tespit
  6. M365 creds — Azure app registration (Mail.Send + Read.All)
  7. Websites — public domain auto-discovery
  8. Office name — primary site
  9. Firewall — perimeter ekle, VLAN scan
  10. Classify — VLAN scan'inde bulunanları kategorize et
  11. Categories — internal device kategorileri (built-in + custom)
  12. Anchors — per-category cihaz girişi
  13. Discover — auto-discovery progress
  14. Review — özet + onay

Her adım atlanabilir ve rezüme edilebilir. Wizard state localStorage + server-side hybrid — yarım bıraksanız bile sonra kaldığı yerden devam edersiniz.

AI'ı KULLANDIĞIMIZ yerler

İşSıklıkModel
Bilinmeyen vendor parser üretimiVendor başına 1 kez (cache)Sonnet
Cihaz fingerprint sınıflandırmaİlk bağlantıda 1 kezHaiku
Olay açıklama (talebi)On-demandHaiku
Önceliklendirme özetiSaatlik batchHaiku
Posture danışmanlığıHaftalık batchSonnet
Executive briefingHaftalık (Pazartesi)Haiku

AI'ı KULLANMADIĞIMIZ yerler

  • Her log satırı sınıflandırma → kural motoru
  • Bilinen CVE eşleştirmesi → DB sorgusu
  • Threshold alarmları → sayaç
  • Risk skor hesaplama → deterministik formül

Güvenlik kuralı

  • Credential ASLA AI'a gönderilmez
  • Müşteri verisi → anonim fingerprint + sample
  • Training kullanımı yok (Anthropic API contract)
  • Air-gap mode: AI feature flag ile tamamen kapanır
  • Müşteri başına aylık $5–15 hedef AI fatura
SourceRefreshBoyutKullanım
Tor Exit Nodes1 saat~2K IPAnonim erişim girişimleri
FireHOL Level 11 saat~600 CIDRKüratörlü düşük yanlış-pozitif blocklist
Spamhaus DROP1 saat~1K netblock"Do not route or peer" CIDR'lar
USOM / TR-CERT6 saat~10K URL/IPTürkiye ulusal kötücül liste
Abuse.ch FeodoTracker6 saat~500 IPAktif botnet C2: Emotet, Dridex, TrickBot, QakBot, IcedID

Atomic swap mantığıyla refresh: bir feed başarısız olursa o turda önceki dataset korunur — diğerlerinden gelen IP/CIDR canlı kalmaya devam eder. Hiçbir feed çalışmazsa son başarılı snapshot kullanılır.

Eşleşme aksiyonları

  • Risk multiplier ×2.0 (otomatik)
  • Synthetic event: KNOWN_BAD_IP
  • SOAR'a "auto:threat_intel" trigger (opsiyonel auto-block)
  • Geo enrichment ile ülke + ISO-2 kod birleştirilir

Operator UI — Settings → Threat Intelligence

Yeni sayfa kaynak başına IP/CIDR sayısını, son sync zamanını, hata mesajlarını gösterir. "Refresh now" butonu (admin role) outbound network problem'i düzeltildikten sonra API restart olmadan tekrar dener.

Geo enrichment

MaxMind GeoLite2 embedded (yerel DB). İnternet aranmaz; ASN ve ülke bilgisi olay zenginleştirme için. Air-gap'ta da çalışır.

E-posta — 2 seçenek

  • SMTP — generic, port 587 STARTTLS önerilen
  • Microsoft 365 Graph — app-only OAuth, Mail.Send permission, sender mailbox

M365 Graph yolu basic-auth devre dışı tenant'larda da çalışır. Modern auth + zero password.

Web Push — mobil uyarı

  • VAPID + Web Push API
  • Service Worker (public/sw.js)
  • Per-subscription min_severity
  • iOS Safari 16.4+ home screen'e eklenirse çalışır
  • Tarayıcı kapalı olsa da kritik event geldiğinde telefon bildirim alır

WhatsApp — kritik olay alarmı

  • Meta Cloud API doğrudan — BSP middleman yok
  • Ücretsiz tier ayda ~1000 service conversation karşılar
  • Onaylı template (5 parametre): severity · headline · risk · source · detail
  • System-user access token, AES-256-GCM ile şifreli saklanır
  • Türkçe template (varsayılan), dil seçeneği isteğe bağlı
  • Bağımsız risk eşiğiwhatsapp_min_risk_score (varsayılan 100): WhatsApp sadece kritik üzeri eşik gönderir, IT yöneticisi medium gürültü için telefonundan rahatsız olmaz
  • TR-friendly numara normalizasyonu: +90 555 123 45 67, 0532 987 65 43, 90... hepsi canonical E.164'e dönüşür

Notification policy

{
  "critical": ["email", "push", "whatsapp", "webhook"],
  "high":     ["email", "push"],
  "medium":   ["email"],
  "whatsapp_min_risk_score": 100,
  "quiet_hours": { "start": "22:00", "end": "07:00" }
}

Slack / Teams / Webhook

Slack incoming webhook URL · Teams workflow connector · generic JSON POST. Plain-language template engine: BRUTE_FORCE_DETECTED → "Şüpheli giriş: ahmet@firma.com hesabına 8 başarısız deneme — 185.220.x.x".

Push subscription admin

Settings → Notification policy sayfasının altında Subscribed devices paneli — projeye kayıtlı tüm push endpoint'leri (browser / phone) label + son push zamanı + min severity + send/failed sayacı ile listelenir. Admin tek tıkla bir cihazın aboneliğini iptal edebilir (lost laptop, eski çalışan). İptal audit log'a düşer.

Operations Readiness — preflight

GET /operations/preflight production'a açmadan önce env, network ve güvenlik kontrollerini koşturur:

  • JWT_SECRET ≥ 32 char, dev default değil
  • CREDENTIAL_KEY AES-256-GCM key, set
  • SQL_PASSWORD dev şifresi değil
  • SHAMASHAI_CORS_ORIGINS set, wildcard yok
  • ALLOW_UNAUTH_INGEST = false
  • License durumu, agent token sayısı, push VAPID hazır mı
  • SQL bağlantı, agent heartbeat, threat intel feed taze mi

Tüm kalemler yeşile dönmeden production'a açılmamalı. Sonuçlar Control Center posture skoruna da feed edilir.

Update Center

GET /operations/update-center — bağlı cloud release feed'inden mevcut sürümleri çeker, kurulu sürümü karşılaştırır, hangi release notes / hangi binary (ZIP + EXE) hangi hash ile imzalı olduğunu gösterir. Manuel "indir + tools/install-shamashai-release.ps1 çalıştır" flow'u — otomatik silent update yok (operasyonel kontrol amaçlı).

Support Diagnostics Bundle

GET /operations/support-bundle ile vendor / partner desteği için ZIP üretilir:

  • Anonymize edilmiş env (secret değerler maskelenir)
  • Son 200 satır agent log + api log
  • Health snapshot · queue durumu · DB indeks istatistikleri
  • License durumu · heartbeat geçmişi
  • Schema versiyon hash · running migration listesi

Credential, AI prompt içeriği, customer event payload'u kasıtlı dışarda bırakılır. Tek dosya, mail ekine sığar.

Usage & Capacity

GET /operations/usage-capacity — lisans kullanımı (kaç cihaz, kaç site), ingest hacmi (EPS son 1h / 24h / 7d), event tablosu boyutu, retention'a göre kalan disk öngörüsü. Lisans yenileme / boyut artırma kararları için sayısal temel.

Data Protection — Backup / Restore

POST /projects/:id/export projenin tüm konfigürasyonunu (devices, categories, sites, alert rules, networks, edges) tek bir JSON snapshot'a yazar. POST /projects/import snapshot'ı geri yükler (opsiyonel rename). Snapshot tek dosya, customer kontrol eder, dış servise yollanmaz. Event/log dahil değildir (boyut + KVKK gereği) — yapılandırma backup'tır, telemetri backup'ı değil.

Retention

PUT /projects/:id/retention ile per-project event retention (default 90 gün) ayarlanır. Gece job: DELETE FROM events WHERE timestamp < NOW - retention_days. audit_log + soar_actions retention'sızdır (append-only kanıt). Retention değişikliği audit log'a yazılır.

Sentetik Demo Dataset — 30 saniyede yaşayan ağ

Settings → Operations readiness sayfasında "Seed demo data" butonu. Boş bir kuruluma 6 sentetik cihaz (Fortigate, 2 DC, ESXi, Veeam, Cisco AP) + N günlük canonical event akar. Prospektif toplantısının ilk 30 saniyesinde "yaşayan ağ" gösterimi için.

  • Olaylar gerçek BASE_SCORES haritasından çekilir — risk skoru, alarm motoru, MITRE chip'leri sahte event'ler için de tam çalışır
  • Şüpheli source IP'ler cluster'lanır → demo dashboard'da brute-force pattern + threat-intel hit + ATT&CK chip'leri görünür
  • İdempotent — aynı butona tekrar basmak cihazları çoğaltmaz, sadece olay ekler
  • "Remove demo data" kardeş butonu sadece demo:synthetic tag'li satırları siler — gerçek cihazlara dokunmaz

Geliştirici Dokümantasyonu — panelden

Settings → Support Diagnostics → Developer documentation paneli iki referans dokümanını doğrudan tarayıcıda açar (API tarafından whitelist-served, başka repo dosyası açığa çıkmaz):

  • API Reference (~2700 satır markdown) — ~140 endpoint, domain başına gruplandırılmış (Auth, Projects, Devices, Events, Alerts, Notifications, Compliance, SOAR, License, Threat Intel, AI, Operations, Demo). Türkçe açıklama, gerçekçi örnek request/response payload'lar, rol gereksinimleri.
  • IT Manager Kullanım Kılavuzu (~1400 satır markdown, Türkçe) — 21+ bölüm: günlük akış (sabah triaj / gün-içi yanıt / kritik alarm / haftalık / aylık), cihaz yönetimi, topoloji, coverage matrix, alert kuralları, bildirimler, SOAR, compliance, settings, threat intel, AI advisor, onboarding wizard, lisans, backup, sorun giderme.

Dokümanlar kurulum payload'unda gelir — internet olmadan da panelden okunur. POC ekibi müşteriyi yalnız bırakmadan kullanıma sokar.

Lisans dosyası

  • Format: Ed25519 imzalı JWT (compact base64url)
  • İçerik: customer_id, max_devices, max_sites, features[], not_before, not_after
  • Public key API binary'sine gömülü — doğrulama offline yapılır
  • Bootstrap'ta kabul edilir, sonradan da değiştirilebilir (eski sıfırlanır)

Cloud Pairing (opsiyonel)

Müşteri cloud activation code girdiğinde instance AfnTeknoloji cloud'una bağlanır. Günlük heartbeat şu özet verileri yollar: kurulu sürüm, license expiry, cihaz sayısı, site sayısı, son 24h event count, agent health. Olay payload'u, credential, müşteri içeriği yollanmaz.

Cloud admin paneli (cloud.shamashai.com.tr) bu özetlerle müşteri envanteri, lisans yenileme planı, support ticket geçmişi yönetir. Müşteri pairing'i tamamen kapatabilir (air-gap) — heartbeat yok, alarm yok, ürün çalışmaya devam eder.

Heartbeat schedule

  • SHAMASHAI_LICENSE_HEARTBEAT_ENABLED default false
  • SHAMASHAI_LICENSE_HEARTBEAT_INTERVAL_MINUTES default 1440 (24h)
  • Manuel "run now" mevcut — pano üzerinden tetiklenir
  • Cloud üzerinden yeniden imzalanmış lisans alır (renewal, capacity bump)

Capacity enforcement

Site oluşturma, device ekleme, external surface kayıt eklemek lisans limitini aşıyorsa409 license_capacity_exceeded döner; UI red mesaj gösterir, sales'e mail atmak için tek tık yönlendirme. Geçici "30 günlük overage grace" yok — hard cap.

Mobile + ergonomi

  • Mobile-responsive overhaul — tüm data table'lar küçük ekranda card listesine dönüşür (MobileCardList). PWA install banner aktif.
  • Light theme toggle — Sun/Moon ikonlu, Header'da. Tailwind darkMode: ['selector', '[data-theme="dark"]'].
  • Keyboard shortcuts — g+i (incidents), g+e (events), g+d (devices), g+s (settings) navigation. Mac/Win uyumlu.
  • Saved views bar — herhangi bir liste sayfasında filtre kombinasyonu kaydedilebilir, paylaşılır.
  • Custom dashboard builder — 10 widget için göster/gizle + sıralama, localStorage'da kalır.
  • Filter chips — URL params'tan beslenen, X ile silinebilen aktif filtre rozeti.
  • Türkçe sesli komut — Web Speech API ile "vakaları aç", "raporu indir" gibi voice navigation.
  • Critical audio alert — Web Audio API beep; critical event çıkışında 1.2s, off-hours susturma.

Görselleştirme + raporlama

  • Attack source map (/overview/geo) — bloklanan saldırı kaynaklarının geo-IP haritası, son 30 gün, MaxMind GeoLite2 embedded DB.
  • Trends panel (/overview/trends) — 30 günlük sparkline + severity donut + Top-N event_type bar.
  • Executive 1-page PDF (/overview/briefing) — patrona haftalık 1 sayfa özet, TR/EN.
  • Attack path graph — Source → Edge → Internal → Target SVG diagram; incident sayfası içinde.
  • NOC wall mode (/wall) — TV full-screen, oto-refresh, posture + son 10 vaka + threat map. Operasyon merkezi ekranı için.
  • Vendor badge — 18 vendor için renkli chip (Fortinet kırmızı, Sophos yeşil, M365 mavi, vs.) — liste taramasını hızlandırır.
  • Generic CSV export — Drop-in GenericCsvButton tüm liste sayfalarında UTF-8 BOM ile.

Otomasyon + entegrasyon

  • SMS channel — NetGSM + generic HTTP SMS provider; /sms-channel/config + /sms-channel/test. WhatsApp'ın offline alternatifi.
  • SOAR Sophos XG — Sophos XG XML API üzerinden IP block. Wave 1'de yalnızca Fortigate vardı; şimdi 2 firewall vendor.
  • Notification ack (mail / WhatsApp deep link) — HMAC-SHA256 imzalı, 72 saat TTL, replay-safe token. /ack/:token public endpoint — 3 aksiyon: acknowledge / resolve / false_positive.
  • Maintenance pattern AI — son 8 hafta event'ini analiz eder, min 4 hafta aynı saat dilimi/cihaz/event_type kalıbını "öneri" olarak işaretler. Confidence (low/medium/high) + rationale döner.
  • Bulk action toolbar — sabit alt çubuk, seçim sayacı + N aksiyon butonu. useBulkSelection hook ile her liste sayfası destekler.
  • Copy as cURL — endpoint URL'ini cURL komutuna çevirir, clipboard'a kopyalar. GET/POST/PATCH/DELETE + JSON body.
  • Smart import presets — Lansweeper export · Active Directory CSV · Fortigate Address Objects · Generic IT envanter — header tanıyıp otomatik mapping.

KVKK + governance

  • Audit log hash chainaudit_log.prev_hash + row_hash kolonu eklendi. SHA-256 ile her satır öncekine bağlı, /audit/verify endpoint zinciri doğrular. 5651 yasal arşiv için kanıt seviyesi.
  • Cloud-less mode toggle (/cloudless/toggle) — admin tek tıkla tüm outbound'u kapatır: threat_intel + AI advisor + license heartbeat + pilot telemetry + WhatsApp devre dışı. "Biz hiçbir şey göndermiyoruz" satış argümanı netleşir.
  • Pilot fail-safe telemetry — opt-in (default disabled). Anonim heartbeat: instance_id + version + active_users + critical_open + license_state + posture_score. PII yok. AfnTeknoloji destek için.
  • MSSP operator console — multi-tenant: mssp_customers + mssp_heartbeats tabloları + /mssp/heartbeat public endpoint. Roll-up: posture · open incidents · active users · alarm silence days. AfnTeknoloji bayi ağı için tek pano.

Toplam yeni: 14 backend modülü · 19 yeni REST endpoint · 27 yeni frontend component · 1 yeni sayfa (/wall) · 2 yeni DB tablosu + 6 yeni kolon.

Pilot programına başvurun

2 haftalık ücretsiz discovery + 30 gün ücretsiz deneme + 3 ay %75 indirimli pilot + 1. yıl %30 indirim. 30 dakikalık bir görüşme yeterli.