ShamashAi
Security & Compliance

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.

AES-256-GCM at rest
Ed25519 imzalı lisans
TOTP MFA
ISO 27001 + KVKK

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

KonuDetay
AlgoritmaJWT HS256 · JWT_SECRET min 32 char
Şifrescrypt (N=16384, r=8, p=1)
CookieHttpOnly · SameSite=Lax · Secure (prod)
TTL7 gün default · jti session row ile revocable
Bootstrapİlk admin env ADMIN_EMAIL + ADMIN_PASSWORD

3 rol RBAC

RolYetki
adminHer şey: users, license, retention, settings, delete
analystOlay triage, incident kapatma, SOAR block, alert rule yazma
viewerSadece 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_at
  • revokeUserSession(userId, jti) — tek session
  • revokeUserSessions(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
TabloRetentionNotlar
eventsDefault 90 günPer-project ayarlanabilir projects.retention_days
reachability_logsAyrı (default 30 gün)Health check'ler — event'leri kirletmez
audit_logSonsuzAppend-only · forensics için retention'sız
soar_actionsSonsuzAppend-only · kanıt
maintenance_windowsSonsuzGeçmiş window'lar saklı
5651 yasal arşiv2 yılv1.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.

Compliance
Compliance · evidence-mapped reports

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

  1. Yetkisiz erişim önleme
  2. Log tutma
  3. Retention
  4. Sızma testi kanıtı
  5. İhlal bildirimi
  6. 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
Audit log
Audit log · who changed what, when

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.set
  • target_type, target_id, target_name
  • detail — 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:

JWT_SECRET
Set ve ≥ 32 karakter olmalı
CREDENTIAL_KEY
Set olmalı (32-byte hex, AES-256-GCM)
SQL_PASSWORD
Set ve dev şifresi olmamalı
SHAMASHAI_CORS_ORIGINS
Listele, wildcard yasak
ALLOW_UNAUTH_INGEST
false zorunlu (production)
SQL_TRUST_SERVER_CERTIFICATE
true ise warning loglanır

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.