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
// 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
# 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
# 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
## 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