Azure Confidential Computing for AI
Last updated: 2026-02
Status: GA
Category: Hybrid Cloud & Edge AI
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
# 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)
# 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
# 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
# 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
// 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
# 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