feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command
Add /ultraresearch-local for structured research combining local codebase analysis with external knowledge via parallel agent swarms. Produces research briefs with triangulation, confidence ratings, and source quality assessment. New command: /ultraresearch-local with modes --quick, --local, --external, --fg. New agents: research-orchestrator (opus), docs-researcher, community-researcher, security-researcher, contrarian-researcher, gemini-bridge (all sonnet). New template: research-brief-template.md. Integration: --research flag in /ultraplan-local accepts pre-built research briefs (up to 3), enriches the interview and exploration phases. Planning orchestrator cross-references brief findings during synthesis. Design principle: Context Engineering — right information to right agent at right time. Research briefs are structured artifacts in the pipeline: ultraresearch → brief → ultraplan --research → plan → ultraexecute. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
baa2d0220b
488 changed files with 213221 additions and 0 deletions
|
|
@ -0,0 +1,551 @@
|
|||
# Regulatory Compliance for Edge AI
|
||||
|
||||
**Last updated:** 2026-02
|
||||
**Status:** GA
|
||||
**Category:** Hybrid Cloud & Edge AI
|
||||
|
||||
---
|
||||
|
||||
## Introduksjon
|
||||
|
||||
AI-systemer deployed pa edge — pa lokale servere, gateways, enheter eller on-premises Kubernetes-klynger — ma oppfylle de samme regulatoriske kravene som skybaserte AI-systemer, men med tilleggsutfordringer knyttet til fysisk tilgangskontroll, distribuert logging, og vedlikehold av mange enheter. Norsk offentlig sektor opererer under et komplekst regulatorisk landskap: GDPR, EU AI Act, NSM Grunnprinsipper, Utredningsinstruksen, og sektorspesifikke krav.
|
||||
|
||||
For edge AI er utfordringen todelt: For det forste ma selve AI-systemet vaere compliant (ansvarlig AI, dataminimering, transparens). For det andre ma den distribuerte arkitekturen — med data og modeller pa mange fysiske lokasjoner — administreres slik at alle noder er oppdaterte, logget, og revisjonsvennlige. Manglende sentralisert kontroll gir okt risiko for konfigurasjonsavvik og compliance-brudd.
|
||||
|
||||
Microsoft tilbyr verktoy for a adressere dette: Azure Arc for sentralisert policy-haandheving, Microsoft Purview for dataklassifisering og -styring, Microsoft Defender for Cloud for sikkerhetsvurdering, og Compliance Manager for regulatorisk kartlegging. Disse verktoyene kan utvides til edge-miljoer gjennom Arc-integrasjon.
|
||||
|
||||
---
|
||||
|
||||
## Kjernekomponenter
|
||||
|
||||
| Komponent | Formal | Teknologi |
|
||||
|-----------|--------|-----------|
|
||||
| Azure Arc | Sentralisert policy-haandheving pa edge | Kubernetes/Server |
|
||||
| Microsoft Purview | Dataklassifisering og -styring | Data governance |
|
||||
| Compliance Manager | Regulatorisk kartlegging og kontroller | Assessment |
|
||||
| Microsoft Defender for Cloud | Sikkerhetsvurdering | CSPM/CWPP |
|
||||
| Azure Policy | Automatisert policy-haandheving | Policy engine |
|
||||
| Azure Monitor | Sentralisert logging og overvaking | Observability |
|
||||
| Microsoft Priva | Personvernkonsekvensvurdering | Privacy |
|
||||
|
||||
---
|
||||
|
||||
## Data Protection Impact Assessment (DPIA)
|
||||
|
||||
### Nar er DPIA pakrevd for edge AI?
|
||||
|
||||
Ifoolge GDPR Art. 35 er DPIA pakrevd nar databehandling sannsynligvis medforer hoey risiko for fysiske personers rettigheter. For edge AI gjelder dette sarlig:
|
||||
|
||||
| Trigger | Edge AI-eksempel | DPIA-krav |
|
||||
|---------|-----------------|-----------|
|
||||
| Automatiserte beslutninger | AI-basert triage pa sykehus | Pakrevd |
|
||||
| Systematisk overvaking | Kamerabasert trafikkanalyse | Pakrevd |
|
||||
| Sensitive data i stor skala | Helsedata-analyse pa lokale servere | Pakrevd |
|
||||
| Ny teknologi | AI-modeller pa edge-enheter | Vurderes |
|
||||
| Saerbare grupper | AI i barnevern/NAV | Pakrevd |
|
||||
|
||||
### DPIA-mal for edge AI-system
|
||||
|
||||
```markdown
|
||||
## DPIA for Edge AI-system
|
||||
|
||||
### 1. Systembeskrivelse
|
||||
- **Navn**: [System-navn]
|
||||
- **Formal**: [Formal med AI-behandling]
|
||||
- **Datatyper**: [Persondata som behandles]
|
||||
- **Datasubjekter**: [Hvem gjelder det]
|
||||
- **Edge-lokasjon**: [Hvor AI kjorer]
|
||||
- **Modelltype**: [SLM/ONNX/Custom]
|
||||
- **Dataminimering**: [Hvordan begrenses datainnsamling]
|
||||
|
||||
### 2. Nodvendighet og proporsjonalitet
|
||||
- [ ] Er AI-behandling nodvendig for formalet?
|
||||
- [ ] Kan formalet oppnas med mindre inngripende midler?
|
||||
- [ ] Er datamengden begrenset til det nodvendige?
|
||||
- [ ] Er lagringstid fastsatt og begrunnet?
|
||||
|
||||
### 3. Risikovurdering
|
||||
| Risiko | Sannsynlighet | Konsekvens | Tiltak |
|
||||
|--------|--------------|------------|--------|
|
||||
| Data pa avveie fra edge-enhet | Medium | Hoey | Kryptering, fysisk sikring |
|
||||
| Feilaktig AI-beslutning | Medium | Avhengig av kontekst | Menneskelig overstyring |
|
||||
| Modell-bias | Lav-Medium | Hoey | Bias-testing, overvaking |
|
||||
| Manglende logging | Lav | Hoey | Sentralisert audit via Arc |
|
||||
| Uautorisert tilgang | Medium | Hoey | Tilgangskontroll, attestasjon |
|
||||
|
||||
### 4. Tiltak for a redusere risiko
|
||||
- [ ] Kryptering av data pa edge-enhet (at rest, in transit, in use)
|
||||
- [ ] Automatisert logging til sentralt system
|
||||
- [ ] Menneskelig overstyring for kritiske beslutninger
|
||||
- [ ] Regelmessig bias-evaluering av AI-modell
|
||||
- [ ] Sletterutiner for persondata pa edge
|
||||
- [ ] Fysisk sikring av edge-enheter
|
||||
- [ ] Sentralisert policy-haandheving via Azure Arc
|
||||
|
||||
### 5. Konsultasjon
|
||||
- [ ] Personvernombud konsultert
|
||||
- [ ] Datatilsynet konsultert (om pakrevd)
|
||||
- [ ] Beroorte parter informert
|
||||
```
|
||||
|
||||
### Implementering av DPIA-kontroller
|
||||
|
||||
```python
|
||||
# Automatisert DPIA-kontrollsjekk for edge AI
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
@dataclass
|
||||
class DPIAControl:
|
||||
id: str
|
||||
name: str
|
||||
description: str
|
||||
status: str # "implemented", "partial", "missing"
|
||||
evidence: Optional[str] = None
|
||||
last_verified: Optional[datetime] = None
|
||||
|
||||
class EdgeAIDPIAChecker:
|
||||
def __init__(self):
|
||||
self.controls = self._define_controls()
|
||||
|
||||
def _define_controls(self) -> list[DPIAControl]:
|
||||
return [
|
||||
DPIAControl(
|
||||
id="DPIA-01",
|
||||
name="Data minimering",
|
||||
description="Kun nodvendige persondata samles inn pa edge",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-02",
|
||||
name="Kryptering at rest",
|
||||
description="All data pa edge-enhet er kryptert",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-03",
|
||||
name="Kryptering in transit",
|
||||
description="TLS 1.3 for all kommunikasjon",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-04",
|
||||
name="Tilgangskontroll",
|
||||
description="RBAC implementert pa edge-klynge",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-05",
|
||||
name="Audit logging",
|
||||
description="All AI-inferens og datatilgang logges",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-06",
|
||||
name="Menneskelig overstyring",
|
||||
description="AI-beslutninger kan overstyres av menneske",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-07",
|
||||
name="Slettemekanisme",
|
||||
description="Persondata kan slettes fra edge-enhet",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-08",
|
||||
name="Bias-evaluering",
|
||||
description="Modellen er testet for bias og diskriminering",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-09",
|
||||
name="Transparens",
|
||||
description="Bruker informeres om AI-behandling",
|
||||
status="missing"
|
||||
),
|
||||
DPIAControl(
|
||||
id="DPIA-10",
|
||||
name="Policy-haandheving",
|
||||
description="Azure Policy haandheves pa edge via Arc",
|
||||
status="missing"
|
||||
)
|
||||
]
|
||||
|
||||
def assess(self) -> dict:
|
||||
"""Vurder compliance-status"""
|
||||
implemented = sum(1 for c in self.controls if c.status == "implemented")
|
||||
total = len(self.controls)
|
||||
|
||||
return {
|
||||
"score": f"{implemented}/{total}",
|
||||
"percentage": f"{(implemented/total)*100:.0f}%",
|
||||
"status": "COMPLIANT" if implemented == total else "NON_COMPLIANT",
|
||||
"missing": [c.name for c in self.controls if c.status == "missing"],
|
||||
"partial": [c.name for c in self.controls if c.status == "partial"]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Risk Assessment Frameworks
|
||||
|
||||
### NSM Grunnprinsipper for edge AI
|
||||
|
||||
```python
|
||||
# NSM Grunnprinsipper-basert risikovurdering for edge AI
|
||||
class NSMRiskAssessment:
|
||||
"""Risikovurdering basert pa NSMs grunnprinsipper for IKT-sikkerhet"""
|
||||
|
||||
CATEGORIES = {
|
||||
"identifisere": [
|
||||
"Kartlegge enheter, systemer og tjenester",
|
||||
"Klassifisere informasjon og data",
|
||||
"Identifisere saarbarheter",
|
||||
"Vurdere risiko"
|
||||
],
|
||||
"beskytte": [
|
||||
"Haandtere identiteter og tilganger",
|
||||
"Beskytte data (kryptering)",
|
||||
"Sikre plattformer og applikasjoner",
|
||||
"Beskytte nettverk"
|
||||
],
|
||||
"oppdage": [
|
||||
"Overvake sikkerhetstilstand",
|
||||
"Logge og analysere hendelser",
|
||||
"Oppdage uonsket aktivitet"
|
||||
],
|
||||
"haandtere": [
|
||||
"Haandtere sikkerhetshendelser",
|
||||
"Gjenopprette etter hendelser",
|
||||
"Forbedre basert pa erfaring"
|
||||
]
|
||||
}
|
||||
|
||||
def assess_edge_ai_system(self, system_config: dict) -> dict:
|
||||
"""Vurder et edge AI-system mot NSM Grunnprinsipper"""
|
||||
results = {}
|
||||
|
||||
for category, principles in self.CATEGORIES.items():
|
||||
category_results = []
|
||||
for principle in principles:
|
||||
score = self._evaluate_principle(principle, system_config)
|
||||
category_results.append({
|
||||
"principle": principle,
|
||||
"score": score, # 1-5
|
||||
"status": "OK" if score >= 3 else "MANGELFULL"
|
||||
})
|
||||
results[category] = {
|
||||
"principles": category_results,
|
||||
"avg_score": sum(r["score"] for r in category_results) / len(category_results)
|
||||
}
|
||||
|
||||
overall = sum(r["avg_score"] for r in results.values()) / len(results)
|
||||
return {
|
||||
"categories": results,
|
||||
"overall_score": round(overall, 1),
|
||||
"overall_status": "AKSEPTABEL" if overall >= 3.0 else "UTILSTREKKELIG",
|
||||
"recommendation": self._generate_recommendations(results)
|
||||
}
|
||||
```
|
||||
|
||||
### EU AI Act risikoklassifisering for edge AI
|
||||
|
||||
| Risikoniva | Eksempel edge AI | Krav | Konsekvens |
|
||||
|------------|-----------------|------|------------|
|
||||
| Uakseptabel | Sosial scoring pa edge | Forbudt | Kan ikke deployes |
|
||||
| Hoey risiko | Biometrisk ID pa edge | Full compliance | DPIA + CE-merking + audit |
|
||||
| Begrenset risiko | Chatbot pa klientenhet | Transparens | Bruker ma informeres |
|
||||
| Minimal risiko | Spam-filter lokalt | Frivillig | Anbefalt god praksis |
|
||||
|
||||
---
|
||||
|
||||
## Audit Logging at Edge
|
||||
|
||||
### Sentralisert audit-logging arkitektur
|
||||
|
||||
```
|
||||
┌─────────────┐ ┌──────────────┐ ┌───────────────┐
|
||||
│ Edge Node 1 │ │ Edge Node 2 │ │ Edge Node N │
|
||||
│ │ │ │ │ │
|
||||
│ [AI-inferens]│ │ [AI-inferens] │ │ [AI-inferens] │
|
||||
│ [Audit log] │ │ [Audit log] │ │ [Audit log] │
|
||||
│ ↓ │ │ ↓ │ │ ↓ │
|
||||
│ [OMS Agent] │ │ [OMS Agent] │ │ [OMS Agent] │
|
||||
└──────┬──────┘ └──────┬───────┘ └──────┬────────┘
|
||||
│ │ │
|
||||
└───────────────────┼─────────────────────┘
|
||||
↓
|
||||
┌────────────────────────┐
|
||||
│ Log Analytics │
|
||||
│ Workspace │
|
||||
│ (Norway East) │
|
||||
│ │
|
||||
│ ┌────────────────┐ │
|
||||
│ │ KQL-queries │ │
|
||||
│ │ for compliance │ │
|
||||
│ └────────────────┘ │
|
||||
└────────────┬───────────┘
|
||||
↓
|
||||
┌────────────────────────┐
|
||||
│ Azure Sentinel / SIEM │
|
||||
│ (Sikkerhetshendelser) │
|
||||
└────────────────────────┘
|
||||
```
|
||||
|
||||
### Implementering av edge audit logging
|
||||
|
||||
```python
|
||||
# Strukturert audit logging for edge AI
|
||||
import json
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
class EdgeAIAuditLogger:
|
||||
"""Audit logger for AI-inferens pa edge, kompatibel med Azure Monitor"""
|
||||
|
||||
def __init__(self, device_id: str, log_path: str):
|
||||
self.device_id = device_id
|
||||
self.logger = logging.getLogger("edge-ai-audit")
|
||||
|
||||
# Filbasert logging (lokal buffer)
|
||||
handler = logging.FileHandler(log_path)
|
||||
handler.setFormatter(logging.Formatter('%(message)s'))
|
||||
self.logger.addHandler(handler)
|
||||
self.logger.setLevel(logging.INFO)
|
||||
|
||||
def log_inference(self, model_name: str, model_version: str,
|
||||
input_summary: str, output_summary: str,
|
||||
confidence: float, latency_ms: float,
|
||||
user_id: Optional[str] = None,
|
||||
contains_pii: bool = False):
|
||||
"""Logg AI-inferens for audit"""
|
||||
audit_entry = {
|
||||
"timestamp": datetime.utcnow().isoformat() + "Z",
|
||||
"event_type": "AI_INFERENCE",
|
||||
"device_id": self.device_id,
|
||||
"model": {
|
||||
"name": model_name,
|
||||
"version": model_version
|
||||
},
|
||||
"inference": {
|
||||
"input_summary": input_summary if not contains_pii else "[PII_REDACTED]",
|
||||
"output_summary": output_summary,
|
||||
"confidence": confidence,
|
||||
"latency_ms": latency_ms
|
||||
},
|
||||
"context": {
|
||||
"user_id": user_id,
|
||||
"contains_pii": contains_pii,
|
||||
"processing_location": "edge",
|
||||
"data_residency": "Norway"
|
||||
}
|
||||
}
|
||||
self.logger.info(json.dumps(audit_entry))
|
||||
|
||||
def log_data_access(self, data_type: str, purpose: str,
|
||||
legal_basis: str, user_id: Optional[str] = None):
|
||||
"""Logg datatilgang for GDPR Art. 30"""
|
||||
audit_entry = {
|
||||
"timestamp": datetime.utcnow().isoformat() + "Z",
|
||||
"event_type": "DATA_ACCESS",
|
||||
"device_id": self.device_id,
|
||||
"data_access": {
|
||||
"data_type": data_type,
|
||||
"purpose": purpose,
|
||||
"legal_basis": legal_basis,
|
||||
"user_id": user_id
|
||||
}
|
||||
}
|
||||
self.logger.info(json.dumps(audit_entry))
|
||||
|
||||
def log_model_update(self, old_version: str, new_version: str,
|
||||
update_source: str, integrity_check: str):
|
||||
"""Logg modell-oppdatering"""
|
||||
audit_entry = {
|
||||
"timestamp": datetime.utcnow().isoformat() + "Z",
|
||||
"event_type": "MODEL_UPDATE",
|
||||
"device_id": self.device_id,
|
||||
"model_update": {
|
||||
"old_version": old_version,
|
||||
"new_version": new_version,
|
||||
"source": update_source,
|
||||
"integrity_verified": integrity_check == "valid"
|
||||
}
|
||||
}
|
||||
self.logger.info(json.dumps(audit_entry))
|
||||
```
|
||||
|
||||
### KQL-queries for compliance-rapportering
|
||||
|
||||
```kusto
|
||||
// KQL: AI-inferens audit-rapport siste 30 dager
|
||||
EdgeAIAudit_CL
|
||||
| where TimeGenerated > ago(30d)
|
||||
| where event_type_s == "AI_INFERENCE"
|
||||
| summarize
|
||||
TotalInferences = count(),
|
||||
AvgConfidence = avg(inference_confidence_d),
|
||||
AvgLatency = avg(inference_latency_ms_d),
|
||||
PIIInferences = countif(context_contains_pii_b == true),
|
||||
UniqueModels = dcount(model_name_s),
|
||||
UniqueDevices = dcount(device_id_s)
|
||||
by bin(TimeGenerated, 1d)
|
||||
| order by TimeGenerated desc
|
||||
|
||||
// KQL: Sjekk at alle edge-noder har oppdatert modell
|
||||
EdgeAIAudit_CL
|
||||
| where event_type_s == "MODEL_UPDATE"
|
||||
| summarize LastUpdate = max(TimeGenerated), CurrentVersion = arg_max(TimeGenerated, model_update_new_version_s)
|
||||
by device_id_s
|
||||
| extend DaysSinceUpdate = datetime_diff('day', now(), LastUpdate)
|
||||
| where DaysSinceUpdate > 7
|
||||
| project device_id_s, CurrentVersion, DaysSinceUpdate
|
||||
| order by DaysSinceUpdate desc
|
||||
|
||||
// KQL: PII-tilgangsrapport for GDPR Art. 30
|
||||
EdgeAIAudit_CL
|
||||
| where event_type_s == "DATA_ACCESS"
|
||||
| summarize
|
||||
AccessCount = count(),
|
||||
UniqueUsers = dcount(data_access_user_id_s),
|
||||
Purposes = make_set(data_access_purpose_s)
|
||||
by data_access_data_type_s, data_access_legal_basis_s
|
||||
| order by AccessCount desc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Transparency and Explainability
|
||||
|
||||
### Forklarbarhets-krav for edge AI
|
||||
|
||||
| Krav | Kilde | Implementering |
|
||||
|------|-------|----------------|
|
||||
| Rett til forklaring | GDPR Art. 22 | Modell-forklaringsrapporter |
|
||||
| Transparens | EU AI Act | Brukerinformasjon om AI-bruk |
|
||||
| Dokumentasjon | EU AI Act (hoey-risiko) | Teknisk dokumentasjon |
|
||||
| Menneskelig tilsyn | EU AI Act | Override-mekanisme |
|
||||
| Etterproovbarhet | Forvaltningsloven | Audit trail + begrunnelse |
|
||||
|
||||
### Implementering av forklarbarhet pa edge
|
||||
|
||||
```python
|
||||
# SHAP-basert forklarbarhet for edge AI-modeller
|
||||
import shap
|
||||
import numpy as np
|
||||
|
||||
class EdgeAIExplainer:
|
||||
"""Lettvekts forklarbarhet for edge-deployde modeller"""
|
||||
|
||||
def __init__(self, model, feature_names: list[str]):
|
||||
self.model = model
|
||||
self.feature_names = feature_names
|
||||
# Bruk pre-beregnet bakgrunnsdata for effektivitet
|
||||
self.explainer = None
|
||||
|
||||
def initialize_with_background(self, background_data: np.ndarray):
|
||||
"""Initialiser forklarer med representativt datasett"""
|
||||
# Bruk kun 100 eksempler for minneeffektivitet pa edge
|
||||
sample = background_data[:100] if len(background_data) > 100 else background_data
|
||||
self.explainer = shap.KernelExplainer(
|
||||
self.model.predict,
|
||||
sample,
|
||||
link="logit"
|
||||
)
|
||||
|
||||
def explain_prediction(self, input_data: np.ndarray) -> dict:
|
||||
"""Generer forklaring for en enkelt prediksjon"""
|
||||
if self.explainer is None:
|
||||
return {"error": "Forklarer ikke initialisert"}
|
||||
|
||||
shap_values = self.explainer.shap_values(input_data, nsamples=50)
|
||||
|
||||
# Sorter features etter viktighet
|
||||
feature_importance = []
|
||||
for i, name in enumerate(self.feature_names):
|
||||
importance = abs(float(shap_values[0][i]))
|
||||
direction = "oker" if shap_values[0][i] > 0 else "reduserer"
|
||||
feature_importance.append({
|
||||
"feature": name,
|
||||
"importance": importance,
|
||||
"direction": direction,
|
||||
"value": float(input_data[0][i])
|
||||
})
|
||||
|
||||
feature_importance.sort(key=lambda x: x["importance"], reverse=True)
|
||||
|
||||
# Generer menneskelesbar forklaring
|
||||
top_features = feature_importance[:3]
|
||||
explanation = self._generate_norwegian_explanation(top_features)
|
||||
|
||||
return {
|
||||
"prediction": self.model.predict(input_data)[0],
|
||||
"feature_importance": feature_importance,
|
||||
"explanation_no": explanation,
|
||||
"model_type": type(self.model).__name__,
|
||||
"explainability_method": "SHAP (KernelExplainer)"
|
||||
}
|
||||
|
||||
def _generate_norwegian_explanation(self, top_features: list[dict]) -> str:
|
||||
"""Generer forklaring pa norsk"""
|
||||
parts = []
|
||||
for f in top_features:
|
||||
parts.append(
|
||||
f"'{f['feature']}' (verdi: {f['value']:.2f}) "
|
||||
f"{f['direction']} sannsynligheten"
|
||||
)
|
||||
return "Beslutningen er hovedsakelig basert pa: " + ", ".join(parts) + "."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Norsk offentlig sektor
|
||||
|
||||
### Regulatorisk sjekkliste for edge AI
|
||||
|
||||
| Regulering | Krav | Edge AI-implementering |
|
||||
|-----------|------|----------------------|
|
||||
| GDPR Art. 5 | Dataminimering | Prosesser pa edge, send kun aggregert |
|
||||
| GDPR Art. 22 | Automatiserte beslutninger | Menneskelig overstyring pakrevd |
|
||||
| GDPR Art. 30 | Behandlingsprotokoll | Audit logging pa alle noder |
|
||||
| GDPR Art. 32 | Tekniske tiltak | Kryptering, tilgangskontroll |
|
||||
| GDPR Art. 35 | DPIA | Dokumentert vurdering |
|
||||
| EU AI Act | Risikoklassifisering | Kategoriser edge AI-systemer |
|
||||
| NSM Grunnprinsipper | IKT-sikkerhet | Policy-haandheving via Arc |
|
||||
| Forvaltningsloven | Begrunnelse | Forklarbarhetsmekanisme |
|
||||
| Offentleglova | Innsyn | Tilgjengelig dokumentasjon |
|
||||
| Arkivlova | Bevaring | Langsiktig audit-lagring |
|
||||
|
||||
### Datatilsynets anbefalinger for AI
|
||||
|
||||
- Gjennomfoer DPIA for alle AI-systemer som prosesserer persondata
|
||||
- Implementer privacy by design og privacy by default
|
||||
- Sikre rett til forklaring ved automatiserte beslutninger
|
||||
- Dokumenter rettslig grunnlag for AI-behandling
|
||||
- Gjennomfoer jevnlige revisjoner av AI-systemets funksjon
|
||||
|
||||
---
|
||||
|
||||
## Beslutningsrammeverk
|
||||
|
||||
| Scenario | Anbefaling | Begrunnelse |
|
||||
|----------|------------|-------------|
|
||||
| Hoey-risiko AI (helse, justis) | Full DPIA + EU AI Act compliance + audit | Pakrevd, strengeste krav |
|
||||
| Begrenset risiko (chatbot, hjelp) | Transparenserklaring + logging | Informasjonsplikt |
|
||||
| Minimal risiko (spam, klassifisering) | God praksis + logging | Frivillig, men anbefalt |
|
||||
| Multi-edge deployment | Azure Arc + Policy + sentralisert logging | Konsistent haandheving |
|
||||
| Sensitive persondata | DPIA + kryptering + forklarbarhet | GDPR-krav |
|
||||
| Offentlig forvaltning | Full compliance-stack + begrunnelse | Forvaltningsloven |
|
||||
|
||||
---
|
||||
|
||||
## For Cosmo
|
||||
|
||||
- **DPIA er pakrevd for de fleste edge AI-systemer** i offentlig sektor som prosesserer persondata — bruk den strukturerte malen og implementer automatiserte kontrollsjekker
|
||||
- **Audit logging pa edge ma synkroniseres sentralt** — bruk Azure Monitor Agent (OMS) pa alle edge-noder og lagre logger i Log Analytics Workspace i Norway East med 7 ars retention
|
||||
- **EU AI Act krever risikoklassifisering** — kategoriser edge AI-systemer tidlig i prosjektet og implementer kravene for riktig risikoniva for du deployer
|
||||
- **Forklarbarhets er et lovkrav ved automatiserte beslutninger** — implementer lettvekts SHAP-basert forklarbarhet pa edge og generer norskspraklige forklaringer for brukere og saksbehandlere
|
||||
- **Azure Arc + Policy er den eneste skalerbare maaten** a handheve compliance pa tvers av mange edge-noder — definer policies sentralt og la Arc sikre at alle noder er compliant
|
||||
Loading…
Add table
Add a link
Reference in a new issue