Contêineres confidenciais (versão prévia) no Serviço de Kubernetes do Azure

Com o crescimento do desenvolvimento de aplicativos nativos de nuvem, também há uma necessidade maior de proteger as cargas de trabalho em execução em ambientes de nuvem. O contêiner da carga de trabalho forma um componente chave para esse modelo de programação e é fundamental proteger o contêiner para ser executado de maneira confidencial na nuvem.

Contêineres confidenciais no AKS (Serviço de Kubernetes do Azure) permitem o isolamento no nível do contêiner nas cargas de trabalho do Kubernetes. É uma adição ao pacote do Azure de produtos de computação confidenciais e usa a criptografia de memória AMD SEV-SNP para proteger os contêineres em runtime.

Contêineres confidenciais são interessantes para cenários de implantação que envolvem dados confidenciais (por exemplo, dados pessoais ou dados com forte segurança necessária para conformidade regulatória).

O que torna um contêiner confidencial?

Em alinhamento com as diretrizes definidas pelo Confidential Computing Consortium, do qual a Microsoft é membro fundador, os Contêineres confidenciais precisam atender ao seguinte:

  • Transparência: o ambiente de contêiner confidencial em que o aplicativo confidencial é compartilhado, você pode ver e verificar se ele é seguro. Todos os componentes da TCB (Base de Computação Confiável) devem ser de software livre.
  • Auditabilidade: você tem a capacidade de verificar e ver qual versão do pacote de ambiente CoCo, inclusive o SO Convidado Linux e se todos os componentes estão atuais. A Microsoft assina o SO convidado e o ambiente de runtime do contêiner para verificações por meio do atestado. Ela também libera um SHA (algoritmo de hash seguro) de builds de SO convidado para criar uma história de audibilidade e controle de cadeia de caracteres.
  • Atestado completo: tudo o que faz parte do TEE deve ser totalmente medido pela CPU com a capacidade de verificar remotamente. O relatório de hardware do processador AMD SEV-SNP deve refletir as camadas de contêiner e o hash de configuração de runtime de contêiner por meio das declarações de atestado. O aplicativo pode buscar o relatório de hardware localmente, inclusive o relatório que reflete a imagem do SO convidado e o runtime do contêiner.
  • Integridade do código: a imposição de runtime está sempre disponível por meio de políticas definidas pelo cliente para contêineres e configuração de contêiner, como políticas imutáveis e assinatura de contêiner.
  • Isolamento do operador: designs de segurança que presumem privilégios mínimos e maior blindagem de isolamento de todas as partes não confiáveis, inclusive administradores de cliente/locatário. Ele inclui a proteção do acesso existente do plano de controle do Kubernetes (kubelet) para os pods confidenciais.

Mas com esses recursos de confidencialidade, o produto deve adicionar sua facilidade de uso: isso dá suporte a todos os contêineres Linux não modificados com alta conformidade de recursos do Kubernetes. Além disso, ele dá suporte a pools de nós heterogêneos (GPU, nós de uso geral) em um único cluster para otimizar o custo.

O que forma os Contêineres confidenciais no AKS?

Em alinhamento ao compromisso da Microsoft com a comunidade de software livre, a pilha subjacente para Contêineres confidenciais usa o agente Kata CoCo como o agente em execução no nó que hospeda o pod que executa a carga de trabalho confidencial. Com muitas tecnologias de TEE que exigem um limite entre o host e o convidado, os Contêineres Kata são a base para o trabalho inicial do Kata CoCo. A Microsoft também contribuiu com a comunidade do Kata CoCo para alimentar os contêineres em execução dentro de uma VM de utilitário confidencial.

O contêiner confidencial do Kata reside no Host de Contêiner do AKS do Linux do Azure. O Linux do Azure e o VMM (Monitor de Máquina Virtual) do Hipervisor de Nuvem são o software de espaço voltado para o usuário final, que é usado para criar e gerenciar o tempo de vida das máquinas virtuais.

Isolamento no nível do contêiner no AKS

Por padrão, todas as cargas de trabalho do AKS compartilham o mesmo kernel e o mesmo administrador de cluster. Com a visualização do Pod Sandboxing no AKS, o isolamento aumentou um entalhe com a capacidade de fornecer isolamento de kernel para cargas de trabalho no mesmo nó do AKS. Você pode ler mais sobre o recurso aqui. Os Contêineres confidenciais são a próxima etapa desse isolamento e usam os recursos de criptografia de memória dos tamanhos de máquina virtual AMD SEV-SNP subjacentes. Essas máquinas virtuais são os tamanhos DCa_cc e ECa_cc com a capacidade de exibir a raiz de confiança do hardware para os pods implantados.

Diagrama de várias camadas da arquitetura formando Contêineres confidenciais.

Introdução

Para começar a usar e saber mais sobre cenários com suporte, consulte nossa documentação do AKS aqui.

Próxima etapa

Implantar um Contêiner confidencial no AKS.