Skip to content

ביקורת ותאימות

כל החלטת מדיניות ב-Triggerfish נרשמת עם הקשר מלא. אין חריגים, אין "מצב דיבוג" שמשבית תיעוד, ואין דרך ל-LLM לדכא רשומות ביקורת. זה מספק רשומה שלמה וחסינת-שיבוש של כל החלטת אבטחה שהמערכת קיבלה.

מה נרשם

תיעוד ביקורת הוא כלל קבוע -- הוא תמיד פעיל ואינו ניתן לביטול. כל הפעלת וו אכיפה מייצרת רשומת ביקורת המכילה:

שדהתיאור
timestampמתי התקבלה ההחלטה (ISO 8601, UTC)
hook_typeאיזה וו אכיפה רץ (PRE_CONTEXT_INJECTION, PRE_TOOL_CALL, POST_TOOL_RESPONSE, PRE_OUTPUT, SECRET_ACCESS, SESSION_RESET, AGENT_INVOCATION, MCP_TOOL_CALL)
session_idהסשן שבו התרחשה הפעולה
decisionALLOW, BLOCK, או REDACT
reasonהסבר קריא לאדם של ההחלטה
inputהנתונים או הפעולה שהפעילו את הוו
rules_evaluatedאילו כללי מדיניות נבדקו כדי להגיע להחלטה
taint_beforeרמת זיהום הסשן לפני הפעולה
taint_afterרמת זיהום הסשן אחרי הפעולה (אם השתנתה)
metadataהקשר נוסף ספציפי לסוג הוו

דוגמאות לרשומות ביקורת

פלט מורשה

json
{
  "timestamp": "2025-01-29T10:23:47Z",
  "hook_type": "PRE_OUTPUT",
  "session_id": "sess_456",
  "decision": "ALLOW",
  "reason": "Classification check passed",
  "input": {
    "target_channel": "telegram",
    "recipient": "owner"
  },
  "rules_evaluated": [
    "no_write_down",
    "channel_classification"
  ],
  "taint_before": "INTERNAL",
  "taint_after": "INTERNAL"
}

כתיבה-למטה חסומה

json
{
  "timestamp": "2025-01-29T10:24:12Z",
  "hook_type": "PRE_OUTPUT",
  "session_id": "sess_456",
  "decision": "BLOCK",
  "reason": "Session taint (CONFIDENTIAL) exceeds effective classification (PUBLIC)",
  "input": {
    "target_channel": "whatsapp",
    "recipient": "external_user_789",
    "effective_classification": "PUBLIC"
  },
  "rules_evaluated": [
    "no_write_down",
    "channel_classification",
    "recipient_classification"
  ],
  "taint_before": "CONFIDENTIAL",
  "taint_after": "CONFIDENTIAL"
}

קריאת כלי עם הסלמת זיהום

json
{
  "timestamp": "2025-01-29T10:23:45Z",
  "hook_type": "POST_TOOL_RESPONSE",
  "session_id": "sess_456",
  "decision": "ALLOW",
  "reason": "Tool response classified and taint updated",
  "input": {
    "tool_name": "salesforce.query_opportunities",
    "response_classification": "CONFIDENTIAL"
  },
  "rules_evaluated": [
    "tool_response_classification",
    "taint_escalation"
  ],
  "taint_before": "PUBLIC",
  "taint_after": "CONFIDENTIAL",
  "metadata": {
    "lineage_id": "lin_789xyz",
    "records_returned": 3
  }
}

האצלת סוכנים חסומה

json
{
  "timestamp": "2025-01-29T10:25:00Z",
  "hook_type": "AGENT_INVOCATION",
  "session_id": "sess_456",
  "decision": "BLOCK",
  "reason": "Agent ceiling (INTERNAL) below session taint (CONFIDENTIAL)",
  "input": {
    "caller_agent_id": "agent_abc",
    "callee_agent_id": "agent_def",
    "callee_ceiling": "INTERNAL",
    "task": "Generate public summary"
  },
  "rules_evaluated": [
    "delegation_ceiling_check",
    "delegation_allowlist",
    "delegation_depth"
  ],
  "taint_before": "CONFIDENTIAL",
  "taint_after": "CONFIDENTIAL"
}

יכולות מעקב ביקורת

זרימת מעקב ביקורת: מעקב קדימה, מעקב אחורה והצדקת סיווג מזינים ייצוא תאימות

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

מעקב קדימה

שאלה: "מה קרה לנתונים מרשומת Salesforce opp_00123ABC?"

מעקב קדימה עוקב אחר אלמנט נתונים מנקודת המקור דרך כל טרנספורמציה, סשן ופלט. הוא עונה: לאן הלכו הנתונים, מי ראה אותם, והאם נשלחו מחוץ לארגון?

מקור: salesforce.query_opportunities
  --> lineage_id: lin_789xyz
  --> סיווג: CONFIDENTIAL
  --> סשן: sess_456

טרנספורמציות:
  --> שדות שחולצו: name, amount, stage
  --> ה-LLM סיכם 3 רשומות לסקירת צינור

פלטים:
  --> נשלח לבעלים דרך Telegram (מורשה)
  --> נחסם מאיש קשר חיצוני ב-WhatsApp (חסום)

מעקב אחורה

שאלה: "אילו מקורות תרמו להודעה שנשלחה ב-10:24 UTC?"

מעקב אחורה מתחיל מפלט וחוזר לאורך שרשרת השושלת כדי לזהות כל מקור נתונים שהשפיע על הפלט. זה חיוני להבנה האם נתונים מסווגים נכללו בתגובה.

פלט: הודעה שנשלחה ל-Telegram ב-10:24:00Z
  --> סשן: sess_456
  --> מקורות שושלת:
      --> lin_789xyz: הזדמנות Salesforce (CONFIDENTIAL)
      --> lin_790xyz: הזדמנות Salesforce (CONFIDENTIAL)
      --> lin_791xyz: הזדמנות Salesforce (CONFIDENTIAL)
      --> lin_792xyz: API מזג אוויר (PUBLIC)

הצדקת סיווג

שאלה: "מדוע נתונים אלו מסומנים כ-CONFIDENTIAL?"

הצדקת סיווג עוקבת חזרה לכלל או למדיניות שהקצו את רמת הסיווג:

נתונים: סיכום צינור (lin_789xyz)
סיווג: CONFIDENTIAL
סיבה: source_system_default
  --> סיווג ברירת מחדל של אינטגרציית Salesforce: CONFIDENTIAL
  --> הוגדר על ידי: admin_001 ב-2025-01-10T08:00:00Z
  --> כלל מדיניות: "כל נתוני Salesforce מסווגים כ-CONFIDENTIAL"

ייצוא תאימות

לצורכי סקירה משפטית, רגולטורית או פנימית, Triggerfish יכול לייצא את שרשרת המשמורת המלאה לכל אלמנט נתונים או טווח זמן:

בקשת ייצוא:
  --> טווח זמן: 2025-01-29T00:00:00Z עד 2025-01-29T23:59:59Z
  --> היקף: כל הסשנים של user_456
  --> פורמט: JSON

הייצוא כולל:
  --> כל רשומות הביקורת בטווח הזמן
  --> כל רשומות השושלת שרשומות הביקורת מפנות אליהן
  --> כל מעברי מצב הסשנים
  --> כל החלטות המדיניות (ALLOW, BLOCK, REDACT)
  --> כל שינויי הזיהום
  --> כל רשומות שרשרת ההאצלה

ייצואי תאימות הם קובצי JSON מובנים שניתן לקלוט במערכות SIEM,

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

שושלת נתונים

תיעוד ביקורת עובד בשילוב עם מערכת שושלת הנתונים של Triggerfish. כל אלמנט נתונים שמעובד על ידי Triggerfish נושא מטא-נתוני מקור:

json
{
  "lineage_id": "lin_789xyz",
  "content_hash": "sha256:a1b2c3d4...",
  "origin": {
    "source_type": "integration",
    "source_name": "salesforce",
    "record_id": "opp_00123ABC",
    "record_type": "Opportunity",
    "accessed_at": "2025-01-29T10:23:45Z",
    "accessed_by": "user_456",
    "access_method": "plugin_query"
  },
  "classification": {
    "level": "CONFIDENTIAL",
    "reason": "source_system_default",
    "assigned_at": "2025-01-29T10:23:45Z",
    "can_be_downgraded": false
  },
  "transformations": [
    {
      "type": "extraction",
      "description": "Selected fields: name, amount, stage",
      "timestamp": "2025-01-29T10:23:46Z",
      "agent_id": "agent_123"
    },
    {
      "type": "summarization",
      "description": "LLM summarized 3 records into pipeline overview",
      "timestamp": "2025-01-29T10:23:47Z",
      "input_lineage_ids": ["lin_789xyz", "lin_790xyz", "lin_791xyz"],
      "agent_id": "agent_123"
    }
  ],
  "current_location": {
    "session_id": "sess_456",
    "context_position": "assistant_response_3"
  }
}

רשומות שושלת נוצרות ב-POST_TOOL_RESPONSE (כאשר נתונים נכנסים למערכת) ומתעדכנות ככל שנתונים מותמרים. נתונים מצטברים יורשים max(input classifications) -- אם קלט כלשהו הוא CONFIDENTIAL, הפלט הוא לפחות CONFIDENTIAL.

אירועפעולת שושלת
נתונים נקראים מאינטגרציהיצירת רשומת שושלת עם מקור
נתונים מותמרים על ידי LLMהוספת טרנספורמציה, קישור שושלות קלט
נתונים מצטברים ממקורות מרוביםמיזוג שושלת, סיווג = max(קלטים)
נתונים נשלחים לערוץרישום יעד, אימות סיווג
איפוס סשןארכוב רשומות שושלת, ניקוי מהקשר

אחסון ושימור

יומני ביקורת נשמרים דרך הפשטת StorageProvider תחת מרחב השמות audit:. רשומות שושלת מאוחסנות תחת מרחב השמות lineage:.

סוג נתוניםמרחב שמותשימור ברירת מחדל
יומני ביקורתaudit:שנה אחת
רשומות שושלתlineage:90 יום
מצב סשןsessions:30 יום
היסטוריית זיהוםtaint:תואם שימור סשן

אבטחה תקופות שימור ניתנות להגדרה, אך יומני ביקורת מוגדרים

כברירת מחדל לשנה אחת לתמיכה בדרישות תאימות (SOC 2, GDPR, HIPAA). הפחתת תקופת השימור מתחת לדרישה הרגולטורית של ארגונכם היא באחריות המנהל. :::

שכבות אחסון

רמהשכבת אחסוןפרטים
אישיתSQLiteבסיס נתונים במצב WAL ב-~/.triggerfish/data/triggerfish.db. רשומות ביקורת מאוחסנות כ-JSON מובנה באותו בסיס נתונים עם כל מצב Triggerfish האחר.
ארגוניתניתן לחיבורשכבות אחסון ארגוניות (Postgres, S3, וכו') ניתנות לשימוש דרך ממשק StorageProvider. זה מאפשר אינטגרציה עם תשתית צבירת יומנים קיימת.

אי-שינוי ותקינות

רשומות ביקורת הן הוספה בלבד. ברגע שנכתבו, לא ניתן לשנות או למחוק אותן על ידי שום רכיב במערכת -- כולל ה-LLM, הסוכן, או תוספים. מחיקה מתרחשת רק דרך פקיעת מדיניות שימור.

כל רשומת ביקורת כוללת hash תוכן שניתן להשתמש בו לאימות תקינות. אם רשומות מיוצאות לסקירת תאימות, ניתן לאמת את ה-hash מול הרשומות השמורות כדי לזהות שיבוש.

תכונות תאימות ארגוניות

פריסות ארגוניות יכולות להרחיב את תיעוד הביקורת עם:

תכונהתיאור
הקפאה משפטיתהשהיית מחיקה מבוססת-שימור למשתמשים, סשנים, או טווחי זמן מסוימים
אינטגרציית SIEMהזרמת אירועי ביקורת ל-Splunk, Datadog, או מערכות SIEM אחרות בזמן אמת
לוחות מחוונים תאימותסקירה חזותית של החלטות מדיניות, פעולות חסומות, ודפוסי זיהום
ייצואים מתוזמניםייצואים תקופתיים אוטומטיים לסקירה רגולטורית
כללי התראההפעלת התראות כאשר מתרחשים דפוסי ביקורת מסוימים (למשל, כתיבות-למטה חסומות חוזרות)

עמודים קשורים