Dela via


Plugin-program för konfidentiell databehandling för konfidentiella virtuella datorer

Azure Kubernetes Service (AKS) tillhandahåller ett plugin-program för virtuella datorer (VM) för konfidentiell databehandling i Azure. Plugin-programmet , confcomär en daemonuppsättning. Plugin-programmet körs endast för konfidentiella virtuella Datorer med Intel Software Guard-tillägg (SGX) i ett AKS-kluster. Det här plugin-programmet är registrerat på AKS-klusternivå. Du kan enkelt använda plugin-programmet för att hantera konfidentiella noder. Aktivera till plugin-program i AKS-klustret innan du börjar.

Plugin-program för Intel SGX-enheter för AKS

Plugin-programmet för SGX-enheter implementerar Kubernetes-enhetens plugin-gränssnitt för EPC-minne (Enclave Page Cache). I själva verket gör det här plugin-programmet EPC-minnet till en annan resurstyp i Kubernetes. Användare kan ange gränser för EPC precis som andra resurser. Förutom schemaläggningsfunktionen hjälper plugin-programmet till att tilldela SGX-enhetsdrivrutinsbehörigheter till konfidentiella arbetsbelastningscontainrar. En exempelimplementering av den minnesbaserade EPC-distributionen (kubernetes.azure.com/sgx_epc_mem_in_MiB) är tillgänglig.

PSW med hjälp av SGX-citat

Enklaverprogram som utför fjärrattestering måste generera en offert. Offerten innehåller kryptografiska bevis på programmets identitet och tillstånd, tillsammans med enklavens värdmiljö. Offertgenereringen förlitar sig på vissa betrodda programvarukomponenter från Intel, som ingår i SGX Platform Software Components (PSW/DCAP). Denna PSW paketeras som en daemonuppsättning som körs per nod. Du kan använda PSW när du begär attesteringsoffert från enklaverappar. Med hjälp av den AKS-tillhandahållna tjänsten kan du bättre upprätthålla kompatibiliteten mellan PSW- och andra SW-komponenter i värden. Läs funktionsinformationen nedan.

Enklaverprogram som utför fjärrattestering kräver en genererad offert. Det här citatt ger kryptografiskt bevis på programmets identitet, tillstånd och körningsmiljö. Genereringen kräver betrodda programvarukomponenter som ingår i Intels PSW.

Översikt

Kommentar

Den här funktionen krävs endast för virtuella DCsv2/DCsv3-datorer som använder specialiserad Intel SGX-maskinvara.

Intel har stöd för två attesteringslägen för att köra citatgenereringen. Information om hur du väljer vilken typ finns i [skillnader av attesteringstyp] (#attestation-typ-skillnader).

  • in-proc: är värd för de betrodda programvarukomponenterna i enklavprogrammet. Den här metoden är användbar när du utför lokal attestering (mellan två enklaverappar i en enda VM-nod)

  • out-of-proc: är värd för de betrodda programvarukomponenterna utanför enklaverprogrammet. Det här är en föredragen metod när du utför fjärrattestering.

SGX-program skapas med Open Enclave SDK som standard i läget för attestering i processen. SGX-baserade program tillåter out-of-proc och kräver extra värd. Dessa program exponerar nödvändiga komponenter, till exempel Architectural Enclave Service Manager (AESM), utanför programmet.

Vi rekommenderar starkt att du använder den här funktionen. Den här funktionen förbättrar drifttiden för dina enklaverappar under Uppdateringar av Intel Platform eller DCAP-drivrutinsuppdateringar.

Skillnader i attesteringstyp

Inga uppdateringar krävs för offertgenereringskomponenter i PSW för varje containerbaserat program.

Med out-of-proc behöver containerägare inte hantera uppdateringar i containern. Containerägare förlitar sig i stället på det angivna gränssnittet som anropar den centraliserade tjänsten utanför containern.

För inaktuella fel finns det inga problem med fel på grund av inaktuella PSW-komponenter. Citatgenereringen omfattar de betrodda SW-komponenterna – Quoting Enclave (QE) och Provisioning Certificate Enclave (PCE), som ingår i den betrodda beräkningsbasen (TCB). Dessa SW-komponenter måste vara uppdaterade för att upprätthålla attesteringskraven. Providern hanterar uppdateringarna av dessa komponenter. Kunder behöver aldrig hantera attesteringsfel på grund av inaktuella betrodda SW-komponenter i containern.

Out-of-proc använder EPC-minne bättre. I in-proc-attesteringsläge instansierar varje enklavprogram kopian av QE och PCE för fjärrattestering. Med out-of-proc är containern inte värd för dessa enklaver och förbrukar inte enklaverminne från containerkvoten.

Det finns också skydd mot kerneltillämpning. När SGX-drivrutinen strömmas upp till Linux-kerneln har en enklav högre behörighet. Med det här privilegiet kan enklaven anropa PCE, vilket bryter enklaverprogrammet som körs i proc-läge. Som standard får enklaver inte den här behörigheten. Om du beviljar den här behörigheten till ett enklavprogram krävs ändringar i programinstallationsprocessen. Providern av tjänsten som hanterar begäranden som inte fungerar ser till att tjänsten är installerad med den här behörigheten.

Du behöver inte söka efter bakåtkompatibilitet med PSW och DCAP. Providern validerar uppdateringar av offertgenereringskomponenterna i PSW för bakåtkompatibilitet. Det här steget hanterar kompatibilitetsproblem i förväg och åtgärdar dem innan uppdateringar för konfidentiella arbetsbelastningar distribueras.

Out-of-proc-attestering för konfidentiella arbetsbelastningar

Attesteringsmodellen som inte fungerar fungerar för konfidentiella arbetsbelastningar. Offertförfrågan och offertgenereringen körs separat, men på samma fysiska dator. Citatgenereringen sker på ett centraliserat sätt och hanterar begäranden om CITAT FRÅN alla entiteter. Definiera gränssnittet korrekt och gör gränssnittet identifierbart för alla entiteter att begära offerter.

Diagram över gränssnittet för offertförfrågan och offertgenerering.

Den abstrakta modellen gäller för scenarier med konfidentiella arbetsbelastningar. Den här modellen använder den redan tillgängliga AESM-tjänsten. AESM containeriseras och distribueras som en daemonuppsättning i Kubernetes-klustret. Kubernetes garanterar att en enda instans av en AESM-tjänstcontainer, omsluten i en podd, distribueras på varje agentnod. Den nya daemonuppsättningen SGX Quote har ett beroende av daemonuppsättningen sgx-device-plugin , eftersom AESM-tjänstcontainern skulle begära EPC-minne från sgx-device-plugin för att starta QE- och PCE-enklaver.

Varje container måste välja att använda generering av citattecken som inte används genom att ange miljövariabeln SGX_AESM_ADDR=1 när den skapas. Containern måste också innehålla paketet libsgx-quote-ex, som dirigerar begäran till unix-standarddomänsocket

Ett program kan fortfarande använda in-proc-attesteringen som tidigare. Du kan dock inte samtidigt använda både in-proc och out-of-proc i ett program. Out-of-proc-infrastrukturen är tillgänglig som standard och förbrukar resurser.

Kommentar

Om du använder en Intel SGX-omslutningsprogramvara (OSS/ISV) för att köra dina oförändrade containrar hanteras vanligtvis attesteringsinteraktionen med maskinvaran för dina appar på högre nivå. Se attesteringsimplementeringen per provider.

Exempelimplementering

Som standard är den här tjänsten inte aktiverad för ditt AKS-kluster med tillägget "confcom". Uppdatera tillägget med kommandot nedan

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

När tjänsten är igång använder du dockerexemplet nedan för ett Open Enclave-baserat program för att verifiera flödet. SGX_AESM_ADDR=1 Ange miljövariabeln i Docker-filen. Eller ange variabeln i distributionsfilen. Följ det här exemplet för Docker-filen och YAML-distributionsinformationen.

Kommentar

Paketet libsgx-quote-ex från Intel måste paketeras i programcontainern för att det inte ska fungera korrekt. Anvisningarna nedan innehåller informationen.

# 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

Ställ i stället in attesteringsläget för inaktivt läge i YAML-distributionsfilen på följande sätt:

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

Distributionen bör lyckas och göra det möjligt för dina appar att utföra fjärrattestering med hjälptjänsten SGX Quote.

Nästa steg