ms-ai-architect/skills/ms-ai-infrastructure/references/hybrid-edge/azure-confidential-computing-ai.md
Kjell Tore Guttormsen ddce43d8b2 feat(ms-ai-architect): Spor 1 — Port-1-substrat migrert på 4 ikke-advisor-skills (243 Source + 327 Type + 325 TOC + stale-verified poison fjernet) [skip-docs]
Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/
infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk
(fra første ## seksjon), advisor urørt (0 endringer).

To applier-fixes oppdaget under kjøring (TDD, RED→GREEN):
- insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer
  500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor
  scan-vinduet, applierens post-write-assertion fanget + restaurerte).
- normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i
  500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var
  ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent
  utvidelse av carve-out; kun stray metadata-linjer, aldri prosa.

test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet
(fila bærer nå Source). Suite 728/728 grønn.
2026-07-04 10:19:11 +02:00

379 lines
14 KiB
Markdown

# Azure Confidential Computing for AI
**Last updated:** 2026-02
**Status:** GA
**Category:** Hybrid Cloud & Edge AI
**Type:** reference
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter](#kjernekomponenter)
- [TEE-Enabled Model Execution](#tee-enabled-model-execution)
- [Encrypted Inference Pipelines](#encrypted-inference-pipelines)
- [Attestation for Compliance](#attestation-for-compliance)
- [Performance Trade-offs](#performance-trade-offs)
- [Norsk offentlig sektor](#norsk-offentlig-sektor)
- [Beslutningsrammeverk](#beslutningsrammeverk)
- [For Cosmo](#for-cosmo)
## Introduksjon
Azure Confidential Computing (ACC) beskytter data under prosessering (data-in-use) ved hjelp av hardware-baserte Trusted Execution Environments (TEE). For AI-arbeidsbelastninger betyr dette at modeller og inferensdata kan beskyttes mot uautorisert tilgang — inkludert fra skyoperatoren selv. Dette er en gamechanger for organisasjoner som prosesserer sensitive data med AI.
For norsk offentlig sektor losner ACC en fundamental utfordring: hvordan bruke sky-basert AI-kraftig hardware (GPU-er, akseleratorer) for sensitive data uten a kompromittere datasikkerheten. NSM Grunnprinsipper og Schrems II-krav kan ivaretas ved at data aldri eksisteres i klartekst utenfor TEE — selv Microsoft som skyoperator kan ikke se dataene.
Microsoft tilbyr flere ACC-tilbud for AI: Confidential VMs basert pa AMD SEV-SNP for CPU-baserte arbeidsbelastninger, Confidential GPU VMs med NVIDIA H100 for GPU-akselerert AI, Confidential Containers pa ACI og AKS, og Azure Attestation for verifisering av TEE-integritet.
---
## Kjernekomponenter
| Komponent | Formal | Teknologi |
|-----------|--------|-----------|
| AMD SEV-SNP | Minnesikring for hele VM | CPU-basert TEE |
| Intel TDX | Trust Domain Extensions for VM-isolasjon | CPU-basert TEE (Preview) |
| Intel SGX | Application-level enclaves | Enclave-basert TEE |
| NVIDIA H100 TEE | GPU-basert confidential computing | Confidential GPU VM |
| Azure Attestation | Verifisering av TEE-tilstand | PaaS-tjeneste |
| Confidential VMs | Kryptert VM-minne | DCasv5, ECasv5, NCCadsH100v5 |
| Confidential Containers | Container-isolasjon i TEE | ACI, AKS |
| Azure Key Vault mHSM | Nokkelhandtering i HSM | FIPS 140-2 Level 3 |
---
## TEE-Enabled Model Execution
### Confidential VM for AI-inferens
```bash
# Opprett Confidential VM for AI-arbeidslast (AMD SEV-SNP)
az vm create \
--resource-group rg-confidential-ai \
--name vm-confidential-inference \
--image "Canonical:0001-com-ubuntu-confidential-vm-jammy:22_04-lts-cvm:latest" \
--size Standard_DC4as_v5 \
--security-type ConfidentialVM \
--os-disk-security-encryption-type VMGuestStateOnly \
--enable-vtpm true \
--enable-secure-boot true \
--admin-username azureuser \
--generate-ssh-keys
# Installer AI runtime
az vm run-command invoke \
--resource-group rg-confidential-ai \
--name vm-confidential-inference \
--command-id RunShellScript \
--scripts "
pip install onnxruntime torch transformers
# Modell og data er kryptert i minnet av AMD SEV-SNP
"
```
### Confidential GPU VM for AI (NVIDIA H100)
```bash
# Opprett Confidential GPU VM med NVIDIA H100 TEE
az vm create \
--resource-group rg-confidential-ai \
--name vm-confidential-gpu \
--image "microsoft-dsvm:ubuntu-hpc:2204:latest" \
--size Standard_NCCads_H100_v5 \
--security-type ConfidentialVM \
--os-disk-security-encryption-type DiskWithVMGuestState \
--enable-vtpm true \
--admin-username azureuser \
--generate-ssh-keys
```
### Linked CPU-GPU TEE-arkitektur
```
┌─────────────────────────────────────────┐
│ Confidential GPU VM │
│ │
│ ┌──────────────┐ ┌────────────────┐ │
│ │ CPU TEE │ │ GPU TEE │ │
│ │ (AMD SNP) │←→│ (NVIDIA H100) │ │
│ │ │ │ │ │
│ │ - Datainntak │ │ - Inferens │ │
│ │ - Pre/post │ │ - Training │ │
│ │ - Orkestrering│ │ - Tensor ops │ │
│ └──────────────┘ └────────────────┘ │
│ ↑ ↑ │
│ Kryptert minne Kryptert VRAM │
│ (aldri i klartekst utenfor TEE) │
└─────────────────────────────────────────┘
```
---
## Encrypted Inference Pipelines
### End-to-end kryptert inferens
```python
# Confidential inferens med attestation-basert nokkelfrigivelse
from azure.identity import DefaultAzureCredential
from azure.keyvault.keys import KeyClient
from azure.attestation import AttestationClient
import onnxruntime as ort
class ConfidentialInferencePipeline:
def __init__(self):
self.credential = DefaultAzureCredential()
self.attestation_client = AttestationClient(
endpoint="https://sharedeus.eus.attest.azure.net",
credential=self.credential
)
async def run_confidential_inference(self, encrypted_input: bytes) -> bytes:
"""Kjor inferens med end-to-end kryptering"""
# Steg 1: Generer TEE-attestasjonsrapport
attestation_report = self._generate_attestation()
# Steg 2: Hent dekrypteringsnokkel via Secure Key Release (SKR)
decryption_key = await self._secure_key_release(attestation_report)
# Steg 3: Dekrypter input innenfor TEE
# (Data er kun i klartekst innenfor TEE-minnet)
plaintext_input = self._decrypt_in_tee(encrypted_input, decryption_key)
# Steg 4: Kjor inferens
result = self._run_model(plaintext_input)
# Steg 5: Krypter output for returnerning
encrypted_output = self._encrypt_in_tee(result, decryption_key)
return encrypted_output
def _generate_attestation(self) -> dict:
"""Generer hardware-attestasjonsrapport fra AMD SEV-SNP"""
# Hent SNP attestation report fra /dev/sev-guest
# Rapporten inkluderer:
# - Platform-versjon og firmware
# - VM measurement (hash av VM-konfigurasjon)
# - Runtime measurement
import subprocess
report = subprocess.run(
["snp-report", "--format", "json"],
capture_output=True, text=True
)
return {
"snp_report": report.stdout,
"runtime_data": self._get_runtime_claims()
}
async def _secure_key_release(self, attestation: dict) -> bytes:
"""Frigivelse av nokkel basert pa attestasjon"""
# Azure Attestation verifiserer TEE-tilstand
result = self.attestation_client.attest_snp_vm(
report=attestation["snp_report"],
runtime_data=attestation["runtime_data"]
)
# Kun hvis attestasjon er gyldig, frigir Key Vault nokkelen
key_client = KeyClient(
vault_url="https://myvault.vault.azure.net",
credential=self.credential
)
return key_client.release_key(
name="inference-key",
target_attestation_token=result.token
)
```
### Confidential Containers for AI
```yaml
# Confidential container deployment pa Azure Container Instances
# Container-gruppen kjorer i AMD SEV-SNP TEE
apiVersion: 2023-05-01
name: confidential-inference
location: norwayeast
properties:
confidentialComputeProperties:
ccePolicy: "<base64-encoded-rego-policy>"
containers:
- name: inference-engine
properties:
image: myregistry.azurecr.io/confidential-inference:v1
resources:
requests:
cpu: 4
memoryInGB: 16
environmentVariables:
- name: MODEL_PATH
value: /models/encrypted_model.enc
- name: ATTESTATION_ENDPOINT
value: "https://sharedneu.neu.attest.azure.net"
volumeMounts:
- name: model-volume
mountPath: /models
osType: Linux
sku: Confidential
volumes:
- name: model-volume
azureFile:
shareName: encrypted-models
storageAccountName: mystorageaccount
```
---
## Attestation for Compliance
### Azure Attestation-flyten
```
┌──────────┐ ┌───────────────┐ ┌──────────────┐
│ TEE/CVM │────→│ Azure │────→│ Relying │
│ │ │ Attestation │ │ Party │
│ Generer │ │ │ │ │
│ Evidence │ │ Verifiser │ │ Frigir data/ │
│ │ │ Evaluer policy│ │ noekler │
└──────────┘ └───────────────┘ └──────────────┘
```
### Attestasjonspolicy for AI-arbeidsbelastninger
```json
// SKR-policy for Confidential AI VM
{
"version": "1.0.0",
"anyOf": [
{
"authority": "https://sharedneu.neu.attest.azure.net",
"allOf": [
{
"claim": "x-ms-compliance-status",
"equals": "azure-compliant-cvm"
},
{
"claim": "x-ms-sevsnpvm-is-debuggable",
"equals": "false"
},
{
"claim": "x-ms-sevsnpvm-vmpl",
"equals": "0"
},
{
"claim": "x-ms-isolation-tee.x-ms-attestation-type",
"equals": "sevsnpvm"
}
]
}
]
}
```
### Compliance-rapportering
```python
# Generer compliance-rapport for confidential AI
class ConfidentialAIComplianceReport:
def generate_report(self) -> dict:
return {
"platform": {
"type": "Azure Confidential VM",
"tee": "AMD SEV-SNP",
"firmware_version": self._get_firmware_version(),
"attestation_status": "verified"
},
"data_protection": {
"encryption_at_rest": "AES-256 (Customer-managed key)",
"encryption_in_transit": "TLS 1.3",
"encryption_in_use": "AMD SEV-SNP memory encryption",
"key_management": "Azure Key Vault Managed HSM"
},
"access_control": {
"operator_access": "Denied (TEE-enforced)",
"attestation_required": True,
"secure_key_release": True
},
"compliance_frameworks": [
"GDPR Art. 32 (data-in-use protection)",
"Schrems II (operator cannot access data)",
"NSM Grunnprinsipper (kryptering ved bruk)",
"ISO 27001 A.10 (cryptographic controls)"
],
"audit_trail": {
"attestation_logs": "Azure Monitor",
"key_release_logs": "Key Vault audit log",
"inference_metadata": "Application Insights"
}
}
```
---
## Performance Trade-offs
### Ytelsespavirkning av Confidential Computing
| Arbeidsbelastning | Uten CC | Med CC (CPU TEE) | Med CC (GPU TEE) | Overhead |
|-------------------|---------|-------------------|-------------------|----------|
| ONNX inferens (CPU) | 10 ms | 11-12 ms | N/A | 10-20% |
| PyTorch inferens (GPU) | 5 ms | N/A | 5.5-6 ms | 10-20% |
| LLM generering (GPU) | 30 tok/s | N/A | 25-28 tok/s | 7-17% |
| Embedding-generering | 50 ms/batch | 55-60 ms/batch | 52-55 ms/batch | 4-20% |
| Modell-lasting | 5 s | 7-8 s | 6-7 s | 20-40% |
### Optimalisering for lavere overhead
| Optimalisering | Beskrivelse | Forventet forbedring |
|----------------|-------------|---------------------|
| Batching | Samle flere inferensforesp. | Amortiser TEE-overhead |
| Model caching | Hold modell i TEE-minne | Unnga re-dekryptering |
| Forhands-attestasjon | Cache attestasjonstoken | Reduser latens per kall |
| NUMA-optimalisering | Pin til korrekt NUMA-node | Bedre minneytelse |
| Hugepage-allokering | Bruk store minnesider | Reduser TLB-misser |
---
## Norsk offentlig sektor
### Hvorfor Confidential Computing for norsk offentlig AI?
- **Schrems II-kompatibilitet**: Data er kryptert under prosessering — selv Microsoft kan ikke se innholdet, noe som adresserer europeisk personvernlovgivning
- **NSM-krav**: Grunnprinsipper for IKT-sikkerhet krever kryptering, og CC utvider dette til data-in-use
- **Flerpartisanalyse**: Kommuner og etater kan analysere data sammen uten a eksponere radata for hverandre
- **AI pa sensitive data**: Helsedata (pasientjournaler), persondata (NAV), og justisdata kan prosesseres med AI uten a kompromittere personvern
### Bruksscenarier
| Etat | Scenario | CC-komponent |
|------|----------|--------------|
| NAV | AI-analyse av soknader med persondata | Confidential VM |
| Helsedirektoratet | Prediktiv analyse pa helsejournaler | Confidential GPU VM |
| Politiet | Biometrisk matching | SGX enclaves |
| Skatteetaten | Fraud detection pa skattedata | Confidential Containers |
| Kommuner | Flerparts-analyse av velferdsdata | Confidential ACI |
---
## Beslutningsrammeverk
| Scenario | Anbefaling | Begrunnelse |
|----------|------------|-------------|
| CPU-basert AI, enkel migrasjon | Confidential VM (SEV-SNP) | Ingen kodeendringer |
| GPU-akselerert AI, hoy ytelse | NCCadsH100v5 Confidential GPU VM | Linked CPU+GPU TEE |
| Container-baserte mikrotjenester | Confidential Containers pa ACI/AKS | Container-policy-basert sikkerhet |
| Application-level isolasjon | Intel SGX enclaves | Minst mulig TCB |
| Flerpartssanalyse | Confidential Containers + Attestation | Verifiserbar isolasjon |
| Strengeste compliance-krav | Confidential GPU + mHSM + Attestation | Full stack confidentiality |
---
## For Cosmo
- **Confidential Computing losner data-in-use-problemet for sky-AI** — anbefal Confidential VMs (AMD SEV-SNP) som forste steg for organisasjoner som noler med sky-AI pa grunn av datasikkerhetshensyn
- **Ytelsesoverhead er typisk 10-20%** — dette er akseptabelt for de fleste arbeidsbelastninger og kan optimaliseres med batching og modell-caching innenfor TEE
- **Azure Attestation + Secure Key Release er pabudt for compliance** — modeller og data bor kun dekrypteres etter vellykket attestasjon som beviser at arbeidsmiljoet er integert
- **For norsk offentlig sektor: Confidential GPU VMs (H100) er den mest lovende losningen** for a kjore avansert AI pa sensitive data i skyen — den kombinerer GPU-ytelse med TEE-beskyttelse
- **Dokumenter alltid TEE-stack, attestasjonspolicy og nokkelhandtering** i sikkerhetsarkitekturen — dette er konkret bevis for compliance i DPIA og sikkerhetsrevisjoner