Modul plug-in důvěrného výpočetního prostředí pro důvěrné virtuální počítače

Azure Kubernetes Service (AKS) poskytuje modul plug-in pro důvěrné výpočetní virtuální počítače Azure. Modul plug-in, confcomje sada démonů. Modul plug-in běží jenom pro důvěrné virtuální počítače Intel Software Guard Extensions (SGX) v clusteru AKS. Tento modul plug-in je zaregistrovaný na úrovni clusteru AKS. Modul plug-in můžete použít ke správě důvěrných uzlů. Než začnete, povolte modul plug-in v clusteru AKS.

Modul plug-in Zařízení Intel SGX pro AKS

Modul plug-in zařízení SGX implementuje rozhraní modulu plug-in zařízení Kubernetes pro paměť enklávy Page Cache (EPC). V důsledku tohoto modulu plug-in je paměť EPC v Kubernetes dalším typem prostředku. Uživatelé můžou specifikovat limity pro EPC stejně jako jiné prostředky. Kromě funkce plánování pomáhá modul plug-in zařízení přiřadit oprávnění ovladače zařízení SGX k důvěrným kontejnerům úloh. K dispozici je ukázková implementace nasazení založeného na paměti EPC (kubernetes.azure.com/sgx_epc_mem_in_MiB).

PSW s pomocným pomocníkem nabídky SGX

Enklávové aplikace, které dělají vzdálenou ověření identity, musí vygenerovat nabídku. Nabídka poskytuje kryptografický důkaz identity a stavu aplikace spolu s hostitelským prostředím enklávy. Generování nabídek spoléhá na některé důvěryhodné softwarové komponenty od Společnosti Intel, které jsou součástí softwarových komponent platformy SGX (PSW/DCAP). Tento psW je zabalený jako sada démon, která běží na jednotlivých uzlech. PsW můžete použít při vyžádání citace ověření identity z aplikací enklávy. Použití poskytované služby AKS pomáhá lépe udržovat kompatibilitu mezi PSW a dalšími komponentami SW v hostiteli. Přečtěte si podrobnosti o funkcích níže.

Enklávy aplikací , které dělají vzdálenou ověření identity, vyžadují vygenerovanou uvozovku. Tato nabídka poskytuje kryptografický důkaz o identitě, stavu a spuštěném prostředí aplikace. Generace vyžaduje důvěryhodné softwarové komponenty, které jsou součástí PSW společnosti Intel.

Přehled

Poznámka:

Tato funkce se vyžaduje jenom pro virtuální počítače DCsv2/DCsv3, které používají specializovaný hardware Intel SGX.

Intel podporuje dva režimy ověření identity ke spuštění generování nabídky. Postup výběru typu najdete v tématu [Rozdíly typů ověření identity] (#attestation-typ-rozdíly).

  • in-proc: hostuje důvěryhodné softwarové komponenty uvnitř procesu aplikace enklávy. Tato metoda je užitečná, když provádíte místní ověření identity (mezi 2 aplikacemi enklávy v jednom uzlu virtuálního počítače).

  • out-of-proc: hostuje důvěryhodné softwarové komponenty mimo aplikaci enklávy. Toto je upřednostňovaná metoda při vzdáleném ověření identity.

Aplikace SGX se vytvářejí pomocí sady Open Enclave SDK ve výchozím nastavení v režimu ověření identity v proc. Aplikace založené na SGX umožňují out-of-proc a vyžadují další hostování. Tyto aplikace zpřístupňují požadované komponenty, jako je Architektura Enklave Service Manager (AESM), externí pro aplikaci.

Tuto funkci důrazně doporučujeme použít. Tato funkce vylepšuje dobu provozu aplikací enklávy během aktualizací intel platform nebo aktualizací ovladačů DCAP.

Rozdíly typů ověření identity

Pro součásti generování nabídek psW pro každou kontejnerizovanou aplikaci se nevyžadují žádné aktualizace.

V případě výpadku nemusí vlastníci kontejnerů spravovat aktualizace v rámci svého kontejneru. Vlastníci kontejnerů místo toho spoléhají na poskytnuté rozhraní, které vyvolá centralizovanou službu mimo kontejner.

Z důvodu zastaralých komponent PSW není problém se selháními. Generování nabídek zahrnuje důvěryhodné součásti SW – citace enklávy (QE) a zřizování enklávy (PCE), které jsou součástí důvěryhodné výpočetní základny (TCB). Tyto součásti SW musí být aktuální, aby byly zachovány požadavky na ověření identity. Poskytovatel spravuje aktualizace těchto komponent. Zákazníci se nikdy nemusí zabývat chybami ověření identity kvůli zastaralým důvěryhodným komponentám SW v rámci svého kontejneru.

Out-of-proc better uses EPC memory. V režimu ověření identity v proc každá aplikace enklávy vytvoří instanci kopie QE a PCE pro vzdálenou ověření identity. V případě nedostatku prostředků kontejner tyto enklávy hostuje a nevyužívají paměť enklávy z kvóty kontejneru.

Existují také bezpečnostní opatření proti vynucování jádra. Když se ovladač SGX streamuje do jádra Linuxu, má enkláva vyšší oprávnění. Toto oprávnění umožňuje enklávu vyvolat PCE, což přeruší aplikaci enklávy spuštěnou v režimu v proc. Ve výchozím nastavení enklávy toto oprávnění nezískají. Udělení tohoto oprávnění aplikaci enklávy vyžaduje změny procesu instalace aplikace. Poskytovatel služby, která zpracovává požadavky mimo úroveň proc, zajišťuje, že je služba nainstalovaná s tímto oprávněním.

Nemusíte kontrolovat zpětnou kompatibilitu se psW a DCAP. Poskytovatel ověří aktualizace součástí generování nabídek PSW kvůli zpětné kompatibilitě. Tento krok řeší problémy s kompatibilitou předem a řeší je před nasazením aktualizací pro důvěrné úlohy.

Out-of-proc attestation for confidential workloads

Model ověření identity mimo úroveň výkonu funguje pro důvěrné úlohy. Žadatel nabídky a generování nabídek se spouští samostatně, ale na stejném fyzickém počítači. Generování nabídek probíhá centralizovaným způsobem a obsluhuje požadavky na UVOZOVKY ze všech entit. Správně definujte rozhraní a zjišťujte rozhraní pro libovolnou entitu, která bude požadovat uvozovky.

Diagram of quote requestor and quote generation interface.

Abstraktní model se vztahuje na scénáře důvěrných úloh. Tento model používá již dostupnou službu AESM. AESM je kontejnerizovaný a nasazený jako démon nastavený v clusteru Kubernetes. Kubernetes zaručuje nasazení jedné instance kontejneru služby AESM zabaleného do podu na každý uzel agenta. Nová sada démon SGX Quote má závislost na sgx-device-plugin sadě démonů, protože kontejner služby AESM požaduje, aby se paměť EPC od sgx-device-plugin spuštění QE a enklávy PCE požadovala.

Každý kontejner se musí přihlásit k použití generování nabídek mimo proc nastavením proměnné SGX_AESM_ADDR=1 prostředí během vytváření. Kontejner také musí obsahovat balíček libsgx-quote-ex, který směruje požadavek na výchozí unixový soket domény.

Aplikace stále může používat ověření identity in-proc jako předtím. V aplikaci ale nemůžete současně používat jak in-proc, tak out-of-proc. Infrastruktura mimo infrastrukturu je ve výchozím nastavení dostupná a využívá prostředky.

Poznámka:

Pokud ke spouštění nemodifikovaných kontejnerů používáte software obálky Intel SGX (OSS/ISV), pro aplikace vyšší úrovně se obvykle zpracovává interakce ověření identity s hardwarem. Projděte si implementaci ověření identity pro jednotlivé poskytovatele.

Ukázková implementace

Ve výchozím nastavení není tato služba pro váš cluster AKS s doplňkem confcom povolená. Aktualizujte doplněk následujícím příkazem.

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

Jakmile je služba v provozu, použijte k ověření toku následující ukázku Dockeru pro aplikaci založenou na Open Enklave. Nastavte proměnnou SGX_AESM_ADDR=1 prostředí v souboru Dockeru. Nebo nastavte proměnnou v souboru nasazení. Postupujte podle této ukázky pro podrobnosti o souboru Dockeru a YAML nasazení.

Poznámka:

Balíček libsgx-quote-ex od Společnosti Intel je potřeba zabalit do kontejneru aplikace, aby ověření identity mimo proc fungovalo správně. Níže uvedené pokyny obsahují podrobnosti.

# 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

Místo toho v souboru YAML nasazení nastavte režim ověření identity typu out-of-proc následujícím způsobem:

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

Nasazení by mělo proběhnout úspěšně a umožnit aplikacím provádět vzdálené ověření pomocí pomocné služby nabídky SGX.

Další kroky