Uso de Azure Disk Encryption con la secuenciación de extensiones de un conjunto de escalado de máquinas virtuales
Se pueden agregar extensiones como Azure Disk Encryption a un conjunto de escalado de máquinas virtuales de Azure en un orden especificado. Para ello, use la secuenciación de extensiones.
En general, se debe aplicar el cifrado en un disco:
- Después de las extensiones o los scripts personalizados que preparan los discos o volúmenes.
- Antes de las extensiones o scripts personalizados que acceden a datos o los consumen en los volúmenes o discos cifrados.
En cualquier caso, la propiedad provisionAfterExtensions
designa la extensión que se debe agregar más adelante en la secuencia.
Plantillas de Azure de ejemplo
Si desea que Azure Disk Encryption se aplique después de otra extensión, coloque la propiedad provisionAfterExtensions
en el bloque de extensiones de AzureDiskEncryption.
Este es un ejemplo en el que se usa "CustomScriptExtension", un script de PowerShell que inicializa un disco de Windows y le aplica formato, seguido 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 desea que Azure Disk Encryption se aplique antes de otra extensión, coloque la propiedad provisionAfterExtensions
en el bloque de la extensión siguiente.
Este es un ejemplo en el que se usa "AzureDiskEncryption" seguido por "VMDiagnosticsSettings", una extensión que proporciona funciones de supervisión y diagnóstico en una máquina virtual de Azure basada en 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"
}
}
},
]
}
}
Para obtener una plantilla más detallada, consulte:
- Aplique la extensión de Azure Disk Encryption después de un script de shell personalizado que le aplica formato al disco (Linux): deploy-extseq-linux-ADE-after-customscript.json
Pasos siguientes
- Más información sobre la secuenciación de extensiones: Aprovisionamiento de extensiones de secuencia en conjuntos de escalado de máquina virtual.
- Más información sobre la propiedad
provisionAfterExtensions
: Referencia de la plantilla Microsoft.Compute virtualMachineScaleSets/extensions. - Azure Disk Encryption para Virtual Machine Scale Sets
- Cifrado de conjuntos de escalado de máquinas virtuales mediante la CLI de Azure
- Cifrado de conjuntos de escalado de máquinas virtuales mediante Azure PowerShell
- Creación y configuración de un almacén de claves para Azure Disk Encryption