
# Dynamická syntéza politik pomocí LLM a kontextu rizik v reálném čase

**Abstrakt** – Dotazníky bezpečnosti dodavatelů jsou notorické úzké hrdlo pro SaaS společnosti. Tradiční statické repozitáře udržují politiky uzamčeny v čase, což nutí týmy ručně upravovat odpovědi, kdykoli se objeví nový signál rizika. Tento článek představuje *Dynamickou syntézu politik* (DPS), plán, který spojuje velké jazykové modely (LLM), kontinuální telemetrii rizik a událostmi řízenou vrstvu orchestraci, aby na vyžádání poskytoval aktuální, kontextově uvědomělé odpovědi. Na konci čtení porozumíte hlavním komponentám, tokům dat a praktickým krokům pro implementaci DPS na platformě Procurize.

---

## 1. Proč statické knihovny politik selhávají u moderních auditů

1. **Zpoždění změny** – Nově objevená zranitelnost ve třetí straně může zneplatnit ustanovení, které bylo schváleno před šesti měsíci. Statické knihovny vyžadují manuální editační cyklus, který může trvat dny.  
2. **Neshoda kontextu** – Stejná kontrola může být interpretována různě v závislosti na aktuálním prostředí hrozeb, rozsahu smlouvy nebo geografických předpisech.  
3. **Tlak na škálovatelnost** – Rychle rostoucí SaaS firmy dostávají týdně desítky dotazníků; každá odpověď musí být v souladu s nejnovější postojem k rizikům, což je s manuálními procesy nemožné zajistit.  

Tyto bolesti body vytvářejí potřebu *adaptivního* systému, který může **stahovat** a **posílat** informace o rizicích v reálném čase a automaticky je převádět do souladu s jazykem politik.

## 2. Základní pilíře Dynamické syntézy politik

| Pilíř | Funkce | Typický technologický stack |
|--------|----------|--------------------|
| **Ingestování rizikové telemetrie** | Přenáší proudy zranitelností, upozornění na hrozby a interní bezpečnostní metriky do sjednoceného datového jezera. | Kafka, AWS Kinesis, ElasticSearch |
| **Engine kontextu** | Normalizuje telemetrii, obohacuje ji o inventář aktiv a vypočítává *skóre rizika* pro každou doménu kontrol. | Python, Pandas, Neo4j Knowledge Graph |
| **Generátor výzev pro LLM** | Vytváří doménově specifické výzvy, které zahrnují nejnovější skóre rizika, regulační odkazy a šablony politik. | OpenAI GPT‑4, Anthropic Claude, LangChain |
| **Vrstva orchestrací** | Koordinuje spouštěče událostí, spouští LLM, ukládá generovaný text a upozorňuje recenzenty. | Temporal.io, Airflow, Serverless Functions |
| **Auditní stopa a verzování** | Uchovává každou generovanou odpověď s kryptografickými hashi pro auditem. | Git, Immutable Object Store (např. S3 s Object Lock) |

Společně tvoří uzavřenou pipeline, která transformuje surové signály rizik do vyladěných, připravených odpovědí pro dotazníky.

## 3. Ilustrace toku dat

```mermaid
flowchart TD
    A["Risk Feed Sources"] -->|Kafka Stream| B["Raw Telemetry Lake"]
    B --> C["Normalization & Enrichment"]
    C --> D["Risk Scoring Engine"]
    D --> E["Context Package"]
    E --> F["Prompt Builder"]
    F --> G["LLM (GPT‑4)"]
    G --> H["Draft Policy Clause"]
    H --> I["Human Review Hub"]
    I --> J["Approved Answer Repository"]
    J --> K["Procurize Questionnaire UI"]
    K --> L["Vendor Submission"]
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style L fill:#9f9,stroke:#333,stroke-width:2px
```

*Každý text uzlu je uzavřen v dvojitých uvozovkách, jak je požadováno.*

## 4. Vytvoření generátoru výzev

Vysoce kvalitní výzva je tajnou ingrediencí. Níže je ukázka v Pythonu, která demonstruje, jak sestavit výzvu, která spojuje kontext rizika s opakovaně použitelnou šablonou.

```python
import json
from datetime import datetime

def build_prompt(risk_context, template_id):
    # Load a stored clause template
    with open(f"templates/{template_id}.md") as f:
        template = f.read()

    # Insert risk variables
    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()

# Example usage
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"))
```

Vygenerovaná výzva je následně předána LLM prostřednictvím API volání a vrácený text je uložen jako *návrh*, čekající na rychlé schválení člověkem.

## 5. Orchestrace v reálném čase pomocí Temporal.io

Temporal poskytuje workflow jako kód, což nám umožňuje definovat spolehlivou pipeline, která je vědoma opakování.

```goat
workflow DynamicPolicyWorkflow(riskEvent RiskEvent, questionnaireID string) {
    // Step 1: Build context package
    contextPkg := Activity(BuildContextPackage, riskEvent)

    // Step 2: Generate LLM prompt
    prompt := Activity(BuildPrompt, contextPkg, questionnaireID)

    // Step 3: Call LLM
    draft := Activity(CallLLM, prompt)

    // Step 4: Store draft and notify reviewer
    Activity(StoreDraftAndNotify, draft, questionnaireID)

    // Optional: Auto‑approval if risk score < 0.2
    if contextPkg.Score < 0.2 {
        Activity(AutoApprove, draft, questionnaireID)
    }
}
```

## 6. Governance člověk‑v‑smyčce (HITL)

I když nejlepší LLM může halucinovat. DPS zahrnuje lehký krok HITL:

1. **Recenzent obdrží oznámení ve Slacku/Teams** s vedlejšími zobrazeními návrhu a podkladového kontextu rizika.  
2. **Schválení jedním kliknutím** zapíše finální odpověď do neměnného repozitáře a aktualizuje UI dotazníku.  
3. **Odmítnutí** spustí smyčku zpětné vazby, která anotuje výzvu a zlepšuje budoucí generace.  

Auditní logy zaznamenávají ID recenzenta, časové razítko a kryptografický hash schváleného textu, čímž splňují většinu požadavků na důkazy [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) a [ISO 27001](https://www.iso.org/standard/27001).

## 7. Verzování a auditovatelné důkazy

Každá vygenerovaná klauzule je commitována do úložiště kompatibilního s Gitem s následujícími metadaty:

```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"
}
```

Neměnné úložiště (S3 Object Lock) zajišťuje, že důkazy nemohou být po vytvoření změněny, čímž poskytuje pevný řetězec odpovědnosti pro audity.

## 8. Kvantifikované přínosy

| Metrika | Před DPS | Po DPS (12 měs) |
|--------|------------|-------------------|
| Průměrná doba odpovědi | 3.2 days | 3.5 hours |
| Lidské úsilí úprav | 25 h per week | 6 h per week |
| Mezery v auditních důkazech | 12 % | <1 % |
| Pokrytí souladu (kontroly) | 78 % | 96 % |

Tyto čísla pocházejí z pilotního provozu u tří středně velkých SaaS firem, které integrovaly DPS do svého prostředí Procurize.

## 9. Kontrolní seznam implementace

- **[ ]** Nastavit streamingovou platformu (Kafka) pro rizikové kanály.  
- **[ ]** Vytvořit znalostní graf Neo4j spojující aktiva, kontroly a informace o hrozbách.  
- **[ ]** Vytvořit opakovaně použitelné šablony klauzulí uložené v Markdownu.  
- **[ ]** Nasadit mikroservisu pro tvorbu výzev (Python/Node).  
- **[ ]** Zajistit přístup k LLM (OpenAI, Azure OpenAI, atd.).  
- **[ ]** Nakonfigurovat workflow Temporal nebo DAG v Airflow.  
- **[ ]** Integrovat s UI recenze odpovědí v Procurize.  
- **[ ]** Povolit neměnné logování (Git + S3 Object Lock).  
- **[ ]** Provést bezpečnostní revizi samotného kódu orchestraci.  

Dodržením těchto kroků získá vaše organizace produkčně připravenou DPS pipeline během 6‑8 týdnů.

## 10. Budoucí směřování

1. **Federované učení** – Trénovat doménově specifické adaptory LLM bez přesunu surové telemetrie mimo firemní firewall.  
2. **Diferenční soukromí** – Přidat šum k rizikovým skóre před tím, než dosáhnou generátoru výzev, čímž se zachová důvěrnost a přitom se udrží užitečnost.  
3. **Zero‑knowledge důkazy** – Umožnit dodavatelům ověřit, že odpověď odpovídá rizikovému modelu, aniž by odhalili podkladová data.  

Tyto výzkumné směry slibují učinit Dynamickou syntézu politik ještě bezpečnější, transparentnější a regulatorně přívětivější.

## 11. Závěr

Dynamická syntéza politik transformuje únavný, náchylný k chybám úkol odpovídání na bezpečnostní dotazníky do **služby v reálném čase podpořené důkazy**. Spojením živé telemetrie rizik, enginu kontextu a výkonných LLM v rámci orchestrované workflow mohou organizace dramaticky zkrátit dobu zpracování, udržovat kontinuální soulad a poskytovat auditorům nemělný důkaz o přesnosti. Po integraci s Procurize se DPS stane konkurenční výhodou – převádí data o rizicích na strategické aktivum, které urychluje obchody a buduje důvěru.