# Sovereign Cloud for Norwegian AI **Last updated:** 2026-02 **Status:** GA **Category:** Hybrid Cloud & Edge AI --- ## Introduksjon Microsoft Sovereign Cloud er en suite av kapabiliteter og deploymentmodeller designet for a hjelpe myndigheter og regulerte industrier med a oppfylle krav til dataresidency, compliance og operasjonell suverenitet — uten a gi avkall pa fordelene ved hyperscale sky-innovasjon. For norsk offentlig sektor er dette sarlig relevant gitt strenge krav fra NSM, Datatilsynet, og EU-regulering. Sovereign Cloud tilbyr tre deploymentmodeller: Sovereign Public Cloud i Microsoft-drevne datasentre innenfor definerte geopolitiske grenser (f.eks. Norway East/West), Sovereign Private Cloud via Azure Local for customer-kontrollerte miljoer, og National Partner Clouds for lokaliserte suverene skyimplementeringer. Hver modell balanserer skyverdi mot suverenitetskontroller. For AI-arbeidsbelastninger i norsk offentlig sektor kombinerer Sovereign Cloud dataresendens med konfidensielle beregningsteknologier, kundestyrte krypteringsnoekler, og policy-baserte guardrails — alt for a muliggjore avansert AI-bruk uten a kompromittere suverenitet. --- ## Kjernekomponenter | Komponent | Formal | Teknologi | |-----------|--------|-----------| | Sovereign Landing Zone | Infrastruktur-as-code for suverene miljoer | Bicep/Terraform | | Sovereignty Baseline Policies | Azure Policy for dataresidency og konfidensialitet | Azure Policy | | Azure Confidential Computing | Beskyttelse av data under prosessering | AMD SEV-SNP, Intel TDX | | Customer-Managed Keys (CMK) | Kundekontrollert kryptering | Azure Key Vault mHSM | | Data Guardian | Datastyring for suverene arbeidsbelastninger | Preview | | External Key Management | Kundekontrollert nokkelhandtering utenfor Azure | Integration | | Transparency Logs | Innsyn i operatoerens aktiviteter | Audit | | Azure Local | On-premises sky-infrastruktur | Sovereign Private Cloud | --- ## Data Sovereignty Architecture ### Sovereign Landing Zone (SLZ) SLZ er en variant av Azure Landing Zone spesielt designet for digital suverenitet: ``` ┌─────────────────────────────────────────────────┐ │ Sovereign Landing Zone │ │ │ │ ┌─────────────────────────────────────────────┐ │ │ │ Management Group Hierarchy │ │ │ │ Root → Sovereign → Production → AI │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ ┌──────────────┐ ┌───────────────────────────┐ │ │ │ Sovereignty │ │ Workload Templates │ │ │ │ Baseline │ │ │ │ │ │ Policies │ │ - AI Foundry template │ │ │ │ │ │ - AKS template │ │ │ │ - Data │ │ - App Service template │ │ │ │ residency │ │ - Storage template │ │ │ │ - CMK │ │ │ │ │ │ - Network │ │ │ │ │ └──────────────┘ └───────────────────────────┘ │ │ │ │ ┌──────────────┐ ┌───────────────────────────┐ │ │ │ Confidential │ │ Monitoring & Audit │ │ │ │ Computing │ │ │ │ │ │ Layer │ │ - Azure Monitor │ │ │ │ │ │ - Transparency Logs │ │ │ │ - CVMs │ │ - Compliance Manager │ │ │ │ - mHSM │ │ - Defender for Cloud │ │ │ └──────────────┘ └───────────────────────────┘ │ └─────────────────────────────────────────────────┘ ``` ### Deployment med Bicep ```bicep // Sovereign Landing Zone for norsk offentlig AI targetScope = 'managementGroup' @description('Sovereignty Baseline Policy Assignment') resource sovereigntyBaseline 'Microsoft.Authorization/policyAssignments@2024-04-01' = { name: 'sovereignty-baseline-norway' properties: { displayName: 'Sovereignty Baseline - Norway AI' policyDefinitionId: '/providers/Microsoft.Authorization/policySetDefinitions/sovereignty-baseline' parameters: { allowedLocations: { value: ['norwayeast', 'norwaywest'] } requireConfidentialComputing: { value: true } requireCustomerManagedKeys: { value: true } requirePrivateEndpoints: { value: true } } } } // Nektelsespolicy: Hindre data fra a forlate Norge resource dataResidencyPolicy 'Microsoft.Authorization/policyAssignments@2024-04-01' = { name: 'data-residency-norway' properties: { displayName: 'Enforce Norway Data Residency' policyDefinitionId: '/providers/Microsoft.Authorization/policyDefinitions/e56962a6-4747-49cd-b67b-bf8b01975c4c' parameters: { listOfAllowedLocations: { value: ['norwayeast', 'norwaywest'] } } enforcementMode: 'Default' } } // Customer-Managed Key krav for AI-lagring resource cmkPolicy 'Microsoft.Authorization/policyAssignments@2024-04-01' = { name: 'cmk-encryption-ai' properties: { displayName: 'Require CMK for AI Storage' policyDefinitionId: '/providers/Microsoft.Authorization/policyDefinitions/6fac406b-40ca-413b-bf8e-0bf964659c25' enforcementMode: 'Default' } } ``` --- ## Regional Deployment Constraints ### Azure-regioner i Norge | Region | Lokasjon | Tjenester | GA-status | |--------|----------|-----------|-----------| | Norway East | Oslo | Fullt AI-spekter | GA | | Norway West | Stavanger | DR og backup | GA | ### AI-tjenester tilgjengelig i Norway East | Tjeneste | Tilgjengelig | Sovereign-kompatibel | |----------|-------------|---------------------| | Azure OpenAI | Ja | Ja (med CMK) | | Azure AI Search | Ja | Ja | | Azure ML | Ja | Ja | | Azure AI Services | Ja | Ja | | Azure AI Foundry | Ja | Ja | | Confidential VMs | Ja | Ja | | AKS | Ja | Ja | ### Deployment-begrensninger ```python # Verifiser at AI-ressurser deployes i tillatte regioner from azure.mgmt.resource import ResourceManagementClient from azure.identity import DefaultAzureCredential class SovereigntyChecker: ALLOWED_REGIONS = ["norwayeast", "norwaywest"] def __init__(self): self.credential = DefaultAzureCredential() def verify_resource_locations(self, subscription_id: str) -> list[dict]: """Verifiser at alle AI-ressurser er i tillatte regioner""" client = ResourceManagementClient(self.credential, subscription_id) violations = [] ai_resource_types = [ "Microsoft.CognitiveServices/accounts", "Microsoft.MachineLearningServices/workspaces", "Microsoft.Search/searchServices", "Microsoft.OpenAI/accounts" ] for resource in client.resources.list(): if resource.type in ai_resource_types: if resource.location not in self.ALLOWED_REGIONS: violations.append({ "resource_name": resource.name, "resource_type": resource.type, "location": resource.location, "severity": "CRITICAL", "remediation": f"Flytt til {self.ALLOWED_REGIONS}" }) return violations def verify_data_residency(self, subscription_id: str) -> dict: """Generer dataresidency-rapport""" violations = self.verify_resource_locations(subscription_id) return { "status": "COMPLIANT" if not violations else "NON_COMPLIANT", "allowed_regions": self.ALLOWED_REGIONS, "total_ai_resources": self._count_ai_resources(subscription_id), "violations": violations, "recommendation": ( "Alle AI-ressurser er innenfor tillatte regioner" if not violations else f"{len(violations)} ressurser krever flytting" ) } ``` --- ## Compliance Audit Trails ### Logging-arkitektur for sovereign AI ``` ┌─────────────────────────────────────────┐ │ AI-arbeidsbelastning │ │ │ │ [Inferens] → [Azure Monitor] │ │ [Trening] → [Log Analytics] │ │ [Datatilgang] → [Diagnostic Settings] │ └────────────────┬────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Compliance Audit Layer │ │ │ │ [Transparency Logs] │ │ → Microsoft operator-aktiviteter │ │ │ │ [Azure Activity Log] │ │ → Ressurs-operasjoner │ │ │ │ [Key Vault Audit Log] │ │ → Nokkel-tilgang og -bruk │ │ │ │ [Purview Audit] │ │ → Data-tilgang og -klassifisering │ └────────────────┬────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Long-term Retention (Norway) │ │ │ │ [Immutable Blob Storage] │ │ → 7 ars retention for compliance │ │ → WORM-policy (Write Once Read Many) │ │ → Norway East lokasjon │ └─────────────────────────────────────────┘ ``` ### Implementering av audit trail ```python # Sovereign AI audit trail konfigurasjon from azure.mgmt.monitor import MonitorManagementClient class SovereignAuditConfiguration: def configure_ai_diagnostics(self, resource_id: str, workspace_id: str): """Konfigurer diagnostikk for sovereign AI-ressurs""" monitor_client = MonitorManagementClient( self.credential, self.subscription_id ) diagnostic_settings = { "logs": [ { "category": "RequestResponse", "enabled": True, "retentionPolicy": {"enabled": True, "days": 2555} # 7 ar }, { "category": "Audit", "enabled": True, "retentionPolicy": {"enabled": True, "days": 2555} }, { "category": "AllMetrics", "enabled": True, "retentionPolicy": {"enabled": True, "days": 365} } ], "workspaceId": workspace_id, "storageAccountId": self.immutable_storage_id } monitor_client.diagnostic_settings.create_or_update( resource_uri=resource_id, name="sovereign-ai-diagnostics", diagnostic_settings_resource=diagnostic_settings ) ``` --- ## Vendor Lock-in Mitigation ### Strategier for a unnga avhengighet | Strategi | Implementering | Effekt | |----------|----------------|--------| | ONNX-format | Bruk ONNX for alle modeller | Portabilitet mellom plattformer | | Open-source SLM | Phi-modeller med MIT-lisens | Ingen leverandor-avhengighet | | IaC (Bicep/Terraform) | Infrastruktur som kode | Reproduserbar deployment | | Standard API-er | OpenAI-kompatible API-er | Bytt leverandor uten kodeendring | | Multi-cloud exit plan | Dokumentert migrasjonsplan | Redusert risiko | | Container-basert | Docker/Kubernetes | Platform-uavhengig | ### Exit-strategi-sjekkliste ```markdown ## Exit-strategi for sovereign AI-plattform ### Data - [ ] Alle data kan eksporteres i standardformater (JSON, Parquet, CSV) - [ ] Vektordatabase kan eksporteres (HNSW-indekser) - [ ] Krypteringsnoekler lagret i customer-controlled HSM - [ ] Backup-kopier i kundens kontroll ### Modeller - [ ] Alle modeller i ONNX-format - [ ] Fine-tuning-data og adaptere eksporterbare - [ ] Evalueringsmetriker dokumentert for sammenligning - [ ] Ingen proprietaere modellformater ### Infrastruktur - [ ] All infrastruktur definert i Bicep/Terraform - [ ] Kubernetes-arbeidsbelastninger med standard Helm charts - [ ] Ingen Azure-spesifikke SDK-avhengigheter i forretningslogikk - [ ] CI/CD-pipelines platform-uavhengige ### Kontrakt - [ ] Dataportabilitet klausul i avtale - [ ] Migrasjonsbistand klausul - [ ] Oppsigelsesperiode tilstrekkelig for migrasjon - [ ] Eierskap til data og modeller tydelig definert ``` --- ## Norsk offentlig sektor ### Relevante krav og rammeverk | Krav | Kilde | Sovereign Cloud-losning | |------|-------|------------------------| | Data ma lagres i Norge/EOS | Schrems II / Datatilsynet | Norway East/West regioner | | Kryptering av data ved hvile og transport | NSM Grunnprinsipper | CMK + TLS 1.3 | | Kryptering av data under prosessering | NSM / okt sikkerhet | Confidential Computing | | Innsyn i operatoerens handlinger | Offentleglova / transparens | Transparency Logs | | Dokumentert risikovurdering | Utredningsinstruksen | Compliance Manager | | Leverandoruavhengighet | Arkitekturprinsippene (Digdir) | ONNX + open source + IaC | | Universell utforming | Likestillingsloven | N/A (applikasjonsniva) | ### Anskaffelseshensyn - **SSA-L/SSA-T**: Sovereign Cloud-kapabiliteter bor spesifiseres i kravspesifikasjonen - **Databehandleravtale**: Ma dekke dataresidency, kryptering, og audit-rettigheter - **Exit-klausul**: Kontrakten ma sikre rett til dataeksport og migrasjonsbistand - **Gevinstrealisering**: Dokumenter besparelser vs. on-premises drift --- ## Beslutningsrammeverk | Scenario | Anbefaling | Begrunnelse | |----------|------------|-------------| | Standard AI-arbeidsbelastning | Sovereign Public Cloud (Norway East) | Enklest, fullt spekter av tjenester | | Sensitive data med hoy sikkerhet | SPC + Confidential Computing + CMK | Maksimal beskyttelse | | Forsvar/nasjonal sikkerhet | Sovereign Private Cloud (Azure Local) | Full kontroll, air-gapped | | Flerparts-analyse mellom etater | Confidential Computing pa SPC | Verifiserbar isolasjon | | Compliance-kritisk AI | SPC + Compliance Manager + Audit trails | Dokumenterbar etterlevelse | | Hybrid sky + on-prem | Azure Arc + SLZ | Enhetlig forvaltning | --- ## For Cosmo - **Sovereign Landing Zone er den korrekte startarkitekturen** for alle AI-prosjekter i norsk offentlig sektor — deploy SLZ med Sovereignty Baseline Policies som forste steg - **Norway East er primary-regionen for AI** — alle Azure AI-tjenester inkludert OpenAI og Confidential VMs er tilgjengelig der, med Norway West for DR - **Customer-Managed Keys (CMK) via Managed HSM er et minimum** for sovereign AI — dette gir kundekontrollert kryptering og tilfredsstiller NSM-krav - **Vendor lock-in-mitigering er pabudt** ifoolge Digdirs arkitekturprinsipper — bruk ONNX, open-source SLM (Phi), og Infrastructure-as-Code for a sikre portabilitet - **Transparency Logs og Compliance Manager er kritiske for revisjon** — norsk offentlig sektor ma kunne dokumentere operatoertilgang og compliance-status for Riksrevisjonen og Datatilsynet