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

Quand 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. Pour obtenir des informations conceptuelles sur le chiffrement sur l'hôte ainsi que sur d'autres types de chiffrement de disques managés, consultez Chiffrement sur l'hôte : chiffrement de bout en bout pour vos données de machine virtuelle.

Restrictions

  • Ne prend pas en charge les disques Ultra.
  • Ne peut pas être activé si Azure Disk Encryption (le chiffrement de machine virtuelle invité à l’aide de BitLocker/VM-decryption) est activé sur vos machines virtuelles ou groupes de machines virtuelles identiques.
  • 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 un groupe de machines virtuelles identiques existant. 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.
  • Prend en charge les disques de système d’exploitation éphémères, mais uniquement avec les clés gérées par la plateforme.

Tailles des machines virtuelles prises en charge

Toutes les dernières générations de tailles de machines virtuelles prennent en charge le chiffrement sur l’hôte :

Type Non pris en charge Prise en charge
Usage général Dv3, Dv2, Av2 B, DSv2, Dsv3, DC, DCv2, Dav4, Dasv4, Ddv4, Ddsv4
Optimisé pour le calcul Fsv2
Mémoire optimisée Ev3 Esv3, M, Mv2, Eav4, Easv4, Edv4, Edsv4
Optimisé pour le stockage LS, Lsv2 (disques NVMe non chiffrés)
GPU NC, NV NCv2, NCv3, ND, NVv3, NVv4, NDv2 (préversion)
Calcul haute performance H HB, HC, HBv2
Générations précédentes F, A, D, L, G DS, GS, Fs, NVv2

La liste complète des tailles de machines virtuelles prises en charge peut être extraite par programmatique. Pour savoir comment les récupérer par programmation, 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. Suivez les étapes ci-dessous pour activer la fonctionnalité pour votre abonnement :

  1. Exécutez la commande suivante pour inscrire la fonctionnalité pour votre abonnement

    az feature register --namespace Microsoft.Compute --name EncryptionAtHost
    
  2. 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 un coffre de clés Azure Key Vault et un jeu de chiffrement DiskEncryptionSet

Une fois la fonctionnalité activée, vous devez configurer un coffre de clés Azure Key Vault et un jeu de chiffrement DiskEncryptionSet, si ce n'est déjà fait.

  1. Vérifiez que vous avez installé la dernière version d’Azure CLI et que vous êtes connecté à un compte Azure avec az login.

  2. Créer une instance Azure Key Vault et une clé de chiffrement.

    Lorsque vous créez l’instance Key Vault, vous devez activer la suppression réversible et la protection de purge. La suppression réversible permet de s’assurer que Key Vault contient une clé supprimée pour une période de rétention donnée (90 jours par défaut). 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 keyvault create -n $keyVaultName -g $rgName -l $location --enable-purge-protection true --enable-soft-delete true
    
    az keyvault key create --vault-name $keyVaultName -n $keyName --protection software
    
  3. Créer une instance de DiskEncryptionSet.

    keyVaultId=$(az keyvault show --name $keyVaultName --query [id] -o tsv)
    
    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 --source-vault $keyVaultId --key-url $keyVaultKeyUrl
    
  4. Accorder à la ressource DiskEncryptionSet l’accès au coffre de clés.

    Notes

    La création de l’identité de votre DiskEncryptionSet dans votre annuaire Azure Active Directory peut prendre quelques minutes. 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
    

Exemples

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=UbuntuLTS 
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=UbuntuLTS 

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

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 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
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=UbuntuLTS 
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 UbuntuLTS \
--upgrade-policy automatic \
--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.

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

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image UbuntuLTS \
--upgrade-policy automatic \
--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érifier l’état du chiffrement sur 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

Recherche des tailles de machine virtuelle prises en charge

Les tailles de machine virtuelle héritées ne sont pas prises en charge. Pour accéder à la liste des tailles de machines virtuelles prises en charge, procédez comme suit :

Appelez l'API des références SKU de ressource et 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"
        }
        ]
    }

Ou appelez la cmdlet PowerShell 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