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

Van toepassing op: ✔️ Virtuele Linux-heavy_check_mark: Windows-VM's ✔️ Uniforme schaalsets

De Azure PowerShell-module wordt gebruikt voor het maken en beheren van Azure-resources vanaf de PowerShell-opdrachtregel of in scripts. In dit artikel wordt beschreven hoe u Azure PowerShell een virtuele-machineschaalset maakt en versleutelt. Zie voor meer informatie over het Azure Disk Encryption op een virtuele-machineschaalset Azure Disk Encryption voor Virtual Machine Scale Sets.

Azure Cloud Shell gebruiken

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 opdrachten van Cloud Shell 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 Nu proberen in de rechterbovenhoek van een codeblok. Als u Uitproberen selecteert, wordt de code niet automatisch gekopieerd naar Cloud Shell. Voorbeeld van Uitproberen voor Azure Cloud Shell
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. Cloud Shell starten in een nieuw venster
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Knop Cloud Shell in de Azure Portal

Om de code in dit artikel in Azure Cloud Shell uit te voeren:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.

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

  4. Selecteer Invoeren om de code uit te voeren.

Een schijf Azure Key Vault schijfversleuteling is ingeschakeld

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 behulp van softwarebeveiliging, of u kunt uw sleutels in Hardware Security Modules (HMS's), die zijn gecertificeerd voor FIPS 140-2 level 2-standaarden, importeren of genereren. 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 Key Vault met New-AzKeyVault. Stel de parameter EnabledForDiskEncryption in om de Key Vault te gebruiken voor schijfversleuteling. In het volgende voorbeeld worden ook variabelen voor de naam van de resourcegroep, Key Vault naam en locatie. Geef uw eigen unieke Key Vault 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 Key Vault in hetzelfde abonnement en dezelfde regio als de schaalset voor schijfversleuteling inschakelen met Set-AzKeyVaultAccessPolicy. Definieer de naam van uw Key Vault in de $vaultName variabele als volgt:

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

Een schaalset maken

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 behulp van 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 `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -PublicIpAddressName "myPublicIPAddress" `
    -LoadBalancerName "myLoadBalancer" `
    -UpgradePolicy "Automatic" `
    -Credential $cred

Versleuteling inschakelen

Als u VM-exemplaren in een schaalset wilt versleutelen, moet u eerst wat informatie over de Key Vault-URI en resource-id op halen met Get-AzKeyVault. Deze variabelen worden gebruikt om het versleutelingsproces vervolgens 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 hier om 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 voor extra beveiliging gebruiken bij het versleutelen van de schaalset voor virtuele machines.

$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 voor 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 sleutel-versleuteling-sleutel is de volledige URI naar de KEK, zoals in:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Voortgang van de versleuteling controleren

Gebruik Get-AzVmssDiskEncryptionom 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 schijven van 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 een Azure PowerShell een virtuele-machineschaalset te versleutelen. U kunt ook de Azure CLI gebruiken of Azure Resource Manager gebruiken.
  • Als u Azure Disk Encryption wilt toepassen nadat een andere extensie is ingericht, kunt u extensiereeksen gebruiken.