Partager via


Utiliser Azure Disk Encryption avec le séquencement d’extensions de groupes de machines virtuelles identiques

Important

Azure Disk Encryption est prévu pour la mise hors service le 15 septembre 2028. Jusqu’à cette date, vous pouvez continuer à utiliser Azure Disk Encryption sans interruption. Le 15 septembre 2028, les charges de travail compatibles avec ADE continueront d’être exécutées, mais les disques chiffrés ne pourront pas être déverrouillés après le redémarrage de la machine virtuelle, ce qui entraîne une interruption du service.

Utilisez le chiffrement sur l’hôte pour les nouvelles machines virtuelles. Toutes les machines virtuelles compatibles ADE (y compris les sauvegardes) doivent migrer vers le chiffrement à l’hôte avant la date de mise hors service pour éviter toute interruption de service. Pour plus d’informations, consultez Migrer d’Azure Disk Encryption vers le chiffrement sur l’hôte .

Il est possible d’ajouter des extensions telles qu’Azure Disk Encryption à un groupe de machines virtuelles identiques dans un ordre spécifié. Pour ce faire, utilisez un séquencement d’extensions.

En règle générale, un chiffrement doit être appliqué à un disque :

  • Après les extensions ou scripts personnalisés qui préparent les disques ou les volumes.
  • Avant les extensions ou scripts personnalisés qui accèdent ou utilisent les données figurant sur les disques ou volumes chiffrés.

Dans les deux cas, la propriété provisionAfterExtensions désigne l’extension à ajouter plus loin dans la séquence.

Exemples de modèles Azure

Si vous souhaitez qu’Azure Disk Encryption soit appliqué après une autre extension, placez la propriété provisionAfterExtensions dans le bloc d’extension AzureDiskEncryption.

Voici un exemple d’utilisation de « CustomScriptExtension », un script PowerShell qui initialise et formate un disque de Windows, suivi de « AzureDiskEncryption » :

"virtualMachineProfile": {
  "extensionProfile": {
    "extensions": [
      {
        "type": "Microsoft.Compute/virtualMachineScaleSets/extensions",
        "name": "CustomScriptExtension",
        "location": "[resourceGroup().location]",
        "properties": {
          "publisher": "Microsoft.Compute",
          "type": "CustomScriptExtension",
          "typeHandlerVersion": "1.9",
          "autoUpgradeMinorVersion": true,
          "forceUpdateTag": "[parameters('forceUpdateTag')]",
          "settings": {
            "fileUris": [
              "https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/ade-vmss/FormatMBRDisk.ps1"
            ]
          },
          "protectedSettings": {
           "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File FormatMBRDisk.ps1"
          }
        }
      },
      {
        "type": "Microsoft.Compute/virtualMachineScaleSets/extensions",
        "name": "AzureDiskEncryption",
        "location": "[resourceGroup().location]",
        "properties": {
          "provisionAfterExtensions": [
            "CustomScriptExtension"
          ],
          "publisher": "Microsoft.Azure.Security",
          "type": "AzureDiskEncryption",
          "typeHandlerVersion": "2.2",
          "autoUpgradeMinorVersion": true,
          "forceUpdateTag": "[parameters('forceUpdateTag')]",
          "settings": {
            "EncryptionOperation": "EnableEncryption",
            "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2018-02-14-preview').vaultUri]",
            "KeyVaultResourceId": "[variables('keyVaultResourceID')]",
            "KeyEncryptionKeyURL": "[parameters('keyEncryptionKeyURL')]",
            "KekVaultResourceId": "[variables('keyVaultResourceID')]",
            "KeyEncryptionAlgorithm": "[parameters('keyEncryptionAlgorithm')]",
            "VolumeType": "[parameters('volumeType')]",
            "SequenceVersion": "[parameters('sequenceVersion')]"
          }
        }
      },
    ]
  }
}

Si vous souhaitez qu’Azure Disk Encryption soit appliqué avant une autre extension, placez la propriété provisionAfterExtensions dans le bloc de l’extension à suivre.

Voici un exemple utilisant « AzureDiskEncryption » suivi de « VMDiagnosticsSettings », une extension offrant des fonctionnalités de supervision et de diagnostics sur une machine virtuelle Azure basée sur Windows :

"virtualMachineProfile": {
  "extensionProfile": {
    "extensions": [
      {
        "name": "AzureDiskEncryption",
        "type": "Microsoft.Compute/virtualMachineScaleSets/extensions",
        "location": "[resourceGroup().location]",
        "properties": {
          "publisher": "Microsoft.Azure.Security",
          "type": "AzureDiskEncryption",
          "typeHandlerVersion": "2.2",
          "autoUpgradeMinorVersion": true,
          "forceUpdateTag": "[parameters('forceUpdateTag')]",
          "settings": {
            "EncryptionOperation": "EnableEncryption",
            "KeyVaultURL": "[reference(variables('keyVaultResourceId'),'2018-02-14-preview').vaultUri]",
            "KeyVaultResourceId": "[variables('keyVaultResourceID')]",
            "KeyEncryptionKeyURL": "[parameters('keyEncryptionKeyURL')]",
            "KekVaultResourceId": "[variables('keyVaultResourceID')]",
            "KeyEncryptionAlgorithm": "[parameters('keyEncryptionAlgorithm')]",
            "VolumeType": "[parameters('volumeType')]",
            "SequenceVersion": "[parameters('sequenceVersion')]"
          }
        }
      },
      { 
        "name": "Microsoft.Insights.VMDiagnosticsSettings", 
        "type": "extensions", 
        "location": "[resourceGroup().location]", 
        "apiVersion": "2016-03-30", 
        "dependsOn": [ 
          "[concat('Microsoft.Compute/virtualMachines/myVM', copyindex())]" 
        ], 
        "properties": { 
          "provisionAfterExtensions": [
            "AzureDiskEncryption"
          ],
        "publisher": "Microsoft.Azure.Diagnostics", 
          "type": "IaaSDiagnostics", 
          "typeHandlerVersion": "1.5", 
          "autoUpgradeMinorVersion": true, 
          "settings": { 
            "xmlCfg": "[base64(concat(variables('wadcfgxstart'), 
            variables('wadmetricsresourceid'), 
            concat('myVM', copyindex()),
            variables('wadcfgxend')))]", 
            "storageAccount": "[variables('storageName')]" 
          }, 
          "protectedSettings": { 
            "storageAccountName": "[variables('storageName')]", 
            "storageAccountKey": "[listkeys(variables('accountid'), 
              '2015-06-15').key1]", 
            "storageAccountEndPoint": "https://core.windows.net" 
          } 
        } 
      },
    ]
  }
}

Pour un modèle plus détaillé, voir :

Étapes suivantes