Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Per la maggior parte delle implementazioni di carichi di lavoro confidenziali AKS, usa pool di nodi VM confidenziali. Questa documentazione del plugin si applica a scenari di nodi basati su enclave Intel SGX.
Il servizio Azure Kubernetes offre un plug-in per le macchine virtuali di confidential computing di Azure. Il plug-in, confcom, è un set di daemon. Il plug-in può essere eseguito solo per le macchine virtuali riservate Intel SGX (Software Guard Extensions) in un cluster del servizio Azure Kubernetes. Questo plug-in viene registrato a livello di cluster del servizio Azure Kubernetes. È possibile usare il plug-in per gestire facilmente i nodi riservati.
Attiva il plugin sul tuo cluster AKS prima di iniziare.
Plug-in del dispositivo Intel SGX per il servizio Azure Kubernetes
Il plugin SGX implementa l'interfaccia del plugin Kubernetes per la memoria Enclave Page Cache (EPC). In effetti, con questo plug-in la memoria EPC diventa un altro tipo di risorsa in Kubernetes. Gli utenti possono specificare dei limiti per la memoria EPC esattamente come per altre risorse. Oltre alla funzione di pianificazione, il plug-in del dispositivo consente di assegnare le autorizzazioni di driver di dispositivo SGX ai contenitori di carichi di lavoro riservati.
È disponibile un'implementazione di esempio della distribuzione basata sulla memoria EPC (kubernetes.azure.com/sgx_epc_mem_in_MiB).
PSW con helper di Quote SGX
Le applicazioni dell'enclave che eseguono l'attestazione remota devono generare una Quote. La Quote fornisce la prova crittografica dell'identità e dello stato dell'applicazione, insieme all'ambiente host dell'enclave. La generazione di Quote si basa su alcuni componenti software attendibili di Intel, che fanno parte dei componenti software della piattaforma SGX (PSW/DCAP). Questo PSW viene fornito come DaemonSet che viene eseguito per nodo. È possibile utilizzare PSW quando si richiede una quota di attestazione da parte di app enclave. L'utilizzo del servizio fornito da AKS aiuta a mantenere meglio la compatibilità tra il PSW e altri componenti software dell'host. Leggere i dettagli della funzionalità di seguito.
Le applicazioni dell'enclave che eseguono l'attestazione remota richiedono una Quote generata. Questa Quote fornisce la prova crittografica dell'identità, dello stato e dell'ambiente in esecuzione dell'applicazione. Per la generazione sono richiesti componenti software attendibili che fanno parte della piattaforma PSW Intel.
Panoramica
Note
Questa funzione è richiesta solo per le VM DCsv2 e DCsv3 che utilizzano hardware specializzato Intel SGX.
Intel supporta due modalità di attestazione per la generazione delle quote. Per aiuto nella scelta tra loro, vedi differenze tra i tipi di attestazione.
In-proc: ospita i componenti software affidabili all'interno del processo applicativo dell'enclave. Questo metodo è utile quando si esegue l'attestazione locale tra due app enclave in un singolo nodo VM.
Out-of-proc: ospita i componenti software affidabili al di fuori dell'applicazione enclave. Questo metodo è preferito per l'attestazione remota.
Le applicazioni SGX costruite utilizzando Open Enclave SDK utilizzano di default la modalità di attestazione in-proc. Le applicazioni basate su SGX supportano l'attestazione out-of-proc e richiedono un hosting aggiuntivo. Queste applicazioni espongono componenti necessari come Architectural Enclave Service Manager (AESM) esternamente all'applicazione.
Usa questa funzione. Aiuta a migliorare l'uptime delle app enclave durante gli aggiornamenti della piattaforma Intel o dei driver DCAP.
Differenze tra i tipi di attestazione
Non sono necessari aggiornamenti per i componenti di generazione delle Quote di PSW per ogni applicazione in contenitori.
Utilizzando l'off-of-proc, i proprietari di container non devono gestire gli aggiornamenti all'interno del loro container. Invece, si affidano all'interfaccia fornita che invoca il servizio centralizzato al di fuori del container.
Per il fuori processo, non vi sono rischi di errore dovuti a componenti PSW obsoleti. La generazione della quote coinvolge i componenti software affidabili - Quoting Enclave (QE) e Provisioning Certificate Enclave (PCE), che fanno parte della base di calcolo fidata (TCB). Questi componenti software devono essere aggiornati per mantenere i requisiti di attestazione. Il fornitore gestisce l'aggiornamento di questi componenti. I clienti non devono risolvere errori di attestazione a causa di componenti software affidabili obsoleti all'interno del loro contenitore.
La modalità out-of-process usa meglio la memoria EPC. In modalità attestazione in-proc, ogni applicazione enclave istanzia copie di QE e PCE per l'attestazione remota. Usando out-of-proc, il container non ospita quegli enclave e non consuma memoria dell'enclave dalla quota di container.
Esistono anche misure di sicurezza contro l'applicazione del kernel. Quando il driver SGX viene caricato nel kernel Linux, un enclave ha privilegi più elevati. Questi privilegi consentono all'enclave di richiamare PCE, che interrompe l'applicazione enclave in esecuzione in modalità in-process. Per impostazione predefinita, le enclave non ottengono questa autorizzazione. Per concedere questo privilegio a un'applicazione enclave è necessario modificare il processo di installazione dell'applicazione. Il provider del servizio che gestisce le richieste out-of-process verifica che il servizio sia installato con questi privilegi.
Non è necessario controllare la compatibilità con le versioni precedenti di PSW e DCAP. Il provider convalida la compatibilità con le versioni precedenti degli aggiornamenti dei componenti di generazione delle Quote della piattaforma PSW. Questo passaggio gestisce i problemi di compatibilità e li risolve prima di distribuire gli aggiornamenti per i carichi di lavoro riservati.
Attestazione out-of-process per carichi di lavoro riservati
Il modello di attestazione out-of-process funziona per i carichi di lavoro riservati. Il richiedente di preventivo e la generazione del preventivo vengono eseguiti separatamente, ma sulla stessa macchina fisica. La generazione di quote avviene in modo centralizzato e gestisce le richieste di quote da tutte le entità. Definisci correttamente l'interfaccia e rendila individuabile per qualsiasi entità che può richiedere preventivi.
Il modello astratto si applica agli scenari di carichi di lavoro riservati. Questo modello usa il servizio AESM già disponibile. Il servizio AESM è inserito in un contenitore e viene distribuito come set di daemon nel cluster Kubernetes. Kubernetes garantisce che una singola istanza di un contenitore del servizio AESM, di cui viene eseguito il wrapping in un pod, venga distribuita in ogni nodo dell'agente. Il nuovo set di daemon SGX Quote dipende dal set di daemon sgx-device-plugin, perché il container di servizio AESM richiede memoria EPC da sgx-device-plugin per il lancio di enclave QE e PCE.
Ogni contenitore deve acconsentire esplicitamente all'uso della generazione di Quote out-of-process impostando la variabile di ambiente SGX_AESM_ADDR=1 durante la creazione. Il contenitore deve anche includere il pacchetto libsgx-quote-ex, che indirizza la richiesta al socket di dominio Unix predefinito.
Un'applicazione può comunque usare l'attestazione in-process come prima. Tuttavia, non è possibile usare contemporaneamente sia la modalità in-process che out-of-process all'interno di un'applicazione. L'infrastruttura out-of-process è disponibile per impostazione predefinita e utilizza risorse.
Note
Se usi il software wrapper Intel SGX (OSS/ISV) per eseguire i tuoi container non modificati, l'interazione di attestazione con l'hardware viene solitamente gestita per le tue app di livello superiore. Per maggiori informazioni, consulta l'implementazione dell'attestazione per fornitore.
Implementazione di esempio
Per impostazione predefinita, questo servizio non è abilitato per il tuo cluster AKS con l'add-on "confcom". Per aggiornare l'add-on, usa il seguente comando:
az aks addon update --addon confcom --name " YourAKSClusterName " --resource-group "YourResourceGroup " --enable-sgxquotehelper
Una volta che il servizio è attivo, usa il seguente esempio Docker per un'applicazione basata su Open Enclave per validare il flow. Imposta la SGX_AESM_ADDR=1 variabile ambiente nel file Docker, oppure imposta la variabile nel file di deployment. Segui questo esempio per i dettagli del file Docker e del YAML di deployment.
Note
Per il corretto funzionamento dell'attestazione out-of-process, il pacchetto libsgx-quote-ex di Intel deve essere incluso nel contenitore dell'applicazione. Le istruzioni riportate di seguito contengono i dettagli.
# 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
Impostare invece la modalità di attestazione out-of-process nel file YAML di distribuzione, come illustrato di seguito:
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
La distribuzione dovrebbe avere esito positivo e consentire alle app di eseguire l'attestazione remota usando il servizio helper Quote SGX.
Passaggi successivi
- Configurare nodi riservati (serie DCsv2/DCsv3) nel servizio Azure Kubernetes
- Esempi di contenitori riservati
- Per il nuovo repository consolidato, vedi Azure Confidential computing code samples.
- Elenco di SKU DCsv2
- Elenco di SKU DCSv3
- Attestazione di Azure
- Macchine virtuali riservate Intel SGX in Azure