Avvio rapido: Distribuire una macchina virtuale riservata con un modello di ARM
È possibile usare un modello di Azure Resource Manager (modello di ARM) per creare rapidamente una macchina virtuale riservata di Azure. Le macchine virtuali riservate vengono eseguite su entrambi i processori AMD supportati dai processori AMD edizione Standard V-SNP e Intel supportati da Intel TDX per ottenere la crittografia e l'isolamento della memoria delle macchine virtuali. Per altre informazioni, vedere Panoramica delle macchine virtuali riservate.
Questa esercitazione illustra la distribuzione di una macchina virtuale riservata con una configurazione personalizzata.
Prerequisiti
- Una sottoscrizione di Azure. Gli account di valutazione gratuita non hanno accesso alle macchine virtuali usate in questa esercitazione. Un'opzione può essere l'uso di una sottoscrizione con pagamento in base al consumo.
- Se si vuole 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.Nota
Le macchine virtuali riservate non sono disponibili in tutte le posizioni. Per le posizioni attualmente supportate, vedere quali prodotti macchina virtuale 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 con 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. Per le distribuzioni TDX di seguito è riportato un modello di esempio: https://aka.ms/TDXtemplate.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "https://aka.ms/CVMTemplate" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Definire un file di parametri personalizzato
Quando si crea una macchina virtuale riservata tramite l'interfaccia della riga di comando di Azure, è necessario definire un file di parametri personalizzato. Per creare un file di parametri JSON personalizzato:
Accedere all'account Azure tramite l'interfaccia della riga di comando di Azure.
Creare un file di parametri JSON. Ad esempio,
azuredeploy.parameters.json
.A seconda dell'immagine del sistema operativo in uso, copiare il file di parametri di Windows di esempio o il file di 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 le immagini basate su Linux, i clienti possono scegliere ilNonPersistedTPM
tipo di sicurezza da distribuire con un vTPM temporaneo. Per ilNonPersistedTPM
tipo di sicurezza usare il valore minimo "apiVersion": "2023-09-01"Microsoft.Compute/virtualMachines
nel file modello.Salvare il file dei parametri.
File di parametri di Windows di esempio
Usare questo esempio per creare un file di 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 di parametri di Linux di esempio
Usare questo esempio per creare un file di 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 il ruolo
Confidential VM Orchestrator
dell'entità servizio della macchina virtuale riservata al tenantPer questo passaggio è necessario essere un amministratore globale o avere il ruolo Controllo degli accessi in base al ruolo 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 vuole usare un insieme di credenziali delle chiavi di Azure, è possibile creare un modulo di protezione hardware gestito di Azure Key Vault in alternativa.
Seguire l'avvio rapido per la creazione di 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 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 autorizzazioni
Confidential VM Orchestrator
per il 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 usando un modello di ARM 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 AMD edizione Standard V-SNP o 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 macchina virtuale riservata per assicurarsi che la creazione abbia avuto esito positivo.