Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 loginDé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 $regionDé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). ChoisissezVMGuestStateOnlypour ne pas avoir de chiffrement confidentiel du disque du système d’exploitation. Ou choisissezDiskWithVMGuestStatepour 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éNonPersistedTPMafin 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/virtualMachinesdans 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 loginDé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 Orchestratorau 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 $regionCré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-protectionAssurez-vous que vous disposez d’un rôle Propriétaire dans ce coffre de clés.
Accordez des autorisations
Confidential VM Orchestratorpour 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 azure Key Vault, 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 trueAccordez des autorisations
Confidential VM Orchestratorau 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.
Créer une nouvelle clé avec 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-policyObtenez 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.kidDé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=$regionAttribuez 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.
Créer une nouvelle clé avec 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-policyObtenez des informations sur la clé que vous avez créée.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kidDéployez un jeu DES.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURLAttribuez 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.