Besturingssysteem en gekoppelde gegevensschijven versleutelen in een virtuele-machineschaalset met de Azure CLI

De Azure CLI wordt gebruikt voor het maken en beheren van Azure-resources vanaf de opdrachtregel of in scripts. In deze quickstart ziet u hoe u de Azure CLI gebruikt om een virtuele-machineschaalset te maken en te versleutelen. Zie Azure Disk Encryption voor virtuele-machineschaalsets voor meer informatie over het toepassen van Azure Disk Encryption op een virtuele-machineschaalset.

Vereisten

  • Voor dit artikel is versie 2.0.31 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Een schaalset maken

Voordat u een schaalset kunt maken, moet u eerst een resourcegroep maken met az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie eastus:

az group create --name myResourceGroup --location eastus

Maak nu een virtuele-machineschaalset met az vmss create. In het volgende voorbeeld wordt een schaalset gemaakt met de naam myScaleSet die automatisch wordt bijgewerkt wanneer wijzigingen worden toegepast en worden SSH-sleutels gegenereerd als deze niet bestaan in ~/.ssh/id_rsa. Er wordt een gegevensschijf van 32 Gb gekoppeld aan elk VM-exemplaar en de aangepaste scriptextensie van Azure wordt gebruikt om de gegevensschijven voor te bereiden met az vmss extension set:

Belangrijk

Zorg ervoor dat u een ondersteund besturingssysteem selecteert met ADE. Ondersteund besturingssysteem voor 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"}'

Het duurt enkele minuten om alle schaalsetresources en VM's te maken en te configureren.

Een Azure-sleutelkluis maken die is ingeschakeld voor schijfversleuteling

Azure Key Vault kan sleutels, geheimen of wachtwoorden opslaan waarmee u deze veilig kunt implementeren in uw toepassingen en services. Cryptografische sleutels worden opgeslagen in Azure Key Vault met softwarebeveiliging, of u kunt uw sleutels importeren of genereren in HSM's (Hardware Security Modules) die zijn gecertificeerd volgens door FIPS 140 gevalideerde standaarden. Deze cryptografische sleutels worden gebruikt voor het versleutelen en ontsleutelen van virtuele schijven die zijn gekoppeld aan uw VM. U behoudt de controle over deze cryptografische sleutels en kunt het gebruik controleren.

Definieer uw eigen unieke keyvault_name. Maak vervolgens een sleutelkluis met az sleutelkluis maken in hetzelfde abonnement en dezelfde regio als de schaalset en stel het toegangsbeleid --ingeschakeld-voor-schijfversleuteling in.

# 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

Een bestaande sleutelkluis gebruiken

Deze stap is alleen vereist als u een bestaande sleutelkluis hebt die u wilt gebruiken met schijfversleuteling. Sla deze stap over als u in de vorige sectie een sleutelkluis hebt gemaakt.

Definieer uw eigen unieke keyvault_name. Update vervolgens uw sleutelklus met az sleutelkluis updaten en stel het toegangsbeleid --enabled-for-disk-encryption in.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

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

Versleuteling inschakelen

Notitie

Als u virtuele-machineschaalsets gebruikt in de flexibele indelingsmodus, worden alleen nieuwe exemplaren versleuteld. Bestaande exemplaren in de schaalset moeten afzonderlijk worden versleuteld of verwijderd en vervangen.

Als u VM-exemplaren in een schaalset wilt versleutelen, moet u eerst bepaalde informatie over de Resource-ID van de sleutelkluis ophalen met az keyvault show. Deze variabelen worden gebruikt om het versleutelingsproces vervolgens te starten met 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

Het kan een paar minuten duren voordat het versleutelingsproces is gestart.

Als de schaalset een upgradebeleid heeft voor de schaalset die in een eerdere stap is gemaakt en op automatisch is ingesteld, wordt het versleutelingsproces automatisch gestart door de VM-exemplaren. Op schaalsets waarbij het upgradebeleid is ingesteld op handmatig, start u het versleutelingsbeleid voor de VM-exemplaren met AZ vmss update-instances.

Versleuteling inschakelen met KEK om de sleutel in te pakken

U kunt ook een sleutelversleutelingssleutel gebruiken voor extra beveiliging bij het versleutelen van de virtuele-machineschaalset.

# 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

Notitie

De syntaxis voor de waarde van de parameter disk-encryption-keyvault is de volledige id-tekenreeks:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]

De syntaxis voor de waarde van de parameter key-encryption-key is de volledige URI voor de KEK, zoals in:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Voortgang van de versleuteling controleren

Als u de status van de schijfversleuteling wilt controleren, gebruikt u az vmss encryption show:

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

Wanneer VM-exemplaren worden versleuteld, wordt in de statuscode gerapporteerd EncryptionState/encrypted, zoals wordt weergegeven in de volgende voorbeelduitvoer:

[
  {
    "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"
  }
]

Versleuteling uitschakelen

Als u geen schijven van versleutelde VM-exemplaren meer wilt gebruiken, kunt u versleuteling als volgt uitschakelen met AZ vmss encryption disable:

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

Volgende stappen

  • In dit artikel hebt u de Azure CLI gebruikt om een virtuele-machineschaalset te versleutelen. U kunt ook Azure Powershell gebruiken, of sjablonen van Azure Resource Manager.
  • Als u Azure Disk Encryption wilt toepassen nadat een andere extensie is ingericht, kunt u extensiereeksen gebruiken.
  • Een end-to-end batch-voorbeeldbestand voor het versleutelen van gegevensschijven van de Linux-schaalset vindt u hier. In dit voorbeeld wordt een resourcegroep, Linux-schaalset gemaakt, een gegevensschijf van 5 GB gekoppeld en wordt de virtuele-machineschaalset versleuteld.