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

De Azure PowerShell-module wordt gebruikt voor het maken en beheren van Azure-resources vanaf de PowerShell-opdrachtregel of in scripts. In dit artikel leest u hoe u Azure PowerShell 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.

Azure Cloud Shell

Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde Cloud Shell-opdrachten gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.

Om Azure Cloud Shell op te starten:

Optie Voorbeeld/koppeling
Selecteer Uitproberen in de rechterbovenhoek van een code- of opdrachtblok. Als u Try It selecteert, wordt de code of opdracht niet automatisch gekopieerd naar Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. Button to launch Azure Cloud Shell.
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell gebruiken:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok (of opdrachtblok) om de code of opdracht te kopiëren.

  3. Plak de code of opdracht in de Cloud Shell-sessie door Ctrl+Shift+V in Windows en Linux te selecteren of door Cmd+Shift+V te selecteren in macOS.

  4. Selecteer Enter om de code of opdracht uit te voeren.

Een Azure Key Vault 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.

Maak een sleutelkluis met New-AzKeyVault. Als u wilt toestaan dat key vault wordt gebruikt voor schijfversleuteling, stelt u de parameter EnabledForDiskEncryption in. In het volgende voorbeeld worden ook variabelen gedefinieerd voor de naam van de resourcegroep, de naam van de sleutelkluis en de locatie. Geef uw eigen unieke Key Vault-naam op:

$rgName="myResourceGroup"
$vaultName="myuniquekeyvault"
$location = "EastUS"

New-AzResourceGroup -Name $rgName -Location $location
New-AzKeyVault -VaultName $vaultName -ResourceGroupName $rgName -Location $location -EnabledForDiskEncryption

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.

U kunt een bestaande sleutelkluis inschakelen in hetzelfde abonnement en dezelfde regio als de schaalset voor schijfversleuteling met Set-AzKeyVaultAccessPolicy. Definieer als volgt de naam van uw bestaande sleutelkluis in de $vaultName variabele:

$vaultName="myexistingkeyvault"
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -EnabledForDiskEncryption

Een schaalset maken

Belangrijk

Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - Microsoft Community Hub

Stel eerst een beheerdersnaam en -wachtwoord in voor de VM-exemplaren met behulp van Get-Credential:

$cred = Get-Credential

Maak nu een virtuele-machineschaalset met New-AzVmss. Om het verkeer te distribueren naar de verschillende VM-exemplaren, wordt er ook een load balancer gemaakt. De load balancer bevat regels voor het distribueren van verkeer op TCP-poort 80, en voor het toestaan van extern bureaubladverkeer op TCP-poort 3389 en externe toegang via PowerShell op TCP-poort 5985:

$vmssName="myScaleSet"

New-AzVmss `
    -ResourceGroupName $rgName `
    -VMScaleSetName $vmssName `
    -OrchestrationMode "flexible" `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -PublicIpAddressName "myPublicIPAddress" `
    -LoadBalancerName "myLoadBalancer" `
    -Credential $cred

Versleuteling inschakelen

Als u VM-exemplaren in een schaalset wilt versleutelen, haalt u eerst wat informatie op over de Key Vault-URI en resource-id met Get-AzKeyVault. Deze variabelen worden gebruikt om vervolgens het versleutelingsproces te starten met Set-AzVmssDiskEncryptionExtension:

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

Wanneer u hierom wordt gevraagd, typt u y om door te gaan met het schijfversleutelingsproces op de VM-exemplaren van de schaalset.

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.

$diskEncryptionKeyVaultUrl=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).VaultUri
$keyVaultResourceId=(Get-AzKeyVault -ResourceGroupName $rgName -Name $vaultName).ResourceId
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $vaultName -Name $keyEncryptionKeyName).Key.kid;

Set-AzVmssDiskEncryptionExtension -ResourceGroupName $rgName -VMScaleSetName $vmssName `
    -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $keyVaultResourceId `
    -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $keyVaultResourceId -VolumeType "All"

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

Gebruik Get-AzVmssDiskEncryption om de status van schijfversleuteling te controleren:

Get-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

Wanneer VM-exemplaren zijn versleuteld, rapporteert de Code EncryptionSummary ProvisioningState/succeeded, zoals wordt weergegeven in de volgende voorbeelduitvoer:

ResourceGroupName            : myResourceGroup
VmScaleSetName               : myScaleSet
EncryptionSettings           :
  KeyVaultURL                : https://myuniquekeyvault.vault.azure.net/
  KeyEncryptionKeyURL        :
  KeyVaultResourceId         : /subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/myuniquekeyvault
  KekVaultResourceId         :
  KeyEncryptionAlgorithm     :
  VolumeType                 : All
  EncryptionOperation        : EnableEncryption
EncryptionSummary[0]         :
  Code                       : ProvisioningState/succeeded
  Count                      : 2
EncryptionEnabled            : True
EncryptionExtensionInstalled : True

Versleuteling uitschakelen

Als u geen versleutelde VM-exemplaren meer wilt gebruiken, kunt u versleuteling als volgt uitschakelen met Disable-AzVmssDiskEncryption :

Disable-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

Volgende stappen

  • In dit artikel hebt u Azure PowerShell gebruikt om een virtuele-machineschaalset te versleutelen. U kunt ook de Azure CLI - of Azure Resource Manager-sjablonen gebruiken.
  • Als u Azure Disk Encryption wilt toepassen nadat een andere extensie is ingericht, kunt u extensiereeksen gebruiken.