From a975c9943c0fad78eaf3b5d8c6b01bf5d160aa61 Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Tue, 5 May 2026 12:38:49 +0200 Subject: [PATCH] test(ms-ai-architect): add ros-analysis fixture for E2E suite Synthetic ROS-analyse output for "Acme Kunde-chatbot" (Acme Kommune) following the same pattern as security-assessment, cost-estimation, ai-act and summary fixtures. Satisfies all 29 assertions in tests/test-ros-output.sh: - 8 phases (Fase 1-8) plus Ledelsessammendrag - 12 trusler i T-XXX-NN format (MAESTRO + OWASP-mapping) - 9 risikoer i R-N format - 10 tiltak i M-N format - 7 ROS-dimensjoner med X/5-scoring - 5x5 risikomatrise + restrisiko-tabell - NS 5814 + ISO 31000 metodikk-referanser - AI Act, GDPR, OWASP regulatoriske referanser - MAESTRO + supply-chain referanser (Vedlegg O coverage) Tar bort den siste pre-eksisterende run-e2e-feilen (`bash tests/run-e2e.sh` exits 0). Co-Authored-By: Claude Opus 4.7 --- .../tests/fixtures/ros-analysis/fixture.md | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 plugins/ms-ai-architect/tests/fixtures/ros-analysis/fixture.md diff --git a/plugins/ms-ai-architect/tests/fixtures/ros-analysis/fixture.md b/plugins/ms-ai-architect/tests/fixtures/ros-analysis/fixture.md new file mode 100644 index 0000000..421cb64 --- /dev/null +++ b/plugins/ms-ai-architect/tests/fixtures/ros-analysis/fixture.md @@ -0,0 +1,128 @@ +# ROS-analyse — Acme Kunde-chatbot + +System: Acme Kunde-chatbot (Acme Kommune) +Metodikk: NS 5814:2021 + ISO 31000:2018 + AI-trusselbibliotek (MAESTRO + OWASP LLM Top 10) +Dato: 2026-05-05 +Forfatter: ros-analysis-agent +Regulatorisk kontekst: AI Act høyrisiko (Annex III §5b — tilgang til offentlige tjenester), GDPR art. 35, NSM Grunnprinsipper + +## Ledelsessammendrag + +Acme Kunde-chatbot er et AI-system av middels høy risiko som krever 7 P0/P1-tiltak før produksjon. Total risikoscore 3.2/5 (medium-høy) drevet av modell-drift (R-1), forsyningskjede-eksponering via MCP (R-3, MAESTRO-relevant) og bias mot mindre språkgrupper (R-7). Restrisiko etter tiltak: 2.1/5 (akseptabel for kommunal innbygger-tjeneste). + +## Fase 1: Kontekst og avgrensning + +Systemet er en RAG-chatbot bygget på Azure OpenAI (Sweden Central) + Azure AI Search + custom Microsoft Agent Framework-orkestrering. Tilgjengelig 24/7 via kommunens nettsider og Microsoft Teams. Estimert 8 000 unike brukere/mnd. Utenfor scope: backend-saksbehandlingssystem, sensitive personopplysninger (kun navn + telefonnummer behandles). + +### Avgrensning + +- **Inkludert:** RAG-pipeline, chatbot-grensesnitt, samtalelogg-lagring (90 dager), MCP-integrasjon mot kommunens FAQ-database +- **Ekskludert:** Backend ESDH, økonomiske transaksjoner, helseopplysninger + +## Fase 2: Trusselidentifikasjon + +Trusler identifisert via STRIDE + AI-trusselbibliotek + MAESTRO supply chain-lag: + +| Trussel-ID | Beskrivelse | Kategori | +|------------|-------------|----------| +| T-MOD-01 | Modell-drift som degraderer nøyaktighet over tid | Modellsikkerhet | +| T-MOD-02 | Adversarielle prompts som omgår system-instruksjoner | Modellsikkerhet | +| T-DAT-01 | Treningsdata-bias mot småbarnsfamilier (tematisk skjevhet i FAQ) | Bias | +| T-DAT-02 | Datalekkasje fra samtalelogg ved feilkonfigurert tilgang | Dataintegritet | +| T-INF-01 | API-utilgjengelighet i kritisk innbygger-periode (skolestart) | Tilgjengelighet | +| T-INF-02 | Datatap pga manglende georedundans (Sweden Central single-region) | Tilgjengelighet | +| T-LEG-01 | Misbruk av AI-svar som juridisk bevis i klagesaker | Juridisk | +| T-LEG-02 | GDPR art. 22 — automatiserte avgjørelser uten menneskelig oversight | Juridisk | +| T-EXP-01 | Manglende forklarbarhet ved chatbot-anbefalinger | Forklarbarhet | +| T-ORG-01 | Manglende intern eierskap når leverandør (Microsoft) endrer modell | Organisatorisk | +| T-MCP-01 | Forsyningskjede-kompromittering via tredjepart MCP-server (MAESTRO L-1) | Modellsikkerhet | +| T-MCP-02 | Tool poisoning i MCP-deskripsjoner (MAESTRO L-2 prompt injection) | Modellsikkerhet | + +## Fase 3: Risikoregister + +| Risiko-ID | Beskrivelse | Trussel(er) | Sannsynlighet (1-5) | Konsekvens (1-5) | Score | Nivå | +|-----------|-------------|-------------|---------------------|------------------|-------|------| +| R-1 | Modell-drift gir feil svar om kommunale tjenester | T-MOD-01 | 4 | 3 | 12 | medium | +| R-2 | Prompt injection lekker system-instruksjoner | T-MOD-02 | 3 | 2 | 6 | low | +| R-3 | MCP-supply-chain-angrep eksfiltrerer FAQ-database | T-MCP-01, T-MCP-02 | 2 | 5 | 10 | medium | +| R-4 | Innbyggere får systematisk dårligere svar pga språkbias | T-DAT-01 | 4 | 4 | 16 | high | +| R-5 | API-nedetid i skolestart-periode | T-INF-01 | 3 | 4 | 12 | medium | +| R-6 | Schrems II-eksponering via Sweden Central | T-INF-02 | 2 | 4 | 8 | medium | +| R-7 | Innbygger taper rett pga AI-hallusinasjon presentert som autoritativ | T-LEG-01, T-EXP-01 | 3 | 5 | 15 | high | +| R-8 | Datatilsynet-tilsyn finner manglende DPIA | T-LEG-02 | 4 | 4 | 16 | high | +| R-9 | Microsoft endrer modell-versjon uten varsel — output-kvalitet endres | T-ORG-01 | 3 | 3 | 9 | medium | + +## Fase 4: Risikomatrise (5×5) + +| Sannsynlighet \\ Konsekvens | 1 (Ubetydelig) | 2 (Mindre) | 3 (Moderat) | 4 (Alvorlig) | 5 (Katastrofal) | +|--------------------------|----------------|------------|-------------|--------------|-----------------| +| **5 (Svært sannsynlig)** | | | | | | +| **4 (Sannsynlig)** | | | R-1, R-5 (12) | R-4, R-8 (16) | | +| **3 (Mulig)** | | R-2 (6) | R-9 (9) | R-6 (8) | R-7 (15) | +| **2 (Lite sannsynlig)** | | | | | R-3 (10) | +| **1 (Svært usannsynlig)** | | | | | | + +## Fase 5: Dimensjonsvurdering (7 ROS-dimensjoner) + +| Dimensjon | Score (X/5) | Begrunnelse | +|-----------|-------------|-------------| +| Modellsikkerhet | 3/5 | Content Safety + Prompt Shields planlagt, men ingen red-team-test gjennomført | +| Dataintegritet | 4/5 | Azure AI Search med versjonering + audit-logg. Schrems II TIA mangler | +| Bias | 2/5 | Ingen systematisk bias-evaluering på norsk språkdata. Høy R-4-eksponering | +| Tilgjengelighet | 3/5 | 99.9% SLA fra Azure, men single-region. Skolestart-trafikk-prognose mangler | +| Forklarbarhet | 2/5 | Ingen disclaimer i chatbot-svar. R-7 truer innbyggers rettssikkerhet | +| Juridisk | 2/5 | DPIA ikke fullført. AI Act-klassifisering er gjort men FRIA mangler | +| Organisatorisk | 3/5 | Eierskap definert (Digitaliseringsavd.) men endringshåndtering uten leverandør-watch er svakt | + +**Gjennomsnitt: 2.7/5 (medium-svak)** + +## Fase 6: Tiltaksplan + +| Tiltak-ID | Tiltak | Prioritet | Adresserer | Eier | Frist | +|-----------|--------|-----------|------------|------|-------| +| M-1 | Gjennomfør DPIA + FRIA før produksjon | P0 | R-8, AI Act art. 27 | Personvernombud | 2026-06-15 | +| M-2 | Schrems II TIA for Sweden Central | P0 | R-6 | DPO + sikkerhetsarkitekt | 2026-06-30 | +| M-3 | Red team-testing av prompt injection (OWASP LLM Top 10) | P0 | R-2, R-3 | Sikkerhetstest-team | 2026-07-15 | +| M-4 | Bias-evaluering på norsk dataset (5 språkgrupper minimum) | P1 | R-4 | AI-team + eksternt språkmiljø | 2026-07-30 | +| M-5 | Disclaimer i alle chatbot-svar + lenke til menneskelig saksbehandler | P0 | R-7 | UX + juridisk | 2026-06-01 | +| M-6 | Modell-drift overvåking (groundedness scoring + ukentlig review) | P1 | R-1, R-9 | AI-team | 2026-08-01 | +| M-7 | MCP-supply-chain-audit + signed-tools-only-policy | P0 | R-3 | Sikkerhetsarkitekt | 2026-07-01 | +| M-8 | Lastest for skolestart-trafikk (5x normal-belastning) | P1 | R-5 | Drift-team | 2026-07-20 | +| M-9 | Etablér leverandør-watch for Microsoft modell-endringer | P2 | R-9 | AI-team | 2026-08-15 | +| M-10 | AI-spesifikke deteksjonsregler i Sentinel (anomalier i prompt-volum/entropi) | P1 | R-2, R-3 | SOC | 2026-08-01 | + +## Fase 7: Restrisiko etter tiltak + +| Risiko-ID | Score før | Score etter | Restrisiko-vurdering | +|-----------|-----------|-------------|----------------------| +| R-1 | 12 (medium) | 6 (low) | M-6 mitigerer driftrisiko | +| R-2 | 6 (low) | 3 (low) | M-3 + M-10 | +| R-3 | 10 (medium) | 4 (low) | M-7 + M-10 — forsyningskjede under kontroll | +| R-4 | 16 (high) | 8 (medium) | M-4 reduserer, men bias er aldri fullt eliminert | +| R-5 | 12 (medium) | 6 (low) | M-8 | +| R-6 | 8 (medium) | 4 (low) | M-2 | +| R-7 | 15 (high) | 6 (low) | M-5 — disclaimer + menneskelig opt-out er sterkt | +| R-8 | 16 (high) | 4 (low) | M-1 | +| R-9 | 9 (medium) | 6 (low) | M-9 | + +**Gjennomsnitt restrisiko: 5.2 (akseptabelt for kommunal innbygger-tjeneste)** + +## Fase 8: Anbefaling og oppfølging + +**Anbefaling: BETINGET GODKJENT for produksjon under følgende forutsetninger:** + +1. P0-tiltak (M-1, M-2, M-3, M-5, M-7) ferdigstilt før go-live +2. P1-tiltak (M-4, M-6, M-8, M-10) i plan med konkrete frister +3. Reroll innen 12 mnd. for å revurdere bias-status og leverandør-endringer +4. Hendelseslog rapporteres månedlig til Personvernombud + AI-styringsgruppe + +**Sektorhensyn (offentlig sektor — kommune):** + +- AI Act art. 27 (FRIA) er obligatorisk pga. høyrisiko + offentlig myndighet +- Klagerett må være tydelig kommunisert til innbygger (forvaltningsloven §28) +- Innsyn i logikk må være tilgjengelig på forespørsel (GDPR art. 15(1)(h)) + +**Vedlegg:** +- Vedlegg A: Trusselbibliotek (12 trusler, MAESTRO + OWASP-mapping) +- Vedlegg O: Supply chain / MCP-økosystem-analyse (R-3 underbygging) +- Vedlegg D: DPIA-koblingstabell (krysskobling til M-1)