Utilisez Azure CLI pour activer le chiffrement de bout en bout à l’aide du chiffrement sur l’hôte

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

Lorsque vous activez le chiffrement sur l'hôte, les données stockées sur l'hôte de machine virtuelle sont chiffrées au repos et les flux sont chiffrés dans le service de stockage. Si vous souhaitez obtenir des informations conceptuelles concernant le chiffrement au niveau de l'hôte et sur d'autres types de chiffrement de disque managé, veuillez consulter Chiffrement de l'hôte : chiffrement de bout en bout pour vos données de machine virtuelle.

Restrictions

  • Prise en charge pour les disques Ultra de taille de secteur 4k et SSD Premium v2.
  • Pris en charge seulement sur les disques Ultra de taille de secteur 512e et SSD Premium v2 s’ils ont été créés après le 13/05/2023.
  • Impossible d’être activé sur des machines virtuelles ou des groupes de machines virtuelles identiques actuellement ou jamais activés par Azure Disk Encryption.
  • Azure Disk Encryption ne peut pas être activé sur les disques sur lesquels le chiffrement est activé sur l’hôte.
  • Le chiffrement peut être activé sur des groupes de machines virtuelles identiques existants. Toutefois, seules les nouvelles machines virtuelles créées après l’activation du chiffrement sont automatiquement chiffrées.
  • Les machines virtuelles existantes doivent être libérées et réallouées afin d’être chiffrées.

Disponibilité régionale

Le chiffrement sur l’hôte est disponible dans toutes les régions pour tous les types de disques.

Tailles des machines virtuelles prises en charge

La liste complète des tailles de machines virtuelles prises en charge peut être extraite par programmatique. Pour savoir comment les récupérer programmatiquement, reportez-vous à la section Rechercher les tailles de machine virtuelle prises en charge. La mise à niveau de la taille de la machine virtuelle entraîne une validation pour vérifier si la nouvelle taille de machine virtuelle prend en charge la fonctionnalité EncryptionAtHost.

Prérequis

Vous devez activer la fonctionnalité pour votre abonnement avant d’utiliser la propriété EncryptionAtHost pour votre machine virtuelle/groupe de machines virtuelles identiques. Pour activer la fonctionnalité pour votre abonnement, procédez comme suit :

  • Exécutez la commande suivante pour inscrire la fonctionnalité pour votre abonnement
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • Vérifiez que l’état de l’inscription est Inscrit (cela prend quelques minutes) à l’aide de la commande ci-dessous avant d’essayer la fonctionnalité.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

Créer des ressources

Notes

Cette section s’applique uniquement aux configurations avec des clés gérées par le client. Si vous utilisez des clés gérées par la plateforme, vous pouvez passer à la section Exemples de scripts.

Une fois la fonctionnalité activée, vous devez configurer un DiskEncryptionSet et une instance Azure Key Vault ou un HSM géré par Azure Key Vault.

Azure Key Vault

  • Installez la dernière version d’Azure CLI et connectez-vous à un compte Azure avec az login.
  • Créez un Azure Key Vault et une clé de chiffrement.

Quand vous créez le Key Vault, vous devez activer la protection de purge. La protection de purge garantit qu’une clé supprimée ne peut pas être supprimée définitivement tant que la période de rétention n’est pas écoulée. Ces paramètres vous protègent contre la perte de données en raison d’une suppression accidentelle. Ces paramètres sont obligatoires lors de l’utilisation d’un coffre de clés Key Vault pour le chiffrement des disques managés.

Important

N’utilisez pas de casse mixte pour la région. Si vous le faites, vous risquez de rencontrer des problèmes lors de l’attribution de disques supplémentaires à la ressource dans le Portail Azure.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName

az account set --subscription $subscriptionId

az group create --resource-group $rgName --location $location

az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true 

az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
  • Créez un DiskEncryptionSet. Vous pouvez affecter la valeur true à Enable-Auto-Key-rotation pour activer la rotation automatique de la clé. Lorsque vous activez la rotation automatique, le système met automatiquement à jour tous les disques managés, les captures instantanées et les images référençant le jeu de chiffrement de disque pour utiliser la nouvelle version de la clé dans un délai d’une heure.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)

az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
  • Accorder à la ressource DiskEncryptionSet l’accès au coffre de clés.

Remarque

La création de l’identité de votre DiskEncryptionSet dans Microsoft Entra ID peut prendre quelques minutes à Azure. Si vous recevez une erreur comme « Impossible de trouver l’objet Active Directory » lors de l’exécution de la commande suivante, attendez quelques minutes et réessayez.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)

az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get

HSM géré par Azure Key Vault

Vous pouvez également utiliser un HSM géré pour gérer vos clés.

Pour ce faire, vous devez remplir les conditions préalables suivantes :

Configuration

Une fois que vous avez créé un module HSM géré et ajouté des autorisations, activez la protection contre le vidage et créez une clé de chiffrement.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
    
az account set --subscription $subscriptionId
    
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
    
az keyvault key create --hsm-name  $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048

Ensuite, créez un DiskEncryptionSet.

keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
    
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false

Enfin, accordez au DiskEncryptionSet l’accès au HSM géré.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
    
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys

Exemples de scripts

Créer une machine virtuelle avec chiffrement sur l’hôte activé avec des clés gérées par le client

Créez une machine virtuelle avec disques managés à l’aide de l’URI de ressource du DiskEncryptionSet créé précédemment afin de chiffrer le cache des disques de système d’exploitation et des disques de données avec des clés gérées par le client. Les disques temporaires sont chiffrés avec des clés gérées par la plateforme.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Créer une machine virtuelle avec chiffrement sur l’hôte activé avec des clés gérées par la plateforme

Créez une machine virtuelle avec chiffrement sur l’hôte activé afin de chiffrer le cache des disques de système d’exploitation/de données et des disques temporaires avec des clés gérées par la plateforme.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \

Mettre à jour une machine virtuelle pour activer le chiffrement sur l’hôte

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true

Vérifier l’état du chiffrement sur l’hôte pour une machine virtuelle

rgName=yourRGName
vmName=yourVMName

az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv

Mettre à jour une machine virtuelle pour désactiver le chiffrement sur l’hôte

Vous devez libérer votre machine virtuelle pour pouvoir désactiver le chiffrement sur l’hôte.

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false

Créer un groupe de machines virtuelles identiques avec chiffrement sur l’hôte activé avec des clés gérées par le client

Créez un groupe de machines virtuelles identiques avec des disques managés à l’aide de l’URI de ressource du DiskEncryptionSet créé précédemment afin de chiffrer le cache des disques du système d’exploitation et des disques de données avec des clés gérées par le client. Les disques temporaires sont chiffrés avec des clés gérées par la plateforme.

Important

À compter de novembre 2023, les groupes de machines virtuelles identiques créés à l'aide de PowerShell et d'Azure CLI utilisent par défaut le mode d'orchestration flexible si aucun mode d'orchestration n'est spécifié. Pour plus d’informations sur ce changement et les actions que vous devez entreprendre, consultez l’article Changement cassant pour les clients VMSS PowerShell/CLI – Hub Communauté Microsoft

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 64 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Créer un groupe de machines virtuelles identiques avec chiffrement sur l’hôte activé avec des clés gérées par la plateforme

Créez un groupe de machines virtuelles identiques avec chiffrement sur l’hôte activé afin de chiffrer le cache des disques de système d’exploitation/de données et des disques temporaires avec des clés gérées par la plateforme.

Important

À compter de novembre 2023, les groupes de machines virtuelles identiques créés à l'aide de PowerShell et d'Azure CLI utilisent par défaut le mode d'orchestration flexible si aucun mode d'orchestration n'est spécifié. Pour plus d’informations sur ce changement et les actions que vous devez entreprendre, consultez l’article Changement cassant pour les clients VMSS PowerShell/CLI – Hub Communauté Microsoft

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \

Mettre à jour un groupe de machines virtuelles identiques pour activer le chiffrement sur l’hôte

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true

Vérifiez le statut du chiffrement au niveau de l’hôte pour un groupe de machines virtuelles identiques

rgName=yourRGName
vmssName=yourVMName

az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv

Mettre à jour un groupe de machines virtuelles identiques pour désactiver le chiffrement sur l’hôte

Vous pouvez désactiver le chiffrement sur l’hôte pour votre groupe de machines virtuelles identiques, mais cela affecte uniquement les machines virtuelles créées une fois que vous avez désactivé le chiffrement sur l’hôte. Pour les machines virtuelles existantes, vous devez désallouer la machine virtuelle, désactiver le chiffrement à l’hôte sur cette machine virtuelle, puis réallouer la machine virtuelle.

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false

Recherche des tailles de machine virtuelle prises en charge

Les tailles de machines virtuelles héritées ne sont pas prises en charge. Vous pouvez trouver la liste des tailles de machines virtuelles prises en charge au moyen des API de référence SKU de la ressource ou du module Azure PowerShell. Vous ne pouvez pas trouver les tailles prises en charge grâce à l’interface CLI.

Lorsque vous appelez l'API des références SKU de la ressource, vérifiez que la capacité EncryptionAtHostSupported est définie sur True.

    {
        "resourceType": "virtualMachines",
        "name": "Standard_DS1_v2",
        "tier": "Standard",
        "size": "DS1_v2",
        "family": "standardDSv2Family",
        "locations": [
        "CentralUSEUAP"
        ],
        "capabilities": [
        {
            "name": "EncryptionAtHostSupported",
            "value": "True"
        }
        ]
    }

Pour le module Azure PowerShell, utilisez l’applet de commande Get-AzComputeResourceSku.

$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}

foreach($vmSize in $vmSizes)
{
    foreach($capability in $vmSize.capabilities)
    {
        if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
        {
            $vmSize

        }

    }
}

Étapes suivantes

Maintenant que vous avez créé et configuré ces ressources, vous pouvez les utiliser pour sécuriser vos disques managés. Le lien suivant contient des exemples de scripts, chacun correspondant à un scénario différent, que vous pouvez utiliser pour sécuriser vos disques managés.

Exemples de modèles Azure Resource Manager