Veri sizinle kalır. Kanıtla.
ShamashAi'ın güvenlik mimarisi — at-rest + in-transit encryption, RBAC + MFA, append-only audit, KVKK Madde 12 ve ISO 27001:2022 Annex A evidence-mapped raporlama. Production hardening kontrol listesi ve air-gap kurulum.
AT-REST
- · Cihaz credentials → AES-256-GCM (CREDENTIAL_KEY)
- · API keys → trustHost ile sınırlı
- · Web push subscription → GCM AEAD
- · Agent token → SHA-256 hash (plaintext DB'de yok)
- · Şifre → scrypt (N=16384, r=8, p=1)
- · License key → Ed25519 imzalı JWT
- · MFA secret → şifrelenir (CREDENTIAL_KEY)
IN-TRANSIT
- · Web ↔ API → HTTPS (reverse proxy) · TLS 1.2+
- · Agent ↔ API → HTTPS · Bearer token
- · SQL ↔ API → TLS opt · trustServerCert env
- · Fortigate ↔ API → HTTPS REST · trusted host
- · vCenter ↔ Agent → HTTPS REST · InsecureTls flag
- · Helmet middleware → CSP, X-Frame-Options
- · CORS → SHAMASHAI_CORS_ORIGINS, wildcard yasak
Kullanıcı authn
| Konu | Detay |
|---|---|
| Algoritma | JWT HS256 · JWT_SECRET min 32 char |
| Şifre | scrypt (N=16384, r=8, p=1) |
| Cookie | HttpOnly · SameSite=Lax · Secure (prod) |
| TTL | 7 gün default · jti session row ile revocable |
| Bootstrap | İlk admin env ADMIN_EMAIL + ADMIN_PASSWORD |
3 rol RBAC
| Rol | Yetki |
|---|---|
| admin | Her şey: users, license, retention, settings, delete |
| analyst | Olay triage, incident kapatma, SOAR block, alert rule yazma |
| viewer | Sadece görüntüleme · export · raporlama |
Project-scoped membership: aynı kullanıcı farklı projelerde farklı role sahip olabilir. Backend her endpoint'te effectiveProjectRole(userRole, membershipRole) minimum'unu enforce eder.
MFA · TOTP + QR code
beginUserMfaSetup→ 32-char secret + otpauth_uri (QR code üretilir)verifyUserMfaSetup→ 6-digit kod doğrulama (TOTP, SHA-1, 30s window)disableUserMfa→ kullanıcı kendi devre dışı bırakır (mevcut TOTP gerekli)resetUserMfaAdmin→ admin başkasının MFA'sını sıfırlar (audit log'a gider)- Login flow: password OK → MFA enabled ise 6-digit kod sor → session start
Session yönetimi
listUserSessions(userId, limit=20)— IP, user agent, last_used, expires_atrevokeUserSession(userId, jti)— tek sessionrevokeUserSessions(userId, exceptJti?)— diğer tümü
Agent token
- Format:
shamashai_agent_<base64> - Stored: SHA-256 hash (plaintext DB'de yok)
- Per-project scope
- Plaintext bir kez gösterilir (oluşturma sırasında), sonra geri alınamaz
- Revocable, last_used_at tracked
| Tablo | Retention | Notlar |
|---|---|---|
| events | Default 90 gün | Per-project ayarlanabilir projects.retention_days |
| reachability_logs | Ayrı (default 30 gün) | Health check'ler — event'leri kirletmez |
| audit_log | Sonsuz | Append-only · forensics için retention'sız |
| soar_actions | Sonsuz | Append-only · kanıt |
| maintenance_windows | Sonsuz | Geçmiş window'lar saklı |
| 5651 yasal arşiv | 2 yıl | v1.5 yol haritasında (S3/MinIO) |
Gece job: DELETE FROM events WHERE timestamp < NOW - retention_days. Manuel run + stats endpoint ile takip edilir. Retention değişikliği audit_log'a yazılır.

ISO/IEC 27001:2022 Annex A — 19 control
- Organizational (A.5) — Threat intelligence, Acceptable use, Incident management, Event assessment, Incident response, Evidence collection
- People (A.6) — Awareness/training
- Technological (A.8) — Privileged access (A.8.2), Secure auth (A.8.5), Malware protection (A.8.7), Vulnerability mgmt (A.8.8), Configuration (A.8.9), Information deletion (A.8.10), Data leakage (A.8.12), Logging (A.8.15), Monitoring (A.8.16), Clock sync (A.8.17), Network security (A.8.20), Web filtering (A.8.23)
KVKK Madde 12 — 6 alt madde
- Yetkisiz erişim önleme
- Log tutma
- Retention
- Sızma testi kanıtı
- İhlal bildirimi
- Denetim
Status hesaplaması
Her control için min_evidence_count threshold'u var. Olay sayısı bu sayının üzerindeyse Covered; var ama altındaysa Partial; hiç yoksa No evidence. Drilldown ile kanıt olayları liste halinde görünür — auditor'a sunulabilir.
Export
- Print/PDF — clean stylesheet ile tarayıcı print → "Save as PDF"
- CSV — control × status matrisi
- Evidence pack — JSON + Markdown + HTML, ZIP indirilebilir

Her mutating action dbo.audit_log tablosuna append-only yazılır:
timestamp,actor(kullanıcı email)action— örn.device.create,device.delete,credential.update,soar.block,license.settarget_type,target_id,target_namedetail— JSON (hangi alanlar değişti)ip— caller IP
Project silinse bile audit_log kayıtları kalır (forensics). Filtreler: action prefix, target. Last 500 entry default, CSV export mevcut.
Boot sırasında validateRuntimeConfig() aşağıdaki kontrolleri yapar; uyumsuz prod konfigürasyonu kabul edilmez:
Operations sayfası GET /operations/preflight tüm kontrolü tek ekranda gösterir — production'a açmadan tüm kalemler yeşil olmalı.
- Telemetry yok — phone-home opsiyonel (sadece v2 lisans heartbeat)
- Müşteri verisi AI training'e gitmez (Anthropic API contract)
- AI'a credential ASLA gönderilmez — sadece anonim fingerprint + sample
- Air-gap kurulum tüm outbound'u kapatabilir
- Backup/restore — JSON snapshot, tek dosya, müşteri kontrol eder
- Ayrı tenant per kurulum — multi-tenant kodu var ama saklı; tek-firma deneyimi öncelikli
Güvenlik soru-cevap için iletişime geçin
CISO'nuzun sorularına detaylı cevap verecek security questionnaire'imiz hazır. Pilot SOW kapsamında pen-test sonucu paylaşılır.
