
# Dinaminė politikos sintezė su LLM ir realaus laiko rizikos kontekstu

**Santrauka** – Tiekėjų saugumo klausimynai yra žinomas siauras butas SaaS įmonėms. Tradicinės statinės saugyklos laiką sušaldytas politiką, priverčia komandas rankiniu būdu redaguoti atsakymus, kai atsiranda naujas rizikos signalas. Šiame straipsnyje pristatomas *Dinaminės politikos sintezės* (DPS) planas, kuris sujungia didelius kalbos modelius (LLM), nuolatinę rizikos telemetriją ir įvykių pagrindu veikiančią orkestracijos sluoksnį, kad iš karto sukurtų atnaujintus, kontekstą atspindinčius atsakymus. Skaitytojo pasibaigus sužinosite pagrindinius komponentus, duomenų srautą ir praktinius žingsnius, kaip įgyvendinti DPS ant Procurize platformos.

---

## 1. Kodėl statinės politikos bibliotekos nepavyksta šiuolaikiniams auditams

1. **Keitimo vėlavimas** – Naujai aptikta pažeidžiamumas trečiosios šalies komponentuose gali panaikinti punktą, patvirtintą prieš šešis mėnesius. Statinės bibliotekos reikalauja rankinio redagavimo ciklo, kuris gali trukti kelias dienas.  
2. **Kontekstualus nesutapimas** – Tas pats kontrolės punktas gali būti interpretuojamas skirtingai priklausomai nuo esamos grėsmių aplinkos, sutarties apimties ar geografinių reglamentų.  
3. **Mastelio spaudimas** – Greitai augančios SaaS įmonės per savaitę gauna dešimtis klausimynų; kiekvienas atsakymas turi atitikti naujausią rizikos poziciją, ko neįmanoma užtikrinti rankinių procesų.

Šios problemos skatina poreikį **adaptacinei** sistemai, kuri gali **gauti** ir **siųsti** rizikos įžvalgas realiu laiku ir automatiškai jas perskaidyti į atitinkamą politikos kalbą.

---

## 2. Dinaminės politikos sintezės pagrindiniai skliautai

| Stulpelis | Funkcija | Įprasta technologijų aplinka |
|-----------|----------|------------------------------|
| **Rizikos telemetrijos įsisavinimas** | Srautas pažeidžiamumų šaltinius, grėsmių žvalgybos įspėjimus ir vidinius saugumo metrikus į vieningą duomenų ežerą. | Kafka, AWS Kinesis, ElasticSearch |
| **Konteksto variklis** | Normalizuoja telemetriją, papildo turtų inventorių ir apskaičiuoja *rizikos įvertį* kiekvienam kontrolės domenui. | Python, Pandas, Neo4j Knowledge Graph |
| **LLM užklausų generatorius** | Sukuria domenui specifines užklausas, įtraukdama naujausią rizikos įvertį, reglamentų nuorodas ir politikos šablonus. | OpenAI GPT‑4, Anthropic Claude, LangChain |
| **Orkestracijos sluoksnis** | Koordinuoja įvykių trigerius, vykdo LLM, saugo sugeneruotą tekstą ir informuoja peržiūros specialistus. | Temporal.io, Airflow, Serverless Functions |
| **Audito takas ir versijavimas** | Išsaugo kiekvieną sugeneruotą atsakymą su kriptografiniais maišais auditoriniam tikslui. | Git, Immutable Object Store (pvz., S3 with Object Lock) |

Kartu jos sudaro uždarą ciklą, kuris paverčia žaliąsias rizikos signalus į išgrynintus, klausimyno paruoštus atsakymus.

---

## 3. Duomenų srauto iliustracija

```mermaid
flowchart TD
    A["Rizikos šaltiniai"] -->|Kafka Stream| B["Neapdorota telemetrijos ežeras"]
    B --> C["Normalizavimas ir papildymas"]
    C --> D["Rizikos įvertinimo variklis"]
    D --> E["Konteksto paketas"]
    E --> F["Užklausų kūrėjas"]
    F --> G["LLM (GPT‑4)"]
    G --> H["Juodraštinis politikos punktas"]
    H --> I["Žmogaus peržiūros centras"]
    I --> J["Patvirtintų atsakymų saugykla"]
    J --> K["Procurize klausimyno UI"]
    K --> L["Tiekėjo pateikimas"]
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style L fill:#9f9,stroke:#333,stroke-width:2px
```

*Kiekvieno mazgo tekstas yra įrašytas dvigubose kabutėse, kaip reikalaujama.*

---

## 4. Užklausų generatoriaus kūrimas

Aukštos kokybės užklausa – tai paslaptis sėkmei. Žemiau pateiktas Python fragmentas parodo, kaip sukurti užklausą, kuri sujungia rizikos kontekstą su pakartotinai naudojamu šablonu.

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

Sugeneruota užklausa yra perduodama LLM per API iškvietimą, o gautas tekstas saugomas kaip *juodraštis*, kol laukia greitos žmogaus patvirtinimo.

---

## 5. Real‑time orkestracija su Temporal.io

Temporal suteikia darbo eigas kaip kodą, leidžiančias apibrėžti patikimą, pakartojimų tvarkomą kanalą.

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

Darbo eiga garantuoja vienkartinį vykdymą, automatinį pakartojimą prireikus ir skaidrią matomumą per Temporal UI – svarbu atitikties auditoriams.

---

## 6. Žmogaus į ciklą (HITL) valdymas

Net geriausias LLM gali klaidingai sugalvoti. DPS įtraukia lengvą HITL žingsnį:

1. **Peržiūrėjas gauna Slack/Teams pranešimą** su šoninio rodymo juodraščiu ir pagrindiniu rizikos kontekstu.  
2. **Vieno spustelėjimo patvirtinimas** įrašo galutinį atsakymą į nekeičiama saugykla ir atnaujina klausimyno UI.  
3. **Atmetimas** sukelia atgalinį ryšį, anotuoja užklausą, gerinant ateities generavimus.

Audito žurnalai įrašo peržiūrėtojo ID, laiko žymą ir kriptografinį patvirtinto teksto maišą, tenkinantį [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) ir [ISO 27001](https://www.iso.org/standard/27001) įrodymų reikalavimus.

---

## 7. Versijavimas ir audito įrodymai

Kiekvienas sugeneruotas punktas yra įsipareigotas Git‑suderinamame saugykloje su šiais metaduomenimis:

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

---

## 8. Išmatuoti privalumai

| Metrika | Prieš DPS | Po DPS (12 mėn.) |
|--------|------------|-------------------|
| Vidutinis atsakymo laikas | 3.2 days | 3.5 hours |
| Žmogaus redagavimo darbo krūvis | 25 h per week | 6 h per week |
| Audito įrodymų spragos | 12 % | <1 % |
| Atitikties aprėptis (kontrolės) | 78 % | 96 % |

Šie skaičiai gauti iš pilotinio bandymo su trimis vidutinio dydžio SaaS įmonėmis, kurios integravo DPS į savo Procurize aplinką.

---

## 9. Įgyvendinimo kontrolinis sąrašas

- [ ] Sukurkite srautinimo platformą (Kafka) rizikos srautams.  
- [ ] Sukurkite Neo4j žinių grafiką, susiejantį turtus, kontrolės punktus ir grėsmių intel.  
- [ ] Sukurkite pakartotinai naudojamus punktų šablonus, saugomus Markdown.  
- [ ] Įdiekite užklausų kūrėjo mikro‑servisą (Python/Node).  
- [ ] Užtikrinkite LLM prieigą (OpenAI, Azure OpenAI ir kt.).  
- [ ] Konfigūruokite Temporal darbo eigą arba Airflow DAG.  
- [ ] Integruokite su Procurize atsakymų peržiūros UI.  
- [ ] Įjunkite nekeičiama žurnalinimą (Git + S3 Object Lock).  
- [ ] Atlikite saugumo peržiūrą paties orkestracijos kodo.

Vykdant šiuos žingsnius, jūsų organizacija per 6–8 savaites gaus pasiruošusią DPS sistemą.

---

## 10. Ateities kryptys

1. **Federacinis mokymasis** – Mokykite domenui specifinius LLM adapterius neperkeliant žaliųjų duomenų iš įmonės ugniasienės.  
2. **Skirtingos privatumo** – Pridėkite triukšmą prie rizikos įvertinių prieš kartu su užklausa, išlaikant konfidencialumą ir naudą.  
3. **Nulinio žinių įrodymai** – Leiskite tiekėjams patvirtinti, kad atsakymas atitinka rizikos modelį neatskleidžiant pagrindinių duomenų.

Šios tyrimų kryptys žada dar labiau sustiprinti Dinaminės politikos sintezės saugumą, skaidrumą ir reguliatorių draugiškumą.

---

## 11. Išvada

Dinaminė politikos sintezė paverčia nuobodų, klaidų linkusį saugumo klausimynų atsakymo procesą **realiu laiku, įrodymais pagrįsta paslauga**. Susiejant tiesioginius rizikos telemetriją, konteksto variklį ir galingus LLM vienoje orkestruotoje darbo eigoje, organizacijos gali drastiškai sumažinti atsakymo laiką, išlaikyti nuolatinę atitiktį ir suteikti auditoriams nekeičiama įrodymų tikslumą. Integruota su Procurize, DPS tampa konkurencinio pranašumo šaltiniu – rizikos duomenys tampa strateginiu turtu, pagreitinančiu sandorius ir stiprinančiu pasitikėjimą.