Share via


Guia de início rápido: criar uma VM confidencial com a CLI do Azure

Aplica-se a: ✔️ VMs Linux VMs ✔️ Windows

Este guia de início rápido mostra como usar a Interface de Linha de Comando do Azure (CLI do Azure) para implantar uma 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.

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 você preferir instalar e usar a CLI localmente, este início rápido requer a CLI do Azure versão 2.38.0 ou posterior. 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. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local northeurope:

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 myResourceGroup --location northeurope

Criar máquina virtual confidencial usando uma chave gerenciada pela plataforma

Crie uma VM com o comando az vm create.

O seguinte exemplo cria uma VM com o nome myVM e adiciona uma conta de utilizador com o nome azureuser. O --generate-ssh-keys parâmetro é usado para gerar automaticamente uma chave SSH e colocá-la no local da chave padrão (~/.ssh). Para utilizar um conjunto específico de chaves em vez disso, utilize a opção --ssh-key-values. Para size, selecione um tamanho de VM confidencial. Para obter mais informações, consulte Famílias de VM confidenciais suportadas.

Escolha VMGuestStateOnly por nenhuma criptografia confidencial de disco do sistema operacional. Ou escolha a DiskWithVMGuestState criptografia confidencial do disco do sistema operacional com uma chave gerenciada pela plataforma. A Inicialização Segura está habilitada por padrão, mas é opcional para VMGuestStateOnlyo . Para obter mais informações, consulte inicialização segura e vTPM. Para obter mais informações sobre criptografia de disco e criptografia no host, consulte Criptografia de disco confidencial do sistema operacional e criptografia no host.

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --size Standard_DC4es_v5 \
  --admin-username <azure-username> \
  --admin-password <azure-password> \
  --enable-vtpm true \
  --image "Canonical:0001-com-ubuntu-confidential-vm-jammy:22_04-lts-cvm:latest" \
  --public-ip-sku Standard \
  --security-type ConfidentialVM \
  --os-disk-security-encryption-type VMGuestStateOnly \
  --enable-secure-boot true \
  --encryption-at-host \

São necessários alguns minutos para criar a VM e os recursos de suporte. O seguinte resultado de exemplo mostra que a operação de criação da VM foi concluída com êxito.

{
  "fqdns": "",
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "northeurope",
  "macAddress": "<MAC-address>",
  "powerState": "VM running",
  "privateIpAddress": "10.20.255.255",
  "publicIpAddress": "192.168.255.255",
  "resourceGroup": "myResourceGroup",
  "zones": ""
}

Anote o publicIpAddress para usar mais tarde.

Criar máquina virtual confidencial usando uma chave gerenciada pelo cliente

Para criar um conjunto de criptografia de disco confidencial, você tem duas opções: Usando o Azure Key Vault ou o HSM (Hardware Security Module) gerenciado pelo Azure Key Vault. Com base nas suas necessidades de segurança e conformidade, pode escolher qualquer uma das opções. No entanto, é importante notar que o SKU padrão não é suportado. O exemplo a seguir usa o Azure Key Vault Premium.

  1. Conceda a entidade Confidential VM Orchestrator de serviço de VM confidencial ao locatário. Para esta etapa, você precisa ser um Administrador Global ou precisa ter a função RBAC de Administrador de Acesso de Usuário. Instale o SDK do Microsoft Graph para executar os comandos abaixo.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
  1. Crie um Cofre de Chaves do Azure usando o comando az keyvault create . Para o nível de preço, selecione Premium (inclui suporte para chaves com suporte HSM). Certifique-se de que tem uma função de proprietário neste cofre de chaves.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true
  1. Conceda Confidential VM Orchestrator permissões ao cofre de chaves e release ao get cofre de chaves.
$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json
az keyvault set-policy --name keyVaultName --object-id $cvmAgent.Id --key-permissions get release
  1. Crie uma chave no cofre de chaves usando az keyvault key create. Para o tipo de chave, use RSA-HSM.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
  1. Crie o conjunto de criptografia de disco usando az disk-encryption-set create. Defina o tipo de criptografia como ConfidentialVmEncryptedWithCustomerKey.
$keyVaultKeyUrl=(az keyvault key show --vault-name keyVaultName --name mykey--query [key.kid] -o tsv)

az disk-encryption-set create --resource-group myResourceGroup --name diskEncryptionSetName --key-url $keyVaultKeyUrl  --encryption-type ConfidentialVmEncryptedWithCustomerKey
  1. Conceda ao conjunto de criptografia de disco acesso de recursos ao cofre de chaves usando az key vault set-policy.
$desIdentity=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [identity.principalId] -o tsv)

az keyvault set-policy -n keyVaultName -g myResourceGroup --object-id $desIdentity --key-permissions wrapkey unwrapkey get
  1. Use o ID do conjunto de criptografia de disco para criar a VM.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
  1. Crie uma VM com o comando az vm create. Escolha DiskWithVMGuestState a encriptação confidencial do disco do SO com uma chave gerida pelo cliente. Ativar a inicialização segura é opcional, mas recomendado. 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.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--size Standard_DC4as_v5 \
--admin-username <azure-user> \
--admin-password <azure-password> \
--enable-vtpm true \
--enable-secure-boot true \
--image "Canonical:0001-com-ubuntu-confidential-vm-focal:20_04-lts-cvm:latest" \
--public-ip-sku Standard \
--security-type ConfidentialVM \
--os-disk-security-encryption-type DiskWithVMGuestState \
--os-disk-secure-vm-disk-encryption-set $diskEncryptionSetID \

São necessários alguns minutos para criar a VM e os recursos de suporte. O seguinte resultado de exemplo mostra que a operação de criação da VM foi concluída com êxito.

{
  "fqdns": "",
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "<MAC-address>",
  "powerState": "VM running",
  "privateIpAddress": "10.20.255.255",
  "publicIpAddress": "192.168.255.255",
  "resourceGroup": "myResourceGroup",
  "zones": ""
}

Anote o publicIpAddress para usar mais tarde.

Conecte e ateste o CVM baseado em AMD por meio do Microsoft Azure Attestation Sample App

Para usar um aplicativo de exemplo em C++ para uso com as APIs de atestado de convidado, use as etapas a seguir. Este exemplo usa uma máquina virtual confidencial do Linux. Para Windows, consulte as instruções de compilação para Windows.

  1. Entre em sua VM confidencial usando seu endereço IP público.

  2. Clone o aplicativo Linux de exemplo.

  3. Instale o pacote build-essential. Este pacote instala tudo o que é necessário para compilar o aplicativo de exemplo.

sudo apt-get install build-essential
  1. Instale os pacotes abaixo.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
sudo apt-get install libboost-all-dev
sudo apt install nlohmann-json3-dev
  1. Faça o download do pacote de atestado.

  2. Instale o pacote de atestado. Certifique-se de substituir <version> pela versão que você baixou.

sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
  1. Depois que os pacotes acima tiverem sido instalados, use as etapas abaixo para criar e executar o aplicativo.
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
  1. Para converter o token da Web em um JSON, use as etapas abaixo.
sudo ./AttestationClient -o token>> /attestation_output

JWT=$(cat /attestation_output)

echo -n $JWT | cut -d "." -f 1 | base64 -d 2>/dev/null | jq .
echo -n $JWT | cut -d "." -f 2 | base64 -d 2>/dev/null | jq .

Próximos passos