Plugin de computação confidencial para VMs confidenciais

O Azure Kubernetes Service (AKS) fornece um plugin para máquinas virtuais de computação confidenciais Azure (VMs). O plugin, confcomé um conjunto de daemon. O plugin funciona apenas para Extensões confidenciais da Intel Software Guard (SGX) num cluster AKS. Este plugin está registado ao nível do cluster AKS. Pode utilizar o plugin para gerir facilmente os nós confidenciais. Ativar o seu cluster AKS antes de começar.

Plugin de dispositivo Intel SGX para AKS

O plugin do dispositivo SGX implementa a interface plugin do dispositivo Kubernetes para a memória de Cache de Página do Enclave (EPC). Com efeito, este plugin faz da memória EPC outro tipo de recurso em Kubernetes. Os utilizadores podem especificar limites no EPC tal como outros recursos. Além da função de agendamento, o plugin do dispositivo ajuda a atribuir permissões do controlador do dispositivo SGX a recipientes de carga de trabalho confidenciais. Está disponível uma implementação de amostra da implantação baseada na memória do EPC (kubernetes.azure.com/sgx_epc_mem_in_MiB).

PSW com ajudante de citação SGX

As aplicações do enclave que fazem atestado remoto precisam gerar uma cotação. A citação fornece uma prova criptográfica da identidade e do estado da aplicação, juntamente com o ambiente de acolhimento do enclave. A geração de cotação baseia-se em certos componentes de software fidedignos da Intel, que fazem parte dos Componentes de Software da Plataforma SGX (PSW/DCAP). Este PSW é embalado como um conjunto de daemon que corre por nó. Você pode usar PSW ao solicitar a cotação de atestado de aplicações enclave. A utilização do serviço AKS fornecido ajuda a manter melhor a compatibilidade entre a PSW e outros componentes SW no hospedeiro. Leia os detalhes da funcionalidade abaixo.

As aplicações do enclave que fazem atestado remoto requerem uma cotação gerada. Esta citação fornece uma prova criptográfica da identidade, estado e ambiente de funcionamento da aplicação. A geração requer componentes de software fidedignos que fazem parte da PSW da Intel.

Descrição Geral

Nota

Esta funcionalidade só é necessária para DCsv2/DCsv3 VMs que utilizam hardware Intel SGX especializado.

A Intel suporta dois modos de atestação para executar a geração de citações. Para escolher que tipo, consulte as diferenças do tipo [atestado] (#attestation-diferenças de tipo).

  • in-proc: hospeda os componentes de software fidedignos dentro do processo de aplicação do enclave. Este método é útil quando você está executando atestado local (entre 2 aplicações enclave em um único nó VM)

  • fora do proc: hospeda os componentes de software fidedignos fora da aplicação do enclave. Este é um método preferido para realizar atestado remoto.

As aplicações SGX são construídas utilizando o Open Enclave SDK por padrão de utilização no modo de atestação proc. As aplicações baseadas em SGX permitem um extra-proc e requerem hospedagem extra. Estas aplicações expõem os componentes necessários, tais como Architectural Enclave Service Manager (AESM), externos à aplicação.

É altamente recomendado usar esta funcionalidade. Esta funcionalidade melhora o tempo de atualização das suas aplicações do enclave durante as atualizações da Plataforma Intel ou atualizações do controlador DCAP.

Diferenças de tipo de atestado

Não são necessárias atualizações para os componentes de geração de cotações de PSW para cada aplicação contentorizada.

Com fora-de-proc, os proprietários de contentores não precisam de gerir atualizações dentro do seu contentor. Em vez disso, os proprietários de contentores dependem da interface fornecida que invoca o serviço centralizado fora do contentor.

Para fora do proc, não há nenhuma preocupação com falhas por causa de componentes de PSW desatualizados. A geração de citações envolve os componentes SW fidedignos - Enclave de Cito (QE) Enclave (QE) & Que fazem parte da base de computação fidedigna (TCB). Estes componentes SW devem estar atualizados para manter os requisitos de atestado. O fornecedor gere as atualizações destes componentes. Os clientes nunca têm de lidar com falhas de atestado devido a componentes SW de confiança desatualizados dentro do seu contentor.

Fora do proc melhor usa a memória EPC. No modo de atestação in-proc, cada aplicação de enclave instantaneamente a cópia de QE e PCE para atestado remoto. Com fora-de-proc, o contentor não acolhe esses enclaves, e não consome memória do enclave da quota do contentor.

Existem também salvaguardas contra a aplicação da kernel. Quando o condutor da SGX é transmitido para o kernel de Linux, um enclave tem maior privilégio. Este privilégio permite ao enclave invocar o PCE, que quebra a aplicação do enclave em modo in-proc. Por defeito, os enclaves não obtêm esta permissão. Conceder este privilégio a uma aplicação de enclave requer alterações ao processo de instalação da aplicação. O prestador do serviço que trata de pedidos fora de proc garante que o serviço está instalado com este privilégio.

Não tens de verificar a retrocompatibilidade com a PSW e a DCAP. O fornecedor valida atualizações aos componentes de geração de cotação de PSW para retrocompatibilidade. Este passo lida com problemas de compatibilidade antecipadamente e aborda-os antes de implementar atualizações para cargas de trabalho confidenciais.

Atestado fora de proc para cargas de trabalho confidenciais

O modelo de atestado fora de proc funciona para cargas de trabalho confidenciais. O solicitador de citação e a geração de citações são executados separadamente, mas na mesma máquina física. A geração de citações acontece de forma centralizada e serve pedidos de COTAÇÃO de todas as entidades. Defina adequadamente a interface e torne a interface detetável para qualquer entidade solicitar cotações.

Diagram of quote requestor and quote generation interface.

O modelo abstrato aplica-se a cenários confidenciais de carga de trabalho. Este modelo utiliza o serviço AESM já disponível. A AESM é contentorizada e implantada como um daemon situado através do aglomerado de Kubernetes. Kubernetes garante uma única instância de um recipiente de serviço AESM, embrulhado numa vagem, a ser implantado em cada nó de agente. O novo conjunto de daemon SGX Quote tem uma dependência do sgx-device-plugin conjunto daemon, uma vez que o contentor de serviço AESM solicitaria a memória EPC para o lançamento de sgx-device-plugin enclaves QE e PCE.

Cada recipiente tem de optar por utilizar a geração de citações fora de proc, definindo a variável SGX_AESM_ADDR=1 ambiental durante a criação. O contentor também deve incluir a embalagem libsgx-quote-ex, que direciona o pedido para a tomada de domínio Unix predefinido

Uma aplicação ainda pode usar o atestado in-proc como antes. No entanto, não pode simultaneamente usar in-proc e fora de proc dentro de uma aplicação. A infraestrutura fora de proc está disponível por defeito e consome recursos.

Nota

Se estiver a utilizar um software de invólucro Intel SGX (OSS/ISV) para executar contentores não modificados, a interação de atestado com hardware é normalmente tratada para as suas aplicações de nível superior. Consulte a implementação do atestado por fornecedor.

Implementação da amostra

Por predefinição, este serviço não está ativado para o seu Cluster AKS com addon "confcom". Por favor, atualize o addon com o comando abaixo

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

Uma vez que o serviço esteja em alta, utilize a amostra de estiva abaixo para uma aplicação baseada em Enclave aberto para validar o fluxo. Desaprove a SGX_AESM_ADDR=1 variável ambiente no ficheiro Docker. Ou, definir a variável no ficheiro de implantação. Siga esta amostra para o ficheiro Docker e desajei a por detalhes da YAML.

Nota

O pacote libsgx-quote-ex da Intel precisa de ser embalado no recipiente de aplicação para atestado fora de proc para funcionar corretamente. As instruções abaixo têm os detalhes.

# 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/remote_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

Em vez disso, desajei o modo de atestação fora de proc no ficheiro YAML de implementação da seguinte forma:

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

A implementação deve ter sucesso e permitir que as suas aplicações realizem atestado remoto utilizando o serviço SGX Quote Helper.

Passos Seguintes