Kryptera operativsystem och anslutna datadiskar i en VM-skalningsuppsättning med Azure CLI

Azure CLI används för att skapa och hantera Azure-resurser från kommandoraden eller i skript. Den här snabbstarten visar hur du använder Azure CLI för att skapa och kryptera en VM-skalningsuppsättning. Mer information om hur du tillämpar Azure Disk-kryptering på en VM-skalningsuppsättning finns i Azure Disk Encryption for Virtual Machine Scale Sets (Azure Disk Encryption for Virtual Machine Scale Sets).

Förutsättningar

  • Den här artikeln kräver version 2.0.31 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.

Skapa en skalningsuppsättning

Innan du kan skapa en skalningsuppsättning skapar du en resursgrupp med az group create. I följande exempel skapas en resursgrupp med namnet myResourceGroup på platsen eastus:

az group create --name myResourceGroup --location eastus

Skapa nu en VM-skalningsuppsättning med az vmss create. I följande exempel skapas en skalningsuppsättning med namnet myScaleSet som är inställd på att uppdateras automatiskt när ändringarna tillämpas och genererar SSH-nycklar om de inte finns i ~/.ssh/id_rsa. En 32 Gb-datadisk är ansluten till varje VM-instans och Azure Custom Script Extension används för att förbereda datadiskarna med az vmss extension set:

Viktigt!

Se till att välja operativsystem som stöds med ADE. Operativsystem som stöds för ADE.

# Create a scale set with attached data disk
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode Flexible \
  --image <SKU Linux Image> \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 32

# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

Det tar några minuter att skapa och konfigurera alla skalningsuppsättningsresurser och virtuella datorer.

Skapa ett Azure-nyckelvalv aktiverat för diskkryptering

Azure Key Vault kan lagra nycklar, hemligheter eller lösenord som gör att du på ett säkert sätt kan implementera dem i dina program och tjänster. Kryptografiska nycklar lagras i Azure Key Vault med hjälp av programvaruskydd, eller så kan du importera eller generera dina nycklar i maskinvarusäkerhetsmoduler (HSM) som är certifierade enligt FIPS 140-verifierade standarder. Dessa kryptografiska nycklar används för att kryptera och dekryptera virtuella diskar som är anslutna till den virtuella datorn. Du behåller kontrollen över dessa kryptografiska nycklar och kan granska deras användning.

Definiera dina egna unika keyvault_name. Skapa sedan en KeyVault med az keyvault create i samma prenumeration och region som skalningsuppsättningen och ange åtkomstprincipen --enabled-for-disk-encryption .

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption

Använda ett befintligt Key Vault

Det här steget krävs bara om du har ett befintligt Key Vault som du vill använda med diskkryptering. Hoppa över det här steget om du skapade ett Key Vault i föregående avsnitt.

Definiera dina egna unika keyvault_name. Sedan uppdaterade du din KeyVault med az keyvault update och anger åtkomstprincipen --enabled-for-disk-encryption .

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption

Aktivera kryptering

Kommentar

Om du använder vm-skalningsuppsättningar i flexibelt orkestreringsläge krypteras endast nya instanser. Befintliga instanser i skalningsuppsättningen måste krypteras individuellt eller tas bort och ersättas.

Om du vill kryptera VM-instanser i en skalningsuppsättning får du först information om Key Vault-resurs-ID:t med az keyvault show. Dessa variabler används för att sedan starta krypteringsprocessen med az vmss encryption enable:

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Det kan ta en minut eller två innan krypteringsprocessen startar.

Eftersom skalningsuppsättningen är en uppgraderingsprincip för skalningsuppsättningen som skapades i ett tidigare steg är inställd på automatisk startar de virtuella datorinstanserna automatiskt krypteringsprocessen. Starta krypteringsprincipen på de virtuella datorinstanserna med az vmss update-instances på skalningsuppsättningar där uppgraderingsprincipen ska vara manuell.

Aktivera kryptering med KEK för att omsluta nyckeln

Du kan också använda en nyckelkrypteringsnyckel för ökad säkerhet när du krypterar vm-skalningsuppsättningen.

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --key-encryption-key myKEK \
    --key-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Kommentar

Syntaxen för värdet för parametern disk-encryption-keyvault är den fullständiga identifierarsträngen:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault--name]

Syntaxen för värdet för parametern key-encryption-key är den fullständiga URI:n för KEK som i:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Kontrollera krypteringsstatus

Om du vill kontrollera status för diskkryptering använder du az vmss encryption show:

az vmss encryption show --resource-group myResourceGroup --name myScaleSet

När virtuella datorinstanser krypteras rapporterar statuskoden EncryptionState/krypterad, enligt följande exempelutdata:

[
  {
    "disks": [
      {
        "encryptionSettings": null,
        "name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
        "statuses": [
          {
            "additionalProperties": {},
            "code": "EncryptionState/encrypted",
            "displayStatus": "Encryption is enabled on disk",
            "level": "Info",
            "message": null,
            "time": null
          }
        ]
      }
    ],
    "id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
    "resourceGroup": "MYRESOURCEGROUP"
  }
]

Inaktivera kryptering

Om du inte längre vill använda krypterade VM-instanser kan du inaktivera kryptering med az vmss encryption disable enligt följande:

az vmss encryption disable --resource-group myResourceGroup --name myScaleSet

Nästa steg

  • I den här artikeln använde du Azure CLI för att kryptera en VM-skalningsuppsättning. Du kan också använda Azure PowerShell - eller Azure Resource Manager-mallar.
  • Om du vill att Azure Disk Encryption ska tillämpas efter att ett annat tillägg har etablerats kan du använda tilläggssekvensering.
  • Här finns ett exempel på en batchfil från slutpunkt till slutpunkt för datadiskkryptering för Linux-skalningsuppsättningar. Det här exemplet skapar en resursgrupp, En Linux-skalningsuppsättning, monterar en 5 GB datadisk och krypterar vm-skalningsuppsättningen.