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 VMGuestStateOnly
o . 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
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.
- 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"
- 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 --enable-rbac-authorization false
- Conceda
Confidential VM Orchestrator
permissões ao cofre de chaves erelease
aoget
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
- 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
- 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
- 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
- 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)
- 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.
Entre em sua VM confidencial usando seu endereço IP público.
Clone o aplicativo Linux de exemplo.
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
- 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
Faça o download do pacote de atestado.
Instale o pacote de atestado. Certifique-se de substituir
<version>
pela versão que você baixou.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
- 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
- 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 .