Démarrage rapide : déployer une machine virtuelle confidentielle avec un modèle ARM
Vous pouvez utiliser un modèle Azure Resource Manager (modèle ARM) pour créer rapidement une machine virtuelle confidentielle Azure. Les machines virtuelles confidentielles s’exécutent sur les processeurs AMD à technologie AMD SEV-SNP et sur les processeurs Intel à technologie Intel TDX pour obtenir le chiffrement et l’isolation de la mémoire des machines virtuelles. Pour plus d’informations, voir Vue d’ensemble des machines virtuelles confidentielles.
Ce tutoriel traite du déploiement d’une machine virtuelle confidentielle avec une configuration personnalisée.
Prérequis
- Un abonnement Azure. Les comptes d’essai gratuits n’ont pas accès aux machines virtuelles utilisées dans ce didacticiel. L’une des options consiste à utiliser un abonnement assorti d’un paiement à l’utilisation.
- Si vous souhaitez déployer à partir d’Azure CLI, installez PowerShell et installez Azure CLI.
Déployer un modèle de machine virtuelle confidentielle avec Azure CLI
Vous pouvez déployer un modèle de machine virtuelle confidentielle qui dispose d’un chiffrement confidentiel de disque de système d’exploitation facultatif par le biais d’une clé gérée par la plateforme.
Pour créer et déployer votre machine virtuelle confidentielle à l’aide d’un modèle ARM via l’interface Azure CLI :
Connectez-vous à votre compte Azure dans Azure CLI.
az login
Définissez votre abonnement Azure. Remplacez
<subscription-id>
par l’identificateur de votre abonnement. Veillez à utiliser un abonnement qui répond aux conditions préalables.az account set --subscription <subscription-id>
Définissez les variables de votre machine virtuelle confidentielle. Indiquez le nom du déploiement (
$deployName
), le groupe de ressources ($resourceGroup
), le nom de la machine virtuelle ($vmName
) et la région Azure ($region
). Remplacez les valeurs d’exemple par vos propres informations.Notes
Les machines virtuelles confidentielles ne sont pas disponibles dans tous les emplacements. Pour connaître les emplacements actuellement pris en charge, consultez la disponibilité des produits de machines virtuelles par région Azure.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"
Si le groupe de ressources que vous avez spécifié n’existe pas, créez un groupe de ressources portant ce nom.
az group create -n $resourceGroup -l $region
Déployez votre machine virtuelle sur Azure en utilisant un modèle ARM avec un fichier de paramètres et un modèle de fichier personnalisés.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Définir un fichier de paramètres personnalisé
Lorsque vous créez une machine virtuelle confidentielle via l’interface de ligne de commande Azure (Azure CLI), vous devez définir un fichier de paramètres personnalisé. Pour créer un fichier de paramètres JSON personnalisé :
Connectez-vous à votre compte Azure via l’interface Azure CLI.
Créez un fichier de paramètres JSON. Par exemple :
azuredeploy.parameters.json
.En fonction de l’image du système d’exploitation que vous utilisez, copiez l’exemple de fichier de paramètres Windows ou l’exemple de fichier de paramètres Linux dans votre fichier de paramètres.
Modifiez le code JSON dans le fichier de paramètres en fonction de vos besoins. Par exemple, mettez à jour le nom de l’image du système d’exploitation (
osImageName
) ou le nom d’utilisateur de l’administrateur (adminUsername
).Configurez votre paramètre de type de sécurité (
securityType
). ChoisissezVMGuestStateOnly
pour ne pas avoir de chiffrement confidentiel du disque du système d’exploitation. Ou choisissezDiskWithVMGuestState
pour avoir un chiffrement confidentiel du disque du système d’exploitation avec une clé gérée par la plateforme. Pour les références SKU Intel TDX et les images Linux uniquement, les clients peuvent choisir le type de sécuritéNonPersistedTPM
afin de déployer avec un vTPM éphémère. Pour le type de sécuritéNonPersistedTPM
, utilisez l’« apiVersion » minimale « 2023-09-01 » sousMicrosoft.Compute/virtualMachines
dans le fichier de modèle.Enregistrez votre fichier de paramètres.
Exemple de fichier de paramètres Windows
Utilisez cet exemple pour créer un fichier de paramètres personnalisé pour une machine virtuelle Windows confidentielle.
{
"$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>"
}
}
}
Exemple de fichier de paramètres Linux
Utilisez cet exemple pour créer un fichier de paramètres personnalisé pour une machine virtuelle Linux confidentielle.
{
"$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>
}
}
}
Notes
Remplace par conséquent la valeur oslmageName.
Déployer un modèle de machine virtuelle confidentielle avec chiffrement confidentiel du disque du système d’exploitation via une clé gérée par le client
Connectez-vous à votre compte Azure via l’interface Azure CLI.
az login
Définissez votre abonnement Azure. Remplacez
<subscription-id>
par l’identificateur de votre abonnement. Veillez à utiliser un abonnement qui répond aux conditions préalables.az account set --subscription <subscription-id>
Accordez un principal de service de machine virtuelle confidentielle
Confidential VM Orchestrator
au locatairePour cette étape, vous devez être un Administration global ou disposer du rôle RBAC Administrateur de l’accès utilisateur. Installez le SDK Microsoft Graph pour exécuter les commandes ci-dessous.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
Configurez votre coffre de clés Azure. Pour savoir comment utiliser un HSM managé Azure Key Vault à la place, consultez l’étape suivante.
Créez un groupe de ressources pour votre coffre de clés. Votre instance de coffre de clés et votre machine virtuelle confidentielle doivent se trouver dans la même région Azure.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $region
Créez une instance de coffre de clés avec une référence SKU Premium dans votre région préférée. La référence SKU Standard n’est pas prise en charge.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
Assurez-vous que vous disposez d’un rôle Propriétaire dans ce coffre de clés.
Accordez des autorisations
Confidential VM Orchestrator
pour obtenir (get
) et libérer (release
) le coffre de clés.$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
(Facultatif) Si vous ne souhaitez pas utiliser un coffre de clés Azure, vous pouvez créer un HSM managé Azure Key Vault à la place.
Suivez le guide de démarrage rapide pour créer un HSM managé Azure Key Vault afin de provisionner et d’activer un HSM managé Azure Key Vault.
Activez la protection contre le vidage sur le HSM managé Azure. Cette étape est nécessaire pour activer la libération de clé.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
Accordez des autorisations
Confidential VM Orchestrator
au HSM managé.$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
Créez une clé à l’aide d’Azure Key Vault. Pour savoir comment utiliser un HSM managé Azure à la place, consultez l’étape suivante.
Préparez et téléchargez la stratégie de libération de clé sur votre disque local.
Créez une clé.
$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"
Obtenez des informations sur la clé que vous avez créée.
$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
Déployez un jeu de chiffrement de disque (DES) à l’aide d’un modèle 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
Attribuez l’accès par clé au fichier 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
(Facultatif) Créez une clé à partir d’un HSM managé Azure.
Préparez et téléchargez la stratégie de libération de clé sur votre disque local.
Créez la clé.
$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"
Obtenez des informations sur la clé que vous avez créée.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
Déployez un jeu DES.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURL
Attribuez l’accès par clé au jeu 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
Déployez votre machine virtuelle confidentielle avec la clé gérée par le client.
Obtenez l’ID de ressource du jeu DES.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
Déployez votre machine virtuelle confidentielle à l’aide d’un modèle ARM de machine virtuelle confidentielle pour Intel TDX et d’un fichier de paramètres de déploiement (par exemple,
azuredeploy.parameters.win2022.json
) avec la clé gérée par le client.$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
Connectez-vous à votre machine virtuelle confidentielle pour vérifier que la création a réussi.