使用 Terraform 对多个磁盘进行 Azure 磁盘加密

Azure Disk Encryption with Terraform for multiple disks

所以我可以用我在这个网站上看到的 Terrafrom 加密 os 磁盘。但是我如何加密数据磁盘呢?我想也许 "VolumeType": "All" 会覆盖所有磁盘,但那并没有发生。此代码适用于加密 os 磁盘...我需要为多个磁盘做什么?我卡住了。

谢谢!

provider "azurerm" {
  features {}
}

data "azurerm_key_vault" "keyvault" {
  name                = "testkeyvault1"
  resource_group_name = "testRG1"
}

resource "azurerm_virtual_machine_extension" "vmextension" {
   name                       = "DiskEncryption"
   virtual_machine_id         = "/subscriptions/<sub id>/resourceGroups/TESTRG1/providers/Microsoft.Compute/virtualMachines/testvm-1"
  publisher                  = "Microsoft.Azure.Security"
  type                       = "AzureDiskEncryption"
  type_handler_version       = "2.2"
  #auto_upgrade_minor_version = true

  settings = <<SETTINGS
    {
        "EncryptionOperation": "EnableEncryption",
        "KeyVaultURL": "${data.azurerm_key_vault.keyvault.vault_uri}",
        "KeyVaultResourceId": "${data.azurerm_key_vault.keyvault.id}",                  
        "KeyEncryptionKeyURL": "https://testkeyvault1-1.vault.azure.net/keys/testKey/314c507de8a047a5bfeeb477efcbff60",
        "KekVaultResourceId": "${data.azurerm_key_vault.keyvault.id}",                  
        "KeyEncryptionAlgorithm": "RSA-OAEP",
        "VolumeType": "All"
    }
SETTINGS

  tags = {
    Environment = "test"
  }
}

我针对 新创建的具有 2 个数据磁盘的 VM 测试了您的代码,这对我来说也是一样的,如果我保持 "Volume: ALL" 然后也只有 OS 磁盘启用 ADE 而不是数据磁盘,如果我从门户或 Azure CLI 验证。

解决方法如下:

请确保附加的数据磁盘添加为卷并且格式化在从 Terraform 添加扩展之前从 VM

完成上述操作并对代码执行 terraform apply 后,成功应用后它将反映在 Portal 以及 VM 内部。