Guida di avvio rapido: distribuire una VM riservata con un modello di ARM
È possibile usare un modello di Azure Resource Manager (modello di ARM) per creare rapidamente una VM riservata di Azure. Le macchine virtuali riservate vengono eseguite sui processori AMD supportati dai processori AMD SEV-SNP e sui processori Intel supportati da Intel TDX, per ottenere la crittografia e l'isolamento della memoria delle VM. Per altre informazioni, vedere Panoramica delle macchine virtuali riservate.
In questa esercitazione viene illustrata la distribuzione di una VM riservata con una configurazione personalizzata.
Prerequisiti
- Una sottoscrizione di Azure. Le versioni di prova gratuite dell'account non possono accedere alle VM utilizzate in questa esercitazione. Una possibile opzione è l'uso di una sottoscrizione con pagamento in base al consumo.
- Se si desidera eseguire la distribuzione dall'interfaccia della riga di comando di Azure, installare PowerShell e installare l'interfaccia della riga di comando di Azure.
Distribuire un modello di macchina virtuale riservata con l'interfaccia della riga di comando di Azure
È possibile distribuire un modello di macchina virtuale riservata, con crittografia riservata del disco del sistema operativo facoltativa, tramite una chiave gestita dalla piattaforma.
Per creare e distribuire la macchina virtuale riservata usando un modello di ARM tramite l'interfaccia della riga di comando di Azure:
Accedere all'account Azure nell'interfaccia della riga di comando di Azure.
az login
Impostare la sottoscrizione di Azure. Sostituire
<subscription-id>
con l'identificatore della sottoscrizione. Assicurarsi di usare una sottoscrizione che soddisfi i prerequisiti.az account set --subscription <subscription-id>
Impostare le variabili per la macchina virtuale riservata. Specificare il nome della distribuzione (
$deployName
), il gruppo di risorse ($resourceGroup
), il nome della macchina virtuale ($vmName
) e l'area di Azure ($region
). Sostituire i valori di esempio con i propri dati.Nota
Le macchine virtuali riservate non sono disponibili in tutte le posizioni. Per le posizioni attualmente supportate, vedere quali prodotti VM sono disponibili in base all'area di Azure.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"
Se il gruppo di risorse specificato non esiste, creare un gruppo di risorse definito da tale nome.
az group create -n $resourceGroup -l $region
Distribuire la macchina virtuale in Azure usando un modello di Resource Manager con un file di parametri personalizzato e un file modello.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Definire un file dei parametri personalizzato
Quando si crea una macchina virtuale riservata tramite l'interfaccia della riga di comando di Azure, è necessario definire un file dei parametri personalizzato. Per creare un file dei parametri JSON personalizzato:
Accedere all'account Azure tramite l'interfaccia della riga di comando di Azure.
Creare un file dei parametri JSON. Ad esempio,
azuredeploy.parameters.json
.A seconda dell'immagine del sistema operativo in uso, copiare il file dei parametri di Windows di esempio o il file dei parametri Linux di esempio nel nuovo file dei parametri.
Modificare il codice JSON nel file di parametri in base alle esigenze. Ad esempio, aggiornare il nome dell'immagine del sistema operativo (
osImageName
) o il nome utente dell'amministratore (adminUsername
).Configurare l'impostazione del tipo di sicurezza (
securityType
). ScegliereVMGuestStateOnly
per non applicare la crittografia riservata del disco del sistema operativo. Oppure, scegliereDiskWithVMGuestState
per la crittografia riservata del disco del sistema operativo con una chiave gestita dalla piattaforma. Solo per gli SKU Intel TDX e per le immagini basate su Linux, i clienti possono scegliere il tipo di sicurezzaNonPersistedTPM
da distribuire con un vTPM temporaneo. Per il tipo di sicurezzaNonPersistedTPM
usare il valore minimo "apiVersion": "2023-09-01"Microsoft.Compute/virtualMachines
nel file modello.Salvare il file dei parametri.
File dei parametri di Windows di esempio
Usare questo esempio per creare un file dei parametri personalizzato per una macchina virtuale riservata basata su 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>"
}
}
}
File dei parametri di Linux di esempio
Usare questo esempio per creare un file dei parametri personalizzato per una macchina virtuale riservata basata su 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
Sostituire il valore osImageName di conseguenza.
Distribuire un modello di macchina virtuale riservata con crittografia riservata del disco del sistema operativo tramite la chiave gestita dal cliente
Accedere all'account Azure tramite l'interfaccia della riga di comando di Azure.
az login
Impostare la sottoscrizione di Azure. Sostituire
<subscription-id>
con l'identificatore della sottoscrizione. Assicurarsi di usare una sottoscrizione che soddisfi i prerequisiti.az account set --subscription <subscription-id>
Concedere al tenant il ruolo di entità servizio della macchina virtuale riservata
Confidential VM Orchestrator
Per questo passaggio è necessario essere un amministratore globale o avere il ruolo Controllo degli accessi in base al ruolo di Amministratore accesso utente. Installare Microsoft Graph SDK per eseguire i comandi seguenti.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
Configurare l'insieme di credenziali delle chiavi di Azure. Per informazioni su come usare un modulo di protezione hardware gestito di Azure Key Vault, vedere il passaggio successivo.
Creare un gruppo di risorse per l'insieme di credenziali delle chiavi. L'istanza dell'insieme di credenziali delle chiavi e la macchina virtuale riservata devono trovarsi nella stessa area di Azure.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $region
Creare un'istanza dell'insieme di credenziali delle chiavi con uno SKU Premium e selezionare l'area preferita. Lo SKU standard non è supportato.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
Assicurarsi di avere un ruolo di proprietario in questo insieme di credenziali delle chiavi.
Concedere le autorizzazioni
Confidential VM Orchestrator
per le operazioniget
erelease
per l'insieme di credenziali delle chiavi.$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
(Facoltativo) Se non si desidera usare un insieme di credenziali delle chiavi di Azure, in alternativa è possibile creare un modulo di protezione hardware gestito di Azure Key Vault.
Seguire le istruzioni della guida di avvio rapido per creare un modulo di protezione hardware gestito di Azure Key Vault per effettuare il provisioning e attivare il modulo di protezione hardware gestito di Azure Key Vault.
Abilitare la protezione dalla rimozione definitiva nel modulo di protezione hardware gestito di Azure. Questo passaggio è obbligatorio per abilitare il rilascio delle chiavi.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
Concedere le autorizzazioni
Confidential VM Orchestrator
al modulo di protezione hardware gestito.$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
Creare una nuova chiave con Azure Key Vault. Per informazioni su come usare un modulo di protezione hardware gestito di Azure, vedere il passaggio successivo.
Preparare e scaricare i criteri di rilascio delle chiavi nel disco locale.
Creare una nuova chiave.
$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 --policy "@.\skr-policy.json"
Ottenere informazioni sulla chiave creata.
$encryptionKeyVaultId = ((az keyvault show -n $KeyVault -g $resourceGroup) | ConvertFrom-Json).id $encryptionKeyURL= ((az keyvault key show --vault-name $KeyVault --name $KeyName) | ConvertFrom-Json).key.kid
Distribuire un set di crittografia dischi (DES) usando un modello DI Resource Manager des (
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=$region
Assegnare l'accesso alla chiave al file 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
(Facoltativo) Creare una nuova chiave da un modulo di protezione hardware gestito di Azure.
Preparare e scaricare i criteri di rilascio delle chiavi nel disco locale.
Creare la nuova chiave.
$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 --policy "@.\skr-policy.json"
Ottenere informazioni sulla chiave creata.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
Distribuire un set di crittografia dischi.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURL
Assegnare l'accesso alla chiave al set di crittografia dischi.
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
Distribuire la macchina virtuale riservata con la chiave gestita dal cliente.
Ottenere l'ID risorsa per il set di crittografia dischi.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
Distribuire la macchina virtuale riservata usando un modello DI Resource Manager riservato per Intel TDX e un file di parametri di distribuzione (ad esempio,
azuredeploy.parameters.win2022.json
) con la chiave gestita dal 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
Connettersi alla VM riservata per assicurarsi che la creazione abbia avuto esito positivo.