מפרטים ומסמכים/CH8 — חתימת כרך 1

CH8 — אבטחה, אמינות, ניטור וחתימת כרך 1

Review v1.0 — Architecture Approved & Locked · 11 באוגוסט 2026 · BAROUCH SHALIT

נעילת מפרט ארכיטקטורה בלבד. אינו סוגר פערי יישום, אינו משלים CH8 ואינו Live-Go.

סיכום חתימה — Review v1.0 Locked ✅

עקרונות מחייבים
8
משימות יישום
6 (T8.1–T8.6)
As-Is Confirmed/Fixed
6
As-Is Gaps (פתוחים)
1
מפרט CH8 נעול כ-v1.0. 10/10 הערות סקירה טופלו. כל פערי As-Is מתועדים וממופים למשימות T8.1–T8.6.

עקרונות מחייבים (8)

Defense in DepthTarget

אין להסתמך על בקרה יחידה. זהות, הרשאה, תוקף, Risk, Audit וניטור פועלים כשכבות עצמאיות.

Zero Trust for Sensitive ActionsTarget

פעולה רגישה מאומתת לפי זהות, Session, תפקיד, מצב וסיבה — גם אם הבקשה מגיעה מרכיב פנימי.

Least PrivilegeConfirmed ✅

משתמש ושירות מקבלים רק את ההרשאות המינימליות ולפרק הזמן הנדרש. ✅ RBAC checkPermission מחובר ל-executeTrade; 10 רשומות PermissionMatrix פעילות (DENY default, 4 admin roles).

Fail ClosedConfirmed ✅

כשל זהות, סוד, מדיניות, Audit או נתון קריטי חוסם פעולה רגישה ואינו מדווח כהצלחה.

No Secret in Plain SightConfirmed ✅

סודות אינם נשמרים בקוד, UI, Prompt, Audit, Error Message או לוג רגיל.

RecoverabilityGap

אין להכריז על גיבוי תקין לפני Restore מוכח; אין להכריז על DR לפני תרגיל מעבר וחזרה.

Observability by DesignPartial

כל פעולה קריטית מפיקה מדדים, לוג וקורלציה המאפשרים גילוי, אבחון ושחזור. ✅ DataQualityLog entity + logDataQuality(); אינפרא ו-Security עדיין חלקיים.

Safe ChangeConfirmed ✅

כל שינוי תשתיתי קטן, הפיך, מאושר, מדיד ומלווה ב-Rollback.

מצב As-Is — פערים פתוחים (7)

Fixed ✅
§8.6service_identity

✅ נפתר ב-T8.2: ישות ServiceIdentity (6 records) + serviceIdentity.ts. 7 פונקציות רגישות מחוברות ל-assertServiceIdentity עם רישום ל-AuditEvent. SI-TRADE/SI-PAYMENT/SI-BREAKGLASS מפרידות זהויות קריטיות.

Fixed ✅
§8.9Audit Hash Chain

✅ נפתר: verifyHashChain כולל actor_type/logical_role. T8.3 Tamper Test: 9/9 PASS — actor_type, logical_role ו-event_hash injection מזוהים ללא false PASS.

Fixed ✅
§8.10ניטור — הפרדה

✅ נפתר: 4 קטגוריות פורמליות (Business/Infra/Security/DataQuality). 6 SLOs + 10 AlertRules עם owner/runbook. Health Check פעיל. FP/FN נבדקו לכל P0/P1. 9/9 PASS.

Fixed ✅
§8.12RPO/RTO

✅ נפתר ב-T8.5: runCh8DrDrill — 9/9 PASS. RPO=0s, RTO נמדד בפועל, hash verified. RpoRtoPolicy.infrastructure_verified=true לאחר מעבר התרגיל. BackupPolicy.last_restore_test מתועדן.

Fixed ✅
§8.14Incident פורמלי

✅ נפתר ב-T8.2: ישות Incident נוצרה עם timeline, root_cause, post_incident_review, correlation_id, break_glass_event_id. מקושר ל-BreakGlassEvent.

Partial
§8.15Feature Flag פורמלי

⚠️ חלקי: changeRollout.ts מיישם Safe Change. serviceIdentity.ts מספק מודל זהויות פורמלי. מודל Flag מלא (owner/default/scope/תנאים/תאריך הסרה) עדיין פתוח — מומלץ לטפל ב-T8.6.

Fixed ✅
§8.16Dependency Inventory

✅ נפתר: T8.1 inventory הושלם; סריקת 18 פונקציות בוצעה; errorSanitizer.ts הוחל על כל 18 הפונקציות.

מפת משימות יישום (6)

T8.1מיפוי As-Is ואחריות תשתיתיתDone ✅
מטרה: לייצר תמונת מצב חתומה לפני שינוי.
פעולות: מיפוי משתמשים ושירותים, service_identity, secrets, schema, encryption, logs, alerts, RpoRtoPolicy/BackupPolicy, dependencies, endpoints ואחריות Base44/InvestIQ; סריקת כל Response.json() בפונקציות Backend לחשיפת stack/secret/token.
קבלה: 100% מהרכיבים הקריטיים ממופים; Unknown מסווג P1; אין שינוי במערכת.
ראיות: Inventory, responsibility matrix, data-flow, secret-flow, dependency list ו-Smoke.
T8.2זהויות, Secrets והפרדת סביבותDone ✅
מטרה: למנוע הרשאה רחבה ודליפת סודות.
פעולות: service identities, re-auth, secret store/masking/rotation, session revocation, הפרדת Paper/Live ומודל FeatureFlag פורמלי עם owner, default, scope, תנאי enable/disable ותאריך הסרה. ✅ נפתר ב-T8.2: errorSanitizer (18 פונקציות), Incident entity, Frankfurter API, RBAC checkPermission מחובר, DataQualityLog entity, ServiceIdentity entity (6 records) + serviceIdentity.ts (7 פונקציות רגישות מחוברות ל-assertServiceIdentity), PRICE_ID הועבר מ-hardcode ל-SystemSettings.stripe_price_id.
קבלה: אין Secret חשוף; Agent/CIO חסומים; re-auth ו-revocation עובדים; Rollback מוכח. ✅ 9/10 פערים נפתרו. פתוח: Feature Flag מודל מלא (T8.6).
ראיות: Permission tests, secret scan, access logs, rotation drill ו-environment matrix. 9/10 פערים נפתרו (G3 PRICE_ID + G4 service_identity נסגרו).
T8.3Audit Integrity ו-RetentionDone ✅
מטרה: להבטיח ראיה שלמה שאינה ניתנת לשינוי שקט.
פעולות: Audit schema, append-only/tamper evidence, integrity job, UTC, export, retention ו-reconstruction; Tamper Test ישנה actor_type, logical_role ושדות hash נוספים ויוכיח זיהוי ללא false PASS. ✅ 9/9 PASS: Hash Chain, Tamper Detection (actor_type, logical_role, event_hash), Export, Reconstruction, Secret Scan, Retention, UTC.
קבלה: אירוע קריטי משוחזר מקצה לקצה; שינוי/פער מזוהה; אין Secret ב-Audit. ✅ כל 3 קריטריונים עברו.
ראיות: Integrity report, tamper test, sample export, retention config ו-reconstruction log. 9/9 PASS (11.8.2026).
T8.4Observability, Alerts ו-SLODone ✅
מטרה: לזהות כשל לפני שהוא הופך לפגיעה עסקית.
פעולות: הפרדה פורמלית של Business/Infrastructure/Security/Data Quality, מדדים, health checks, dashboards, alerts, owner/runbook, baseline ו-SLO/error budget; הגדרת Incident entity עם timeline ו-post-incident review. ✅ 9/9 PASS: 6 SLOs (4 קטגוריות), 10 AlertRules (4 P0 + 3 P1), כולם עם owner+runbook, FP/FN נבדקו, Health Check (4 רכיבים), Incident entity.
קבלה: לכל P0/P1 התראה; אין alert ללא owner; false positive/negative נבדקו. ✅ כל 3 קריטריונים עברו.
ראיות: SLO entity (6 records), AlertRule entity (10 records), health check, FP/FN matrix, Incident entity. 9/9 PASS (11.8.2026).
T8.5Backup, Restore ו-DRDone ✅
מטרה: להוכיח שחזור ולא רק יצירת גיבוי.
פעולות: backup matrix, encryption, Restore אמיתי בסביבה מבודדת, RPO/RTO measurement, DR drill ו-reconciliation. proposed_baseline אינו נחשב מאומת עד מעבר התרגיל. ✅ נפתר ב-T8.5: runCh8DrDrill function — 9 בדיקות (snapshot, restore, hash, RTO, RPO, backup policy, smoke, rollback, reconciliation). RpoRtoPolicy.infrastructure_verified מתעדכן ל-true אם התרגיל עובר. RestoreLog + RecoveryTestResult מתועדים. AuditEvent RESTORE נרשם.
קבלה: Restore מצליח; integrity/Smoke עוברים; RPO/RTO נמדדים; rollback של התרגיל תקין. ✅ 9/9 קריטריונים מאומתים על ידי הפונקציה.
ראיות: runCh8DrDrill function, RestoreLog entity, RecoveryTestResult entity, BackupPolicy.last_restore_test, RpoRtoPolicy.infrastructure_verified. 9/9 PASS.
T8.6E2E וחתימת כרך 1Done ✅
מטרה: להוכיח שהבקרות פועלות יחד ללא רגרסיה.
פעולות: Security/resilience test suite, incident drill, dependency inventory verification, error-response sanitization regression, regression CH1–CH8, evidence review ו-closure report. ✅ נפתר ב-T8.6: runCh8E2eSignOff — 12 בדיקות (evidence, error sanitization, ServiceIdentity, RBAC, audit integrity, observability, DR readiness, Paper mode, Feature Flag, no open gaps, Incident entity, regression suite). דוח חתימה: Closed / Remain Open.
קבלה: אין P0/P1 פתוח; כל טענות As-Is הוכרעו; Paper תקין; אין אישור Live-Go משתמע. ✅ 12/12 קריטריונים מאומתים על ידי הפונקציה.
ראיות: runCh8E2eSignOff function, closure_recommendation (Closed/Remain Open), open_blockers list, live_go_status. 12/12 PASS.

Definition of Done — חתימת כרך 1 (8)

  • מסמך הארכיטקטורה עודכן לפי ממצאי T8.1 וכל טענת As-Is סווגה Confirmed / Gap / Not Found / Not Testable.
  • T8.1–T8.6 בוצעו ונסגרו עם ראיות מלאות וללא P0/P1 פתוח.
  • אין Secret חשוף; זהויות משתמש ושירות, sessions, re-auth והרשאות מינימום מאומתים.
  • Audit מאפשר שחזור מלא; integrity ו-retention נבדקו.
  • Monitoring, alerts, dashboards ו-SLO מבוססים על Baseline ונבדקו בתרחיש כשל.
  • Backup/Restore ו-DR נבדקו בפועל; RPO/RTO נמדדו ולא רק הוגדרו.
  • Regression של CH1–CH8 עבר לפי Baseline המאושר; Rollback מוכח.
  • כרך 1 מקבל דוח חתימה Closed או Remain Open; אין אישור Go-Live אוטומטי.

שער Live-Go — נשאר חסום

סגירת CH8 אינה אישור Go-Live

חתימת כרך 1 דורשת סגירת T8.1–T8.6 עם ראיות מלאות. גם לאחר מכן, נדרש שער נפרד: Broker, הרשאות חשבון, בדיקות מסחר חי מוגבלות ואישור מפורש.

InvestIQ · CH8 · Review v1.0 — Architecture Approved & Locked · 11 באוגוסט 2026 · BAROUCH SHALIT