Delen via


Invoegtoepassing confidential computing voor vertrouwelijke VM's

Azure Kubernetes Service (AKS) biedt een invoegtoepassing voor virtuele machines (VM's) van Azure Confidential Computing. De invoegtoepassing, confcomis een daemonset. De invoegtoepassing wordt alleen uitgevoerd voor vertrouwelijke SGX-VM's (Intel Software Guard Extensions) in een AKS-cluster. Deze invoegtoepassing is geregistreerd op het niveau van het AKS-cluster. U kunt de invoegtoepassing gebruiken om eenvoudig vertrouwelijke knooppunten te beheren. Schakel de invoegtoepassing in op uw AKS-cluster voordat u begint.

Intel SGX-apparaatinvoegtoepassing voor AKS

De SGX-apparaatinvoegtoepassing implementeert de Interface van de Kubernetes-apparaatinvoegtoepassing voor EPC-geheugen (Enclave Page Cache). In feite maakt deze invoegtoepassing EPC-geheugen een ander resourcetype in Kubernetes. Gebruikers kunnen limieten opgeven voor EPC, net als andere resources. Naast de planningsfunctie kan SGX met behulp van de apparaatinvoegtoepassing machtigingen voor apparaatstuurprogramma's toewijzen aan de containers voor vertrouwelijke werkbelastingen. Er is een voorbeeldimplementatie van de implementatie op basis van het EPC-geheugen (kubernetes.azure.com/sgx_epc_mem_in_MiB) beschikbaar.

PSW met SGX offerte helper

Enclavetoepassingen die externe attestation uitvoeren, moeten een offerte genereren. De offerte biedt cryptografisch bewijs van de identiteit en de status van de toepassing, samen met de hostomgeving van de enclave. Het genereren van offertes is afhankelijk van bepaalde vertrouwde softwareonderdelen van Intel, die deel uitmaken van de SGX Platform Software Components (PSW/DCAP). Deze PSW is verpakt als een daemonset die per knooppunt wordt uitgevoerd. U kunt PSW gebruiken bij het aanvragen van een attestation-offerte van enclave-apps. Het gebruik van de geleverde AKS-service helpt de compatibiliteit tussen de PSW en andere SW-onderdelen in de host beter te onderhouden. Lees de details van de functie hieronder.

Enclave-toepassingen die externe attestation uitvoeren, vereisen een gegenereerde offerte. Deze offerte biedt cryptografisch bewijs van de identiteit, status en actieve omgeving van de toepassing. Voor de generatie zijn vertrouwde softwareonderdelen vereist die deel uitmaken van de PSW van Intel.

Overzicht

Notitie

Deze functie is alleen vereist voor DCV2/DCsv3-VM's die gebruikmaken van gespecialiseerde Intel SGX-hardware.

Intel ondersteunt twee attestation-modi om de offertegeneratie uit te voeren. Zie de [verschillen van attestation-type] (#attestation-typeverschillen) voor informatie over het kiezen van welk type.

  • in-proc: host de vertrouwde softwareonderdelen in het enclavetoepassingsproces. Deze methode is handig wanneer u lokale attestation uitvoert (tussen 2 enclave-apps in één VM-knooppunt)

  • out-of-proc: de vertrouwde softwareonderdelen worden gehost buiten de enclavetoepassing. Dit is een voorkeursmethode bij het uitvoeren van externe attestation.

SGX-toepassingen worden gebouwd met behulp van open enclave-SDK. Gebruik standaard de attestation-modus in-proc. Op SGX gebaseerde toepassingen staan out-of-proc toe en vereisen extra hosting. Deze toepassingen maken de vereiste onderdelen beschikbaar, zoals Architectural Enclave Service Manager (AESM), buiten de toepassing.

Het wordt ten zeerste aanbevolen om deze functie te gebruiken. Deze functie verbetert de uptime voor uw enclave-apps tijdens updates van Intel Platform of DCAP-stuurprogramma-updates.

Verschillen tussen attestation-typen

Er zijn geen updates vereist voor onderdelen van het genereren van offertes van PSW voor elke containertoepassing.

Bij out-of-proc hoeven containereigenaren geen updates binnen hun container te beheren. Containereigenaren vertrouwen in plaats daarvan op de opgegeven interface die de gecentraliseerde service buiten de container aanroept.

Voor out-of-proc is er geen probleem met storingen vanwege verouderde PSW-onderdelen. Het genereren van de offerte wordt uitgevoerd met de vertrouwde softwareonderdelen: Quoting Enclave (QE) en Provisioning Certificate Enclave (PCE), die deel uitmaken van de Trusted Computing Base (TCB). Deze softwareonderdelen moeten up-to-date zijn om aan de attestation-vereisten te blijven voldoen. De provider beheert de updates voor deze onderdelen. Klanten hebben nooit te maken met attestation-fouten vanwege verouderde vertrouwde SW-onderdelen in hun container.

Out-of-proc maakt beter gebruik van EPC-geheugen. In de in-proc attestation-modus wordt met elke enclavetoepassing de kopie van QE en PCE geïnstitueert voor externe attestation. Met out-of-proc host de container deze enclaves niet en verbruikt het enclavegeheugen niet van het containerquotum.

Er zijn ook beveiligingen tegen kernelhandhaving. Wanneer het SGX-stuurprogramma naar de Linux-kernel wordt gestreamd, heeft een enclave een hogere bevoegdheid. Met deze bevoegdheid kan de enclave PCE aanroepen, waardoor de enclavetoepassing die wordt uitgevoerd in de in-proc-modus wordt verbroken. Enclaves krijgen deze machtiging standaard niet. Voor het verlenen van deze bevoegdheid aan een enclavetoepassing moeten wijzigingen in het installatieproces van de toepassing worden aangebracht. De provider van de service die out-of-proc-aanvragen verwerkt, zorgt ervoor dat de service met deze bevoegdheid is geïnstalleerd.

U hoeft niet te controleren op achterwaartse compatibiliteit met PSW en DCAP. De provider valideert updates voor de onderdelen van de prijsopgavegeneratie van PSW voor achterwaartse compatibiliteit. Deze stap verwerkt compatibiliteitsproblemen vooraf en lost deze op voordat updates voor vertrouwelijke workloads worden geïmplementeerd.

Attestation out-of-proc voor vertrouwelijke workloads

Het out-of-proc attestation-model werkt voor vertrouwelijke workloads. De offerteaanvraag en offertegeneratie worden afzonderlijk uitgevoerd, maar op dezelfde fysieke machine. Het genereren van offertes vindt plaats op een gecentraliseerde manier en dient aanvragen voor QUOTES van alle entiteiten. Definieer de interface op de juiste manier en maak de interface detecteerbaar voor elke entiteit om aanhalingstekens aan te vragen.

Diagram van offerteaanvraag- en offertegeneratie-interface.

Het abstracte model is van toepassing op scenario's met vertrouwelijke werkbelastingen. Dit model maakt gebruik van de al beschikbare AESM-service. AESM wordt in een container geplaatst en geïmplementeerd als een daemon die is ingesteld in het Kubernetes-cluster. Kubernetes garandeert één exemplaar van een AESM-servicecontainer, verpakt in een pod, die op elk agentknooppunt moet worden geïmplementeerd. De nieuwe SGX Quote-daemonset heeft een afhankelijkheid van de sgx-device-plugin daemonset, omdat de AESM-servicecontainer EPC-geheugen sgx-device-plugin aanvraagt voor het starten van QE- en PCE-enclaves.

Elke container moet zich aanmelden om out-of-proc aanhalingstekens te genereren door de omgevingsvariabele SGX_AESM_ADDR=1 in te stellen tijdens het maken. De container moet ook het pakket libsgx-quote-exbevatten, waarmee de aanvraag wordt doorsturen naar de standaard-Unix-domeinsocket

Een toepassing kan nog steeds de attestation in-proc gebruiken zoals voorheen. U kunt echter niet tegelijkertijd zowel in-proc als out-of-proc in een toepassing gebruiken. De out-of-proc infrastructuur is standaard beschikbaar en verbruikt resources.

Notitie

Als u een Intel SGX-wrappersoftware (OSS/ISV) gebruikt om uw ongewijzigde containers uit te voeren, wordt de attestation-interactie met hardware doorgaans verwerkt voor uw apps op een hoger niveau. Raadpleeg de attestation-implementatie per provider.

Voorbeeld van implementatie

Deze service is standaard niet ingeschakeld voor uw AKS-cluster met de invoegtoepassing Confcom. Werk de invoegtoepassing bij met de onderstaande opdracht

az aks addon update --addon confcom --name " YourAKSClusterName " --resource-group "YourResourceGroup " --enable-sgxquotehelper

Zodra de service is ingeschakeld, gebruikt u het onderstaande Docker-voorbeeld voor een Open Enclave-toepassing om de stroom te valideren. Stel de SGX_AESM_ADDR=1 omgevingsvariabele in het Docker-bestand in. Of stel de variabele in het implementatiebestand in. Volg dit voorbeeld voor de YAML-details van het Docker-bestand en de implementatie.

Notitie

Het package bibliothekengx-quote-ex van Intel moet worden verpakt in de toepassingscontainer om out-of-proc attestation goed te laten werken. De onderstaande instructies bevatten de details.

# Refer to Intel_SGX_Installation_Guide_Linux for detail
FROM ubuntu:18.04 as sgx_base
RUN apt-get update && apt-get install -y \
    wget \
    gnupg

# Add the repository to sources, and add the key to the list of
# trusted keys used by the apt to authenticate packages
RUN echo "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu bionic main" | tee /etc/apt/sources.list.d/intel-sgx.list \
    && wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add -
# Add Microsoft repo for az-dcap-client
RUN echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main" | tee /etc/apt/sources.list.d/msprod.list \
    && wget -qO - https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

FROM sgx_base as sgx_sample
RUN apt-get update && apt-get install -y \
    clang-7 \
    libssl-dev \
    gdb \
    libprotobuf10 \
    libsgx-dcap-ql \
    libsgx-quote-ex \
    az-dcap-client \
    open-enclave
WORKDIR /opt/openenclave/share/openenclave/samples/attestation
RUN . /opt/openenclave/share/openenclave/openenclaverc \
    && make build
# this sets the flag for out of proc attestation mode, alternatively you can set this flag on the deployment files
ENV SGX_AESM_ADDR=1 

CMD make run

Stel in plaats daarvan de attestation-modus out-of-proc in het YAML-implementatiebestand als volgt in:

apiVersion: batch/v1
kind: Job
metadata:
  name: sgx-test
spec:
  template:
    spec:
      containers:
      - name: sgxtest
        image: <registry>/<repository>:<version>
        env:
        - name: SGX_AESM_ADDR
          value: 1
        resources:
          limits:
            kubernetes.azure.com/sgx_epc_mem_in_MiB: 10
        volumeMounts:
        - name: var-run-aesmd
          mountPath: /var/run/aesmd
      restartPolicy: "Never"
      volumes:
      - name: var-run-aesmd
        hostPath:
          path: /var/run/aesmd

De implementatie moet slagen en uw apps toestaan om externe attestation uit te voeren met behulp van de SGX Quote Helper-service.

Volgende stappen