
# Käytännöt koodina kohtaa tekoälyn: Automaattinen vaatimustenmukaisuuskoodin generointi kyselyvastauksiin

Nopeasti kehittyvässä SaaS‑maailmassa **turvallisuuskyselyt** ja **vaatimustenmukaisuusauditoinnit** ovat tulleet portinvartijoiksi jokaiselle uudelle sopimukselle. Tiimit käyttävät lukemattomia tunteja etsiessään käytäntöjä, kääntääkseen juridisen terminologian selkeäksi suomeksi ja kopioidessaan vastauksia manuaalisesti toimittajien portaaleihin. Tuloksena on pullonkaula, joka hidastaa myyntisyklejä ja aiheuttaa inhimillisiä virheitä.

Tässä astuu mukaan **Policy‑as‑Code (PaC)**—käytäntö, jossa turvallisuus‑ ja vaatimustenmukaisuusvalvonnat määritellään versiohallittuihin, koneellisesti luettaviin formaatteihin (YAML, JSON, HCL, jne.). Samalla **suurten kielimallien (LLM)** kypsyessä niin, että ne ymmärtävät monimutkaista sääntelykieltä, yhdistävät todisteita ja generoivat luonnollisen kielen vastauksia, jotka tyydyttävät auditoinnit. Kun nämä kaksi paradigmaa kohtaavat, syntyy uusi kyvykkyys: **Automaattinen Compliance‑as‑Code (CaaC)**, joka voi *luoda* kyselyvastauksia tarpeen mukaan, mukana jäljitettävissä olevat todisteet.

Tässä artikkelissa:

1. Selitämme Policy‑as‑Code -käsitteen ydinkonseptit ja miksi se on tärkeää turvallisuuskyselyille.  
2. Näytämme, miten LLM voidaan liittää PaC‑tietovarastoon tuottamaan **dynaamisia, auditointivalmiita vastauksia**.  
3. Käymme läpi käytännön toteutuksen **Procurize**‑alustaa esimerkkinä.  
4. Korostamme parhaita käytäntöjä, turvallisuusnäkökohtia ja tapoja pitää järjestelmä luotettavana.  

> **TL;DR** – Koodistoittamalla käytännöt, tarjoamalla ne API:n kautta ja antamalla hienosäädetyn LLM:n kääntää nämä käytännöt kyselyvastauksiksi, organisaatiot voivat lyhentää vastausaikaa päivistä sekunneiksi säilyttäen vaatimustenmukaisuuden eheyden.

---

## 1. Policy‑as‑Coden nousu

### 1.1 Mikä on Policy‑as‑Code?

| Perinteinen politiikan käsittely | Policy‑as‑Code -lähestymistapa |
|---------------------------------|---------------------------------|
| PDF:t, Word-dokumentit, taulukkolaskenta | Deklaratiivisia tiedostoja (YAML/JSON) tallennettuna Gitiin |
| Manuaalinen versionhallinta | Git‑kommitit, pull‑request‑katselmukset |
| Satunnainen jakelu | Automaattiset CI/CD‑putket |
| Hakuvaikea teksti | Rakenteelliset kentät, haettavat indeksit |

### 1.2 Miksi PaC vaikuttaa suoraan kyselyihin

Security questionnaires typically ask for statements such as:

> “Kuvaile, miten suojaat levossa olevaa dataa ja anna todisteita salausavainten kierrätyksestä.”

```yaml
controls:
  data-at-rest:
    encryption: true
    algorithm: "AES‑256-GCM"
    key_rotation:
      interval_days: 90
      procedure: "Automated rotation via KMS"
evidence:
  - type: "config"
    source: "aws:kms:key-rotation"
    last_verified: "2025-09-30"
```

Työkalu voi **poimia** relevantit kentät, muotoilla ne luonnolliseen kieleen ja liittää viitattuun todisteeseen – ilman että ihminen kirjoittaa edes sanaa.

---

## 2. Suuret kielimallit käännösmekanismina

### 2.1 Koodista luonnolliseen kieleen

LLM:t loistavat **tekstin generoinnissa**, mutta ne tarvitsevat luotettavan kontekstin välttääkseen harhakuvitelmia. Antamalla mallille **rakenteen politiikkadata** sekä **kysymysmallin**, luomme deterministisen kartoituksen.

**Prompt‑malli** (esimerkki suomeksi)

```
Olet vaatimustenmukaisuuden avustaja. Muunna seuraava politiikkapala tiiviiksi vastaukseksi kysymykseen: "<question>". Anna kaikki viitatut todisteet.
Politiikka:
<YAML block>
```

### 2.2 Hienosäätö toimialakohtaisen tarkkuuden saavuttamiseksi

Yleinen LLM (esim. GPT‑4) sisältää valtavan tiedon, mutta voi silti tuottaa epämääräistä ilmaisua. **Hienosäätämällä** kuratoituun aineistoon historiallisista kyselyvastauksista ja sisäisistä tyylioppaista, saavutamme:

- Johdonmukainen sävy (virallinen, riskitietoisuus).  
- Vaatimustenmukaisuuteen liittyvä terminologia (esim. “SOC 2” – katso [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2), “ISO 27001” – katso [ISO 27001](https://www.iso.org/standard/27001)).  
- Vähennetty token‑kulutus, alentaen inferenssikustannukset.

### 2.3 Suojausmekanismit ja Retrieval Augmented Generation (RAG)

1. **Retriever** hakee tarkan politiikkapalan PaC‑repoista.  
2. **Generator** (LLM) vastaanottaa sekä palan että kysymyksen.  
3. **Jälkikäsittelijä** tarkistaa, että kaikki viitatut todiste‑ID:t löytyvät todistevarastosta.

Jos poikkeama havaitaan, järjestelmä merkitsee automaattisesti vastauksen tarkistettavaksi ihmiselle.

---

## 3. Kokonaisvaltainen työnkulku Procurizessa

```mermaid
flowchart TD
    A["Policy‑as‑Code -tietovarasto (Git)"] --> B["Muutoshavaitseva palvelu"]
    B --> C["Politiikka‑indeksoija (Elasticsearch)"]
    C --> D["Retriever (RAG)"]
    D --> E["LLM‑moottori (hienosäädetty)"]
    E --> F["Vastausmuotoilija"]
    F --> G["Kyselykäyttöliittymä (Procurize)"]
    G --> H["Ihmisen tarkastus & julkaisu"]
    H --> I["Audit‑loki & jäljitettävyys"]
    I --> A
```

### 3.1 Vaiheittainen läpikäynti

| Vaihe | Toiminto | Teknologia |
|-------|----------|------------|
| 1 | Turvallisuustiimi päivittää politiikkatiedoston Gitissä. | Git, CI‑putki |
| 2 | Muutoshavaitseminen käynnistää politiikan uudelleenindeksoinnin. | Webhook, Elasticsearch |
| 3 | Kun toimittajan kysely saapuu, käyttöliittymä näyttää relevantin kysymyksen. | Procurize Dashboard |
| 4 | Retriever hakee indeksistä vastaavat politiikkapalat. | RAG Retrieval |
| 5 | LLM vastaanottaa palan + kysymyskehotteen ja luo luonnosvastauksen. | OpenAI / Azure OpenAI |
| 6 | Vastausmuotoilija lisää markdownin, liittää todistelinkit ja muotoilee kohdeportaalia varten. | Node.js microservice |
| 7 | Turvallisuuden omistaja tarkistaa vastauksen (valinnainen, voidaan automaattisesti hyväksyä luottamuspisteen perusteella). | UI Review Modal |
| 8 | Lopullinen vastaus lähetetään toimittajan portaaliin; muuttumaton audit‑loki tallentaa alkuperän. | Procurement API, Blockchain‑ish log |

Koko sykli toteutuu **alle 10 sekunnissa** tyypilliselle kysymykselle, mikä on karu kontrasti 2‑4 tuntiin, jonka ihmisanalyytikko tarvitsee politiikan etsimiseen, luonnosteluun ja tarkistamiseen.

---

## 4. Oma CaaC‑putken rakentaminen

### 4.1 Määrittele politiikkakaavio

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Compliance Control",
  "type": "object",
  "properties": {
    "id": { "type": "string" },
    "category": { "type": "string" },
    "description": { "type": "string" },
    "evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": { "type": "string" },
          "source": { "type": "string" },
          "last_verified": { "type": "string", "format": "date" }
        },
        "required": ["type", "source"]
      }
    }
  },
  "required": ["id", "category", "description"]
}
```

Vahvista jokainen politiikkatiedosto CI‑vaiheessa (esim. `ajv-cli`).

### 4.2 Hae‑järjestelmän määrittäminen

- Indeksoi YAML/JSON‑tiedostot **Elasticsearchiin** tai **OpenSearchiin**.  
- Käytä **BM25**‑tai **tiheitä vektorisyötteitä** (Sentence‑Transformerin kautta) semanttiseen vastaavuuteen.

### 4.3 LLM:n hienosäätö

1. Vie historialliset kysely‑V&A‑parit (mukaan lukien todiste‑IDt).  
2. Muunna ne LLM‑tarjoajan vaatimaa prompt‑completion -muotoon.  
3. Suorita **valvottu hienosäätö** (OpenAI `v1/fine-tunes`, Azure `deployment`).  
4. Arvioi **BLEU**‑mittarilla ja, mikä tärkeämpää, **ihmisen validaatiolla** sääntelyn noudattamista varten.

### 4.4 Suojausmekanismien toteutus

- **Luottamuspisteytys**: Palauta top‑k token‑todennäköisyydet; automaattinen hyväksyntä vain jos piste > 0,9.  
- **Todisteiden varmistus**: Jälkikäsittelijä tarkistaa että jokainen viitattu `source` on todistevarastossa (SQL/NoSQL).  
- **Kehoituksen injektioturva**: Puhdista kaikki käyttäjän syöttämä teksti ennen yhdistämistä.

### 4.5 Integrointi Procurize‑alustaan

Procurize tarjoaa jo webhook‑koukut saapuville kyselyille. Kytke ne **palvelimettomaan funktioon** (AWS Lambda, Azure Functions), joka suorittaa tässä kohdassa 3 kuvattua putkea.

---

## 5. Hyödyt, riskit ja riskienhallinta

| Hyöty | Selitys |
|-------|---------|
| **Nopeus** | Vastaukset generoidaan sekunneissa, mikä lyhentää myyntisyklejä merkittävästi. |
| **Johdonmukaisuus** | Sama lähdevarasto takaa yhdenmukaisen sanoman kaikissa toimittajille. |
| **Jäljitettävyys** | Jokainen vastaus linkittää politiikka‑ID:n ja todiste‑tunnisteen, täyttäen tarkastajien vaatimukset. |
| **Skaalautuvuus** | Yksi politiikan muutos päivittyy automaattisesti kaikkiin odottaviin kyselyihin. |
| **Turvallisuus** | Automatisoidut CI/CD‑portit varmistavat syntaksin, yksikkötestit ja downstream‑päivitykset. |

| Risk | Riskinhallinta |
|------|----------------|
| **Harhakuvitelmat** | Käytä RAG‑mallia; vaadi todisteiden tarkistus ennen julkaisuun. |
| **Vanha todiste** | Automatisoi todisteiden tuoreus‑tarkistukset (esim. >30 päivää). |
| **Pääsynhallinta** | Säilytä politiikkarepo turvattuna IAM‑politiikoilla; vain valtuutetut roolit voivat tehdä muutoksia. |
| **Mallin kuluminen** | Arvioi säännöllisesti mallin tarkkuus käyttäen tuoreita testikysymyksiä. |

---

## 6. Reaaliaikainen vaikutus – Lyhyt tapaustutkimus

**Yritys:** SyncCloud (keskikokoinen SaaS‑data‑analytiikka-alusta  
**Ennen CaaC:** Kyselyjen läpimeno 4 päivää, 30 % manuaalista uudelleenkirjoitusta inkonsistenttisen sanaston takia.  
**Jälkeen CaaC:** Kyselyjen läpimeno 15 minuuttia, 0 % uudelleenkirjoitusta, audit‑lokit osoittivat 100 % jäljitettävyyttä.  

**Keskeiset mittarit:**  

- **Säästetty aika:** ~2 tuntia analyytikkoa kohti viikossa.  
- **Kauppojen kiihtyminen:** 12 % kasvu suljetuissa kaupoissa.  
- **Compliance‑pisteet:** Nostettu “moderate” → “high” kolmannen osapuolen arvioinneissa.  

---

## 7. Tulevaisuuden suuntaukset

1. **Nollaluottamuksen todistehallinta** – Yhdistä CaaC‑järjestelmään lohkoketjutodisteen varmennuksen pysyvyyden takaamiseksi.  
2. **Monikielinen tuki** – Laajenna hienosäätöä kattamaan lailliset käännökset **GDPR** – katso [GDPR](https://gdpr.eu/), **CCPA** – katso [CCPA](https://oag.ca.gov/privacy/ccpa) ja **CPRA** – katso [CPRA](https://thecpra.org/), sekä kehittyvät datasuoja‑lait.  
3. **Itsensä korjaavat käytännöt** – Hyödynnä vahvistusoppimista, jossa malli saa palautetta auditoinneista ja ehdottaa automaattisesti politiikan parannuksia.  

Nämä innovaatiot siirtävät CaaC:sta **tuottavuusvälineestä strategiseksi compliance‑moottoriksi**, joka aktiivisesti muokkaa organisaation turvallisuusasemaa.

---

## 8. Aloituslista

- [ ] Määrittele ja versionoi Policy‑as‑Code‑kaavio.  
- [ ] Täytä tietovarasto kaikilla olemassa olevilla käytännöillä ja todisteiden metatiedoilla.  
- [ ] Asenna haku‑palvelu (Elasticsearch/OpenSearch).  
- [ ] Kerää historialliset Q&A‑parit ja hienosäädä LLM.  
- [ ] Rakenna luottamuspiste‑ ja todiste‑tarkistuskerros.  
- [ ] Integroi putki Procurize‑kyselykäyttöliittymään.  
- [ ] Suorita pilotti matalan riskin toimittajakyselyn kanssa ja iteroi.  

Seuraamalla tätä tarkistuslistaa pääset nopeasti käyttöönottoon: automaattinen, auditoitu ja skaalautuva kyselyvastausjärjestelmä.

---

### Viitteet yleisiin viitekehyksiin ja -standardeihin (nopeaa pääsyä varten)

- **SOC 2** – [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2)  
- **ISO 27001** – [ISO 27001](https://www.iso.org/standard/27001) & [ISO/IEC 27001 Information Security Management](https://www.iso.org/isoiec-27001-information-security.html)  
- **GDPR** – [GDPR](https://gdpr.eu/)  
- **HIPAA** – [HIPAA](https://www.hhs.gov/hipaa/index.html)  
- **NIST CSF** – [NIST CSF](https://www.nist.gov/cyberframework)  
- **DPAs** – [DPAs](https://www.dpocentre.com/what-is-a-dpa-and-why-do-you-need-one/)  
- **Cloud Security Alliance STAR** – [Cloud Security Alliance STAR](https://cloudsecurityalliance.org/star/)  
- **PCI‑DSS** – [PCI‑DSS](https://www.pcisecuritystandards.org/pci_security/)  
- **CCPA** – [CCPA](https://oag.ca.gov/privacy/ccpa)  
- **CPRA** – [CPRA](https://thecpra.org/)  
- **Gartner Security Automation Trends** – [Gartner Security Automation Trends](https://www.gartner.com/en/documents/5202463)  
- **Gartner Sales Cycle Benchmarks** – [Gartner Sales Cycle Benchmarks](https://www.gartner.com/en/sales)  
- **MITRE AI Security** – [MITRE AI Security](https://www.mitre.org/)  
- **EU AI Act Compliance** – [EU AI Act Compliance](https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai)  
- **SLAs** – [SLAs](https://www.ibm.com/think/topics/service-level-agreement)  
- **NYDFS** – [NYDFS](https://www.dfs.ny.gov/industry_guidance/cybersecurity)  
- **DORA** – [DORA](https://www.eiopa.europa.eu/digital-operational-resilience-act-dora_en)  
- **BBB Trust Seal** – [BBB Trust Seal](https://www.bbb.org/)  
- **Google Trust & Safety** – [Google Trust & Safety](https://safety.google/)  
- **FedRAMP** – [FedRAMP](https://www.fedramp.gov/)  
- **CISA Cybersecurity Best Practices** – [CISA Cybersecurity Best Practices](https://www.cisa.gov/topics/cybersecurity-best-practices)  
- **EU Cloud Code of Conduct** – [EU Cloud Code of Conduct](https://eucoc.cloud/en/home)