
# סינתזה דינאמית של מדיניות עם מודלים גדולים ושילוב בזמן אמת של הקשר סיכון

**תקציר** – שאלוני אבטחת ספקים הם נחת בקבוק ידוע לחברות SaaS. מאגרים סטטיים מסורתיים משאירים מדיניות נעולה בזמן, מה שמצריך צוותים לערוך תשובות ידנית בכל פעם שמופיע אותות סיכון חדשים. מאמר זה מציג *סינתזה דינאמית של מדיניות* (DPS), תבנית המשלבת מודלים לשוניים גדולים (LLMs), טלמטיית סיכון מתמשכת, ושכבת תזמור מונעת אירועים כדי לייצר תשובות עדכניות, מודעות להקשר, לפי דרישה. בסיום הקריאה תבינו את המרכיבים המרכזיים, זרימת הנתונים, והצעדים המעשיים ליישום DPS במערכת Procurize.

---

## 1. למה ספריות מדיניות סטטיות נכשלות באודיטים מודרניים

1. **זמן שינוי** – פגיעות שנגלה לאחרונה ברכיב צד שלישי עשויה לבטל סעיף שאושר לפני חצי שנה. ספריות סטטיות דורשות מחזור עריכה ידני שיכול לקחת ימים.  
2. **חוסר התאמה להקשר** – אותו שליטה יכולה להתפרש באופן שונה בהתאם לנוף האיומים העדכני, לתחום החוזה, או לרגולציות גיאוגרפיות.  
3. **לחץ על масштаб** – חברות SaaS המתפתחות במהירות מקבלות עשרות שאלונים בשבוע; כל תשובה חייבת להיות תואמת את מצבן הסיכון העדכני, דבר שלא ניתן להבטיח בתהליכים ידניים.

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

---

## 2. עמודי היסוד של סינתזה דינאמית של מדיניות

| עמוד | פונקציה | ערימות טכנולוגיות טיפוסיות |
|------|----------|----------------------------|
| **קבלת טלמטיית סיכון** | משדר פיד של פגיעויות, התראות מודיעין איומים ונתוני אבטחה פנימיים לאגם נתונים מאוחד. | Kafka, AWS Kinesis, ElasticSearch |
| **מנוע הקשר** | מנרמל טלמטייה, מעשיר במלאי נכסים, ומחשב *ציון סיכון* לכל תחום שליטה. | Python, Pandas, Neo4j Knowledge Graph |
| **גנרטור פרומפט LLM** | יוצר פרומפטים ספציפיים לתחום הכוללים את ציון הסיכון העדכני, הפניות רגולטוריות, ותבניות מדיניות. | OpenAI GPT‑4, Anthropic Claude, LangChain |
| **שכבת תזמור** | מתזמן טריגרים של אירועים, מריץ את המודל, מאחסן את הטקסט שנוצר, ומעדכן מבקרים. | Temporal.io, Airflow, Serverless Functions |
| **שביל ביקורת & גרסאות** | משמר כל תשובה שנוצרה עם חותמות קריפטוגרפיות לביקורת. | Git, Immutable Object Store (למשל S3 עם Object Lock) |

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

---

## 3. זרימת הנתונים מופיעה באיור

```mermaid
flowchart TD
    A["מקורות פידס של סיכון"] -->|זרם Kafka| B["אגם טלמטייה גולמי"]
    B --> C["נרמול והעשרה"]
    C --> D["מנוע חישוב ציון סיכון"]
    D --> E["חבילת הקשר"]
    E --> F["בורא פרומפט"]
    F --> G["LLM (GPT‑4)"]
    G --> H["טיוטת סעיף מדיניות"]
    H --> I["מרכז ביקורת אנושית"]
    I --> J["מאגר תשובות מאושר"]
    J --> K["ממשק שאלון Procurize"]
    K --> L["שליחה לספק"]
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style L fill:#9f9,stroke:#333,stroke-width:2px
```

*כל טקסט של צומת נמצא במירכאות כפולות כפי שנדרש.*

---

## 4. בניית גנרטור הפרומפט

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

```python
import json
from datetime import datetime

def build_prompt(risk_context, template_id):
    # טען תבנית סעיף מאוחסנת
    with open(f"templates/{template_id}.md") as f:
        template = f.read()

    # הוסף משתני סיכון
    prompt = f"""
You are a compliance specialist drafting a response for a security questionnaire.
Current risk score for the domain "{risk_context['domain']}" is {risk_context['score']:.2f}.
Relevant recent alerts: {", ".join(risk_context['alerts'][:3])}
Regulatory references: {", ".join(risk_context['regulations'])}

Using the following template, produce a concise, accurate answer that reflects the latest risk posture.

{template}
"""
    return prompt.strip()

# דוגמת שימוש
risk_context = {
    "domain": "Data Encryption at Rest",
    "score": 0.78,
    "alerts": ["CVE‑2024‑1234 affecting AES‑256 modules", "New NIST guidance on key rotation"],
    "regulations": ["ISO 27001 A.10.1", "PCI DSS 3.2"]
}
print(build_prompt(risk_context, "encryption_response"))
```

הפרומפט שנוצר נשלח לאחר מכן ל‑LLM באמצעות קריאת API, והטקסט המוחזר נשמר כ‑*טיוטה* המחכה לאישור מהיר של אדם.

---

## 5. תזמור בזמן אמת עם Temporal.io

Temporal מספקת workflow‑as‑code, המאפשרת לנו להגדיר צינור אמין, עם יכולת ניסיון מחדש.

```goat
workflow DynamicPolicyWorkflow(riskEvent RiskEvent, questionnaireID string) {
    // שלב 1: בניית חבילת הקשר
    contextPkg := Activity(BuildContextPackage, riskEvent)

    // שלב 2: יצירת פרומפט LLM
    prompt := Activity(BuildPrompt, contextPkg, questionnaireID)

    // שלב 3: קריאת LLM
    draft := Activity(CallLLM, prompt)

    // שלב 4: שמירת טיוטה והתראה למבקר
    Activity(StoreDraftAndNotify, draft, questionnaireID)

    // אופציונלי: אישור אוטומטי אם ציון הסיכון < 0.2
    if contextPkg.Score < 0.2 {
        Activity(AutoApprove, draft, questionnaireID)
    }
}
```

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

---

## 6. ממשק אדם‑ב‑המעגל (HITL) לממשל

גם המודל המתקדם ביותר עלול לחולל השתלשלות. DPS משלב שלב HITL קל:

1. **הבודק מקבל התראה ב‑Slack/Teams** עם תצוגה משני‑צד של הטיוטה והקשר הסיכון.  
2. **אישור בלחיצה אחת** כותב את התשובה הסופית למאגר הבלתי‑נשנה ומעדכן את ממשק השאלון.  
3. **דחייה** מפעילה לולאת משוב שמסמנת את הפרומפט, משפרת את הדור העתידי.

יומני ביקורת רושמים את מזהה הבודק, חותמת זמן, והחתימה הקריפטוגרפית של הטקסט המאושר, ועומדים בדרישות רובדיות של [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) ו‑[ISO 27001](https://www.iso.org/standard/27001).

---

## 7. גרסאות והוכחות ברות ביקורת

כל סעיף שנוצר מועבר לחנות תואמת Git עם המטה‑נתונים הבא:

```json
{
  "questionnaire_id": "Q-2025-09-14",
  "control_id": "C-ENCR-01",
  "risk_score": 0.78,
  "generated_at": "2025-10-22T14:03:12Z",
  "hash": "sha256:9f8d2c1e...",
  "reviewer": "alice.smith@example.com",
  "status": "approved"
}
```

אחסון בלתי‑נשנה (S3 Object Lock) מבטיח שהראיות אינן ניתנות לשינוי לאחר האחסון, ומספק שרשרת אחראיות שלמה לאודיטים.

---

## 8. יתרונות מדודים

| מדד | לפני DPS | אחרי DPS (12 חודשים) |
|------|----------|----------------------|
| זמן תגובה ממוצע לתשובה | 3.2 יום | 3.5 שעה |
| מאמץ עריכה ידנית | 25 שעה בשבוע | 6 שעה בשבוע |
| פערים בתיעוד ביקורת | 12 % | פחות מ‑1 % |
| כיסוי ציות (בקרות) | 78 % | 96 % |

המספרים מבוססים על פיילוט עם שלוש חברות SaaS בגודל בינוני שהטמיעו DPS על פלטפורמת Procurize.

---

## 9. רשימת בדיקה ליישום

- **[ ]** הקמת פלטפורמת זרימה (Kafka) למקורות פיד סיכון.  
- **[ ]** בניית גרף ידע Neo4j המקשר נכסים, בקרות, מודיעין איומים.  
- **[ ]** יצירת תבניות סעיפים חוזרות לאחסון בקובצי Markdown.  
- **[ ]** פריסת מיקרו‑שירות בונה פרומפט (Python/Node).  
- **[ ]** provisioning גישה ל‑LLM (OpenAI, Azure OpenAI וכו').  
- **[ ]** קונפיגורציית workflow ב‑Temporal או DAG ב‑Airflow.  
- **[ ]** אינטגרציה עם ממשק ביקורת התשובות של Procurize.  
- **[ ]** הפעלת לוגינג בלתי‑נשנה (Git + S3 Object Lock).  
- **[ ]** ביצוע ביקורת אבטחה על קוד התזמור עצמו.

ביצוע שלבים אלו ייתן לארגונכם צינור DPS מוכן לייצור בתוך 6‑8 שבועות.

---

## 10. כיוונים עתידיים

1. **למידה פדרטיבית** – אימון מתאם מודלים תחום‑ספציפי ללא העברת טלמטיית גולמית מחוץ לחומת האש הארגונית.  
2. **פרטיות דיפרנציאלית** – הוספת רעש לציוני סיכון לפני הגעתם לבונה הפרומפט, שמירת סודיות תוך שמירה על יעילות.  
3. **הוכחות אפס‑ידע** – אפשרות לספקים לאשר שתשובה תואמת למודל סיכון ללא חשיפת הנתונים בבסיס.

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

---

## 11. סיכום

סינתזה דינאמית של מדיניות ממירה את המשימה המייגעת והדורשית של מענה לשאלוני אבטחה לשירות **זמן‑אמת, מגובה ראיות**. באמצעות חיבור טלמטיית סיכון חיה, מנוע הקשר, ומודלים גדולים בתוך זרימת תזמור, ארגונים יכולים לקצור זמן תגובה משמעותי, לשמור על ציות רציף, ולספק למבקרים הוכחות בלתי‑נשנות של דיוק. כשמתממשק עם Procurize, DPS הופך ליתרון תחרותי — ממיר נתוני סיכון לנכס אסטרטגי שמזרז עסקים ובונה אמון.