Usando Máquinas Virtuais Confidenciais (CVMs) no cluster do AKS (Serviço de Kubernetes do Azure)

Máquinas Virtuais Confidenciais (CVMs) oferecem segurança e confidencialidade robustas para os clientes. As CVMs oferecem um Ambiente de Execução Confiável de Hardware (TEE) baseado em VM, que aproveita os recursos de segurança SEV-SNP para negar ao hipervisor e a outros códigos de gerenciamento de host o acesso à memória e ao estado da VM, proporcionando proteções em profundidade contra o acesso do operador. Esses recursos permitem que pools de nós com CVMs direcionem a migração de cargas de trabalho de contêiner altamente confidenciais para o AKS sem nenhuma refatoração de código, beneficiando-se dos recursos do AKS. Por exemplo, você poderá exigir CVMs se tiver o seguinte:

  • Cargas de trabalho que lidam com dados críticos de segurança e/ou dados confidenciais do cliente
  • Serviços necessários para atender a vários requisitos de conformidade, especialmente para contratos governamentais. Sem uma solução escalonável para proteger dados, isso poderia potencialmente levar à perda de credenciamento e contratos.

Neste artigo, você aprenderá a criar pools de nós do AKS usando tamanhos de VM confidencial.

Tamanhos de VM confidenciais suportados pelo AKS

O Azure oferece uma opção de opções de TEE (Ambiente de Execução Confiável) tanto da AMD quanto da Intel. Esses TEEs permitem criar ambientes de VM confidenciais com excelentes relações preço/desempenho, tudo sem a necessidade de alterações de código.

  • As VMs Confidenciais baseadas em AMD usam a tecnologia amd SEV-SNP, que é introduzida com processadores EPYC AMD de terceira geração™.
  • As VMs Confidenciais baseadas em Intel usam o Intel TDX, com processadores Intel® Xeon® de quarta geração.

Observação

Atualmente, não há suporte para VMs confidenciais baseadas em Intel TDX no AKS.

Para obter mais informações, consulte tamanhos de VM CVM.

Recursos de segurança

As CVMs oferecem os seguintes aprimoramentos de segurança em comparação com outros tamanhos de VM (máquina virtual):

  • Isolamento robusto baseado em hardware entre máquinas virtuais, hipervisor e código de gerenciamento de host.
  • Políticas de atestado personalizáveis para garantir a conformidade do host antes da implantação.
  • Chaves de criptografia de VM que a plataforma ou o cliente (opcionalmente) detém e gerencia.
  • Versão de chave segura com associação criptográfica entre o atestado bem-sucedido da plataforma e as chaves de criptografia da VM.
  • Instância dedicada do TPM (Virtual Trusted Platform Module) para atestado e proteção de chaves e segredos na máquina virtual.
  • Funcionalidade de inicialização segura semelhante à inicialização confiável para VMs do Azure

Como funciona?

Se você estiver executando uma carga de trabalho que exija confidencialidade e integridade aprimoradas, poderá se beneficiar da criptografia de memória e da segurança aprimorada sem alterações de código em seu aplicativo. Todos os pods no nó CVM fazem parte do mesmo limite de confiança. Os nós em um pool de nós criado com CVMs usam uma imagem de nó personalizada configurada especificamente para CVMs.

Versões de SO com suporte

Você pode criar pools de nós CVM em sistemas operacionais Linux (Ubuntu e Azure Linux). No entanto, nem todas as versões do sistema operacional dão suporte a pools de nós CVM.

Esta tabela inclui as versões do sistema operacional com suporte:

Tipo de SO SKU do SO Suporte ao CVM Padrão CVM
Linux Ubuntu Suportado O Ubuntu 20.04 é o padrão para o Kubernetes versão 1.24-1.33. O Ubuntu 24.04 é o padrão para o Kubernetes versão 1.34-1.38.
Linux Ubuntu2204 Sem suporte O AKS não dá suporte ao CVM para Ubuntu 22.04.
Linux Ubuntu2404 Suportado O CVM é compatível com Ubuntu2404 no Kubernetes 1.32-1.38.
Linux AzureLinux Com suporte no Azure Linux 3.0 Azure Linux 3 é padrão ao habilitar o CVM para Kubernetes versão 1.28-1.36.
Linux flatcar Sem suporte O Flatcar Container Linux para AKS não dá suporte ao CVM.
Linux AzureLinuxOSGuard Sem suporte O Azure Linux com o OS Guard para AKS não dá suporte à CVM.
Linux AzureContainerLinux Sem suporte Azure ACL (Container Linux) não dá suporte à CVM.
Windows Todos os SKUs do sistema operacional Windows Sem suporte N/D

Ao usar Ubuntu ou AzureLinux como o osSKU, se a versão padrão do sistema operacional não for compatível com CVMs, o AKS adotará por padrão a versão mais recente do sistema operacional compatível com CVMs. Por exemplo, o Ubuntu 22.04 é padrão para pools de nós do Linux. Como a 22.04 atualmente não dá suporte a CVMs, o AKS usa como padrão o Ubuntu 20.04 para pools de nós habilitados para CVM do Linux.

Limitações

As seguintes limitações se aplicam ao adicionar um pool de nós com CVM ao AKS:

  • Você não pode usar FIPS, ARM64, Trusted Launch ou Pod Sandboxing.
  • Você não pode atualizar um pool de nós existente para migrar para um tamanho CVM. Para migrar, você precisará redimensionar o pool de nós.
  • Você não pode usar CVMs com pools de nós Windows.
  • CvMs com Azure Linux estão atualmente em versão prévia.
  • O Azure Container Linux (ACL) no momento não oferece suporte a pools de nós CVM no AKS.

Pré-requisitos

Antes de começar, certifique-se de que você tenha o seguinte:

  • Um cluster AKS novo ou existente.
  • Os tamanhos de CVM devem estar disponíveis para sua assinatura na região onde o cluster é criado. Você deve ter cota suficiente para criar um pool de nós com tamanho de CVM.
  • Se você estiver usando o sistema operacional Linux do Azure, precisará instalar a extensão aks-preview, atualizar a extensão aks-preview e registrar o sinalizador de recurso de visualização. Se você estiver usando o Ubuntu, ignore estas etapas.

Se você estiver usando o Linux do Azure

CVMs para Ubuntu estão disponíveis em GA, mas CVMs com Azure Linux ainda estão em versão prévia. Se você quiser usar pools de nós CVM com o Azure Linux como o sistema operacional escolhido, habilite a extensão e registre o sinalizador.

Instalar aks-preview extensão

  1. Instale a extensão aks-preview da CLI do Azure usando o comando az extension add.

    Importante

    As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

    az extension add --name aks-preview
    
  2. Atualize para a última versão da extensão usando o comando az extension update.

    az extension update --name aks-preview
    

Registrar o sinalizador de recurso AzureLinuxCVMPreview

  1. Registre o sinalizador de recurso AzureLinuxCVMPreview usando o comando az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxCVMPreview"
    
  2. Verifique o status do registro usando o comando az feature show. Demora alguns minutos para o status mostrar Registrado.

    az feature show --namespace Microsoft.ContainerService --name AzureLinuxCVMPreview
    
  3. Quando o status reflete Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Adicionar um pool de nós com um CVM ao cluster do AKS

Adicione um pool de nós com uma CVM ao cluster AKS usando o comando az aks nodepool add e defina o node-vm-size para um tamanho de VM compatível.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool \
    --node-count 3 \
    --node-vm-size Standard_DC4as_v5 

Se você não especificar o osSKU ou o osType, o AKS usará por padrão o --os-type Linux e o --os-sku Ubuntu.

Atualizar um pool de nós existente com um CVM para o Ubuntu 24.04

Atualize um pool de nós existente com um CVM para o Ubuntu 24.04 do Ubuntu 20.04 usando o az aks nodepool update comando. Defina os-sku como Ubuntu2404.

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool \
    --os-sku Ubuntu2404

Observação

Um pool de nós Ubuntu 24.04 com um CVM tem suporte na versão 1.33 do cluster AKS. Além disso, antes que o Ubuntu 24.04 se torne GA, você precisa registrar o Ubuntu2404Preview recurso. Para obter mais informações, consulte here para registrar o recurso.

Verificar se o pool de nós usa CVMs

  1. Verifique se um pool de nós usa CVMs usando o comando az aks nodepool show e verifique se vmSize está Standard_DCa4_v5.

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    

    O exemplo de comando e saída a seguir mostra que o pool de nós usa CVMs:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'vmSize'
    
    "Standard_DC4as_v5"
    
  2. Verifique se um pool de nós usa uma imagem CVM usando o az aks nodepool list comando.

    az aks nodepool list \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    

    O seguinte exemplo de comando e saída mostra que o pool de nós usa uma imagem CVM do Ubuntu 20.04:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name cvmnodepool \
        --query 'nodeImageVersion'
    
    "AKSUbuntu-2004cvmcontainerd-202507.02.0"
    

Remover um pool de nós com CVMs de um cluster do AKS

Remova um pool de nós com CVMs de um cluster do AKS usando o az aks nodepool delete comando.

az aks nodepool delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name cvmnodepool

Neste artigo, você aprendeu a adicionar um pool de nós com CVMs a um cluster do AKS.