# 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 ```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: "" 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