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>
375 lines
16 KiB
Markdown
375 lines
16 KiB
Markdown
# 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
|