Partilhar via


Como criar uma imagem personalizada para VMs confidenciais do Azure

Aplica-se a: ✔️ Linux VMs

Este "como" mostra como usar a Interface de Linha de Comando do Azure (CLI 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 scripts.

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

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta do Azure gratuita antes de começar.

Iniciar o Azure Cloud Shell

O Azure Cloud Shell é um shell interativo gratuito que você pode usar para executar as etapas neste artigo. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a 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 acessando .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 utilizar a CLI localmente, este início rápido requer a versão 2.0.30 ou posterior da CLI do Azure. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Criar um grupo de recursos

Crie um grupo de recursos com o comando az group create. Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.

Nota

As VMs confidenciais não estão disponíveis em todos os locais. Para locais atualmente suportados, consulte 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 suportadas pelo 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 dentro da 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 compartilhada.
    az sig create --resource-group $resourceGroupName --gallery-name $galleryName
    
  2. Crie uma VM confidencial de definição de galeria de imagens compartilhada (SIG) suportada. Defina novos nomes para definição de imagem de 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 confidencial do sistema operacional. Atualmente, as VMs confidenciais suportam os 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
    

Passos Seguintes