Compartilhar via


Como criar uma imagem personalizada para VMs confidenciais do Azure

Aplica-se a: ✔️ VMs do Linux

Este "como" mostra como usar a CLI (Interface de Linha de Comando do Azure) para criar uma imagem personalizada para sua máquina virtual confidencial (VM confidencial) no Azure. A CLI do Azure é usada para criar e gerenciar recursos do Azure por meio da linha de comando ou de scripts.

A criação de uma imagem personalizada permite pré-configurar sua VM confidencial com software, configurações e medidas de segurança específicas que atendem às suas necessidades. Se você quiser trazer uma imagem do Ubuntu que não é compatível com VM confidencial, você pode seguir as etapas abaixo para ver quais são os requisitos mínimos para sua imagem.

Pré-requisitos

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Iniciar o Azure Cloud Shell

O Azure Cloud Shell é um shell interativo gratuito que pode ser usado para executar as etapas neste artigo. Ele tem ferramentas do Azure instaladas e configuradas para usar com sua conta.

Para abrir o Cloud Shell, basta selecionar Experimentar no canto superior direito de um bloco de código. Você também pode abrir o Cloud Shell em uma guia separada do navegador indo até https://shell.azure.com/bash. Selecione Copiar para copiar os blocos de código, cole-o no Cloud Shell e selecione Enter para executá-lo.

Se preferir instalar e usar a CLI localmente, este início rápido exigirá a CLI do Azure versão 2.0.30 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Criar um grupo de recursos

Crie um grupo de recursos com o comando az group create. Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.

Observação

As VMs confidenciais não estão disponíveis em todos os locais. Para locais com suporte no momento, confira quais produtos de VM estão disponíveis por região do Azure.

az group create --name $resourceGroupName --location eastus

Criar imagem personalizada para VMs confidenciais do Azure

  1. Crie uma máquina virtual com uma imagem do Ubuntu de escolha na lista de imagens com suporte do Azure.

  2. Verifique se a versão do kernel é pelo menos 5.15.0-1037-azure. Você pode usar "uname -r" depois de se conectar à VM para verificar a versão do kernel. Aqui você pode adicionar quaisquer alterações à imagem como achar melhor.

  3. Desaloque sua máquina virtual.

    az vm deallocate --name $vmname --resource-group $resourceGroupName
    
  4. Crie um token de acesso compartilhado (token SAS) para o disco do sistema operacional e armazene-o em uma variável. Observe que esse disco do sistema operacional não precisa estar no mesmo grupo de recursos que a VM confidencial.

    disk_name=$(az vm show --name $vmname --resource-group $resourceGroupName | jq -r .storageProfile.osDisk.name)
    disk_url=$(az disk grant-access --duration-in-seconds 3600 --name $disk_name --resource-group $resourceGroupName | jq -r .accessSas)
    

Criar uma conta de armazenamento para armazenar o disco exportado

  1. Criar uma conta de armazenamento.
    az storage account create --resource-group ${resourceGroupName} --name ${storageAccountName} --location $region --sku "Standard_LRS"
    
  2. Crie um contêiner na conta de armazenamento.
    az storage container create --name $storageContainerName --account-name $storageAccountName --resource-group $resourceGroupName
    
  3. Gere um token de acesso compartilhado de leitura (token SAS) para o contêiner de armazenamento e salve-o em uma variável.
    container_sas=$(az storage container generate-sas --name $storageContainerName --account-name $storageAccountName --auth-mode key --expiry 2024-01-01 --https-only --permissions dlrw -o tsv)
    
  4. Usando azcopy, copie o disco do sistema operacional para o contêiner de armazenamento.
     blob_url="https://${storageAccountName}.blob.core.windows.net/$storageContainerName/$referenceVHD"
     azcopy copy "$disk_url" "${blob_url}?${container_sas}"
    

Criar uma imagem confidencial suportada

  1. Crie uma galeria de imagens compartilhadas.
    az sig create --resource-group $resourceGroupName --gallery-name $galleryName
    
  2. Crie uma VM confidencial de definição de galeria de imagens compartilhadas (SIG) com suporte. Defina novos nomes para definição de imagem da galeria, editor SIG e SKU.
    az sig image-definition create --resource-group  $resourceGroupName --location $region --gallery-name $galleryName --gallery-image-definition $imageDefinitionName --publisher $sigPublisherName --offer ubuntu --sku $sigSkuName --os-type Linux --os-state specialized --hyper-v-generation V2  --features SecurityType=ConfidentialVMSupported
    
  3. Obtenha o ID da conta de armazenamento.
    storageAccountId=$(az storage account show --name $storageAccountName --resource-group $resourceGroupName | jq -r .id)
    
  4. Crie uma versão de imagem SIG.
    az sig image-version create --resource-group $resourceGroupName --gallery-name $galleryName --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --os-vhd-storage-account $storageAccountId --os-vhd-uri $blob_url
    
  5. Armazene o ID da versão da imagem SIG criada na etapa anterior.
    galleryImageId=$(az sig image-version show --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --gallery-name $galleryName --resource-group $resourceGroupName | jq -r .id)
    

Criar uma VM confidencial

  1. Crie uma VM com o comando az vm create. Para obter mais informações, consulte inicialização segura e vTPM. Para obter mais informações sobre criptografia de disco, consulte criptografia de disco do sistema operacional confidencial. Atualmente, as VMs confidenciais oferecem suporte aos tamanhos de VM das séries DC e EC.
    az vm create \
    --resource-group $resourceGroupName \
    --name $cvmname \
    --size Standard_DC4as_v5 \
    --enable-vtpm true \
    --enable-secure-boot true \
    --image $galleryImageId \
    --public-ip-sku Standard \
    --security-type ConfidentialVM \
    --os-disk-security-encryption-type VMGuestStateOnly \
    --specialized
    

Próximas etapas