Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Você pode usar um modelo do Azure Resource Manager (modelo ARM) para criar uma VM confidencial do Azure rapidamente. VMs confidenciais são executadas em processadores AMD apoiados por AMD SEV-SNP e processadores Intel apoiados por Intel TDX para obter criptografia e isolamento de memória VM. Para obter mais informações, consulte Visão geral confidencial da VM.
Este tutorial aborda a implantação de uma VM confidencial com uma configuração personalizada.
Pré-requisitos
- Uma subscrição do Azure. As contas de avaliação gratuita não têm acesso às VMs usadas neste tutorial. Uma opção é utilizar uma subscrição pré-paga.
- Se você quiser implantar a partir da CLI do Azure, instale o PowerShell e instale a CLI do Azure.
Implantar modelo de VM confidencial com a CLI do Azure
Você pode implantar um modelo de VM confidencial que tenha criptografia confidencial de disco do sistema operacional opcional por meio de uma chave gerenciada pela plataforma.
Para criar e implantar sua VM confidencial usando um modelo ARM por meio da CLI do Azure:
Entre na sua conta do Azure na CLI do Azure.
az loginDefina sua assinatura do Azure. Substitua
<subscription-id>pelo identificador da sua subscrição. Certifique-se de usar uma assinatura que atenda aos pré-requisitos.az account set --subscription <subscription-id>Defina as variáveis para sua VM confidencial. Forneça o nome da implantação (
$deployName), o grupo de recursos ($resourceGroup), o nome da VM ($vmName) e a região do Azure ($region). Substitua os valores de exemplo por suas próprias informações.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.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"Se o grupo de recursos especificado não existir, crie um grupo de recursos com esse nome.
az group create -n $resourceGroup -l $regionImplemente a sua VM no Azure utilizando um modelo ARM com um ficheiro de parâmetros personalizado e o ficheiro de modelo.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Definir arquivo de parâmetro personalizado
Ao criar uma VM confidencial por meio da Interface de Linha de Comando do Azure (CLI do Azure), você precisa definir um arquivo de parâmetro personalizado. Para criar um arquivo de parâmetro JSON personalizado:
Inicie sessão na sua conta do Azure através da CLI do Azure.
Crie um arquivo de parâmetro JSON. Por exemplo,
azuredeploy.parameters.json.Dependendo da imagem do sistema operacional que você está usando, copie o arquivo de parâmetro de exemplo do Windows ou o arquivo de parâmetro de exemplo do Linux para o arquivo de parâmetros.
Edite o código JSON no arquivo de parâmetros conforme necessário. Por exemplo, atualize o nome da imagem do sistema operacional (
osImageName) ou o nome de usuário do administrador (adminUsername).Configure a definição do tipo de segurança (
securityType). EscolhaVMGuestStateOnlypara sem encriptação confidencial no disco do sistema operativo. Ou escolhaDiskWithVMGuestStatepara a encriptação confidencial do disco do sistema operativo com uma chave gerida pela plataforma. Apenas para SKUs Intel TDX e imagens baseadas em Linux, os clientes podem escolher o tipo de segurançaNonPersistedTPMpara implementar com um vTPM efémero. Para o tipo de segurançaNonPersistedTPM, utilize a versão mínima "apiVersion": "2023-09-01" emMicrosoft.Compute/virtualMachinesno ficheiro de modelo.Salve seu arquivo de parâmetros.
Exemplo de arquivo de parâmetro do Windows
Use este exemplo para criar um arquivo de parâmetro personalizado para uma VM confidencial baseada no Windows.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Windows Server 2022 Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"adminPasswordOrKey": {
"value": "<your password>"
}
}
}
Exemplo de arquivo de parâmetro Linux
Use este exemplo para criar um arquivo de parâmetro personalizado para uma VM confidencial baseada em Linux.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Ubuntu 20.04 LTS Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"authenticationType": {
"value": "sshPublicKey"
},
"adminPasswordOrKey": {
"value": <your SSH public key>
}
}
}
Nota
Substitua o valor de osImageName em conformidade.
Implante um modelo de VM confidencial com criptografia confidencial de disco do sistema operacional por meio de chave gerenciada pelo cliente
Inicie sessão na sua conta do Azure através da CLI do Azure.
az loginDefina sua assinatura do Azure. Substitua
<subscription-id>pelo identificador da sua subscrição. Certifique-se de usar uma assinatura que atenda aos pré-requisitos.az account set --subscription <subscription-id>Atribuir principal de serviço de VM confidencial
Confidential VM Orchestratorao inquilinoPara 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"Configure seu Cofre da Chave do Azure. Para saber como usar um HSM gerenciado do Azure Key Vault, consulte a próxima etapa.
Crie um grupo de recursos para o cofre de chaves. Sua instância do cofre de chaves e sua VM confidencial devem estar na mesma região do Azure.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $regionCrie uma instância do cofre de chaves com um SKU premium e selecione sua região preferida. O SKU padrão não é suportado.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protectionCertifique-se de que tem uma função de proprietário neste cofre de chaves.
Conceda
Confidential VM Orchestratorpermissões aogete aoreleasepara o cofre de chaves.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault set-policy --name $KeyVault --object-id $cvmAgent.Id --key-permissions get release
(Opcional) Se não quiser usar um Azure Key Vault, podes criar um Azure Key Vault HSM Gerido.
Siga o guia de introdução rápida para criar um HSM gerido do Azure Key Vault para aprovisionar e ativar o HSM gerido do Azure Key Vault.
Habilite a proteção contra limpeza no HSM gerenciado do Azure. Esta etapa é necessária para habilitar a liberação de chaves.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection trueConceda
Confidential VM Orchestratorpermissões ao HSM gerenciado.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault role assignment create --hsm-name $hsm --assignee $cvmAgent.Id --role "Managed HSM Crypto Service Release User" --scope /keys/$KeyName
Crie uma nova chave usando o Cofre de Chaves do Azure. Para saber como usar um HSM gerenciado do Azure, consulte a próxima etapa.
Crie uma nova chave com az keyvault key create
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --vault-name $KeyVault --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --default-cvm-policyNota
Em regiões com novas implementações, os pontos finais do MAA (Microsoft Azure Attestation) poderão não estar disponíveis ao utilizar o sinalizador
--default-cvm-policy. Como solução alternativa, pode usar o seguinte script PowerShell para recuperar a URL regional do endpoint MAA:$sub = "<subscription-id>" az account set --subscription $sub $token = Get-AzAccessToken $region = "<region-name>" $url = "https://management.azure.com/subscriptions/$sub/providers/Microsoft.Attestation/Locations/$region/defaultProvider?api-version=2021-06-01" $r = Invoke-WebRequest -Uri $url -Method Get -Headers @{'Authorization' = 'Bearer ' + $token.Token} $d = $r.content | ConvertFrom-Json $d.properties.attestUriSubstitua
<subscription-id>pelo seu ID de subscrição do Azure e<region-name>pela região de implementação alvo.Obtenha informações sobre a chave que criou.
$encryptionKeyVaultId = ((az keyvault show -n $KeyVault -g $resourceGroup) | ConvertFrom-Json).id $encryptionKeyURL= ((az keyvault key show --vault-name $KeyVault --name $KeyName) | ConvertFrom-Json).key.kidImplante um conjunto de criptografia de disco (DES) usando um modelo DES ARM (
deployDES.json).$desName = <name of DES> $deployName = <name of deployment> $desArmTemplate = <name of DES ARM template file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $desArmTemplate ` -p desName=$desName ` -p encryptionKeyURL=$encryptionKeyURL ` -p encryptionKeyVaultId=$encryptionKeyVaultId ` -p region=$regionAtribua acesso de chave ao arquivo DES.
$desIdentity= (az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $KeyVault ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
(Opcional) Crie uma nova chave a partir de um HSM Gerenciado do Azure.
Crie uma nova chave com az keyvault key create
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --hsm-name $hsm --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --default-cvm-policyObtenha informações sobre a chave que criou.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kidImplemente um DES.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURLAtribua acesso de chave ao DES.
$desIdentity=$(az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $hsm ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
Implante sua VM confidencial com a chave gerenciada pelo cliente.
Obtenha o identificador do recurso do DES.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)Implemente a sua VM confidencial utilizando um modelo ARM de VM confidencial para Intel TDX e um ficheiro de parâmetros de implementação (por exemplo,
azuredeploy.parameters.win2022.json) com a chave gerida pelo cliente.$deployName = <name of deployment> $vmName = <name of confidential VM> $cvmArmTemplate = <name of confidential VM ARM template file> $cvmParameterFile = <name of confidential VM parameter file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $cvmArmTemplate ` -p $cvmParameterFile ` -p diskEncryptionSetId=$desID ` -p vmName=$vmName
Conecte-se à sua VM confidencial para garantir que a criação foi bem-sucedida.