Exercice - Chiffrer des disques de machines virtuelles existantes

Effectué

Supposons que vous développiez une application de gestion financière pour de nouvelles start-ups. Vous voulez vous assurer que toutes les données de vos clients sont sécurisées. Vous avez donc décidé d’implémenter Azure Disk Encryption (ADE) sur tous les disques de système d’exploitation et de données sur les serveurs qui hébergent cette application. Dans le cadre de vos exigences de conformité, vous devez également assurer la gestion de vos propres clés de chiffrement.

Dans cette unité, vous chiffrez des disques sur une machine virtuelle Windows existante et gérez les clés de chiffrement en utilisant votre propre Azure Key Vault.

Préparer l’environnement

Vous commencez par déployer une nouvelle machine virtuelle Windows sur une machine virtuelle Azure.

Déployer une machine virtuelle Windows

Pour créer et déployer une machine virtuelle Windows, utilisez la fenêtre Azure PowerShell à droite.

  1. Définissez une variable PowerShell destinée à contenir l’emplacement sélectionné. Utilisez la même région que celle du groupe de ressources.

    $location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
    

    Conseil

    Vous pouvez utiliser le bouton Copier pour copier des commandes dans le Presse-papiers. Pour coller, cliquez avec le bouton droit sur une nouvelle ligne dans le terminal Cloud Shell et sélectionnez Coller ou utilisez le raccourci clavier Maj+Inser (⌘+V sur macOS).

  2. Ensuite, définissez d’autres variables pratiques pour capturer le nom de la machine virtuelle et le groupe de ressources. Vous utilisez ici le groupe de ressources précédemment créé. Normalement, vous devriez créer un nouveau groupe de ressources dans votre abonnement avec New-AzResourceGroup.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. Pour créer une machine virtuelle, utilisez New-AzVm :

    New-AzVm `
        -ResourceGroupName $rgName `
        -Name $vmName `
        -Location $location `
        -OpenPorts 3389
    

    Quand Cloud Shell vous y invite, entrez un nom d’utilisateur et un mot de passe pour la machine virtuelle. Ces informations constituent le compte initial créé pour la machine virtuelle.

    Remarque

    Cette commande utilise certaines valeurs par défaut puisque nous n’avons pas fourni beaucoup d’options. Plus précisément, cela crée une image Windows 2016 Server avec la taille définie sur Standard_DS1_v2. N’oubliez pas que les machines virtuelles du niveau de base ne prennent pas en charge ADE si vous décidez de spécifier la taille de machine virtuelle.

  4. Après le déploiement de la machine virtuelle, capturez les détails de la machine virtuelle dans une variable. Vous pouvez utiliser cette variable pour découvrir ce que vous avez créé :

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. Vous pouvez utiliser le code suivant pour confirmer le disque de système d’exploitation attaché à la machine virtuelle :

    $vm.StorageProfile.OSDisk
    
    OsType                  : Windows
    EncryptionSettings      :
    Name                    : fmdata-vm01_OsDisk_1_6bcf8dcd49794aa785bad45221ec4433
    Vhd                     :
    Image                   :
    Caching                 : ReadWrite
    WriteAcceleratorEnabled :
    CreateOption            : FromImage
    DiskSizeGB              : 127
    ManagedDisk             : Microsoft.Azure.Management.Compute.Models.ManagedDiskP
                              arameters
    
  6. Vérifiez l’état actuel du chiffrement sur le disque de système d’exploitation (et sur les éventuels disques de données).

    Get-AzVmDiskEncryptionStatus  `
        -ResourceGroupName $rgName `
        -VMName $vmName
    

    Notez que les disques sont actuellement non chiffrés.

    OsVolumeEncrypted          : NotEncrypted
    DataVolumesEncrypted       : NotEncrypted
    OsVolumeEncryptionSettings :
    ProgressMessage            : No Encryption extension or metadata found on the VM
    

Nous allons y remédier.

Chiffrer les disques de machine virtuelle avec Azure Disk Encryption

Nous devons protéger ces données, il faut donc chiffrer les disques. Rappelez-vous que nous devons effectuer plusieurs étapes :

  1. Créer un coffre de clés.

  2. Définir le coffre de clés pour prendre en charge le chiffrement de disque.

  3. Indiquer à Azure de chiffrer les disques de machine virtuelle à l’aide de la clé stockée dans le coffre de clés.

Conseil

Nous allons examiner ces étapes une par une, mais quand vous effectuerez cette tâche dans votre propre abonnement, vous pourrez utiliser un script PowerShell pratique dont le lien est fourni dans la section Récapitulatif de ce module.

Créer un coffre de clés

Pour créer un coffre de clés Azure, nous devons activer le service dans notre abonnement. Vous n’êtes obligé d’activer le service qu’une seule fois.

Conseil

En fonction de votre abonnement, vous devez peut-être activer le fournisseur Microsoft.KeyVault avec l’applet de commande Register-AzResourceProvider. Cela n’est pas nécessaire dans l’abonnement bac à sable Azure.

  1. Choisissez un nom pour votre nouveau coffre de clés. Il doit être unique et avoir entre 3 et 24 caractères, constitués de chiffres, de lettres et de tirets. Essayez d’ajouter des chiffres aléatoires à la fin pour remplacer les chiffres 1234 ci-dessous :

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. Créez un coffre de clés Azure avec New-AzKeyVault :

    • Assurez-vous de le placer dans le même groupe de ressources et au même emplacement que votre machine virtuelle.
    • Autorisez l’utilisation du coffre de clés avec le chiffrement de disque.
    • Spécifiez un nom de coffre de clés unique.
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    Cette commande affiche un avertissement indiquant qu’aucun utilisateur n’y a accès.

    WARNING: Access policy is not set. No user or app have access permission to use this vault. This warning can occur if the vault was created by a service principal. To set access policies, use Set-AzKeyVaultAccessPolicy.
    

    Cet avertissement n’est pas un problème dans la mesure où nous utilisons le coffre seulement pour y stocker les clés de chiffrement de la machine virtuelle. Les utilisateurs n’ont pas besoin d’accéder à ces données.

Chiffrer le disque

Vous êtes presque prêt à chiffrer les disques. Avant cela, un avertissement s’affiche concernant la création de sauvegardes.

Important

Dans un système de production, vous devriez effectuer une sauvegarde des disques managés en utilisant Sauvegarde Azure ou en créant un instantané. Vous pouvez créer des instantanés dans le portail Azure ou à partir de la ligne de commande. Dans PowerShell, vous utilisez la cmdlet New-AzSnapshot. Comme il s’agit d’un exercice simple et que vous supprimez ces données une fois terminé, vous allez ignorer cette étape.

  1. Pour conserver les informations du coffre de clés, définissez une variable :

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. Ensuite, pour chiffrer les disques de machine virtuelle, utilisez l’applet de commande Set-AzVmDiskEncryptionExtension.

    • Le paramètre VolumeType permet de spécifier les disques à chiffrer : [All | OS | Data]. Sa valeur par défaut est All. Sur certaines distributions de Linux, seuls les disques de données peuvent être chiffrés.
    • Vous pouvez fournir l’indicateur SkipVmBackup pour les disques managés s’il n’y a pas d’instantané.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. La cmdlet vous avertit que la machine virtuelle doit être mise hors ligne et que la tâche peut prendre plusieurs minutes. Continuez et patientez :

    Enable AzureDiskEncryption on the VM
    This cmdlet prepares the VM and enables encryption which may reboot the machine and takes 10-15 minutes to
    finish. Please save your work on the VM before confirming. Do you want to continue?
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
    
  4. Une fois l’applet de commande exécutée, vérifiez à nouveau l’état du chiffrement :

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

    Le disque de système d’exploitation doit maintenant être chiffré. Les éventuels disques de données attachés qui sont exposés à Windows sont également chiffrés.

    OsVolumeEncrypted          : Encrypted
    DataVolumesEncrypted       : NoDiskFound
    OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
    ProgressMessage            : Provisioning succeeded
    

Remarque

Les nouveaux disques ajoutés après le chiffrement ne sont pas automatiquement chiffrés. Pour les chiffrer, vous devrez réexécuter la cmdlet Set-AzVMDiskEncryptionExtension. Si vous ajoutez des disques à une machine virtuelle qui comporte déjà des disques chiffrés, n’oubliez pas d’indiquer un nouveau numéro dans la séquence. En outre, les disques qui ne sont pas visibles par le système d’exploitation ne sont pas chiffrés. Le disque doit être correctement partitionné, formaté et monté pour que l’extension BitLocker puisse le voir.