Kryptera operativsystem och anslutna datadiskar i en VM-skalningsuppsättning med Azure PowerShell
Gäller för: ✔️ Virtuella Linux-datorer:heavy_check_mark: Windows:heavy_check_mark: Uniform Scale Sets
Azure PowerShell-modulen används för att skapa och hantera Azure-resurser från PowerShell-kommandoraden eller i skript. Den här artikeln visar hur du använder Azure PowerShell för att skapa och kryptera en VM-skalningsuppsättning. Mer information om hur du Azure Disk Encryption på en VM-skalningsuppsättning finns i Azure Disk Encryption för Virtual Machine Scale Sets.
Använda Azure Cloud Shell
Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln utan att behöva installera något i din lokala miljö.
Så här startar du Azure Cloud Shell:
| Alternativ | Exempel/länk |
|---|---|
| Välj Prova i det övre högra hörnet av ett kodblock. Om du väljer Prova kopieras koden inte automatiskt till Cloud Shell. | ![]() |
| Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. | ![]() |
| Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. | ![]() |
Så här kör du koden i den här artikeln i Azure Cloud Shell:
Starta Cloud Shell.
Kopiera koden genom att klicka på knappen Kopiera på ett kodblock.
Klistra in koden i Cloud Shell-sessionen genom att välja Ctrl+Skift+V på Windows och Linux eller genom att välja Cmd+Skift+V på macOS.
Välj Retur för att köra koden.
Skapa en Azure Key Vault aktiverad 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 programvaruskydd, eller så kan du importera eller generera dina nycklar i HSM:er (Hardware Security Modules) som är certifierade enligt FIPS 140-2 level 2-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.
Skapa en Key Vault med New-AzKeyVault. Om du vill Key Vault som ska användas för diskkryptering anger du parametern EnabledForDiskEncryption. I följande exempel definieras även variabler för resursgruppens namn, Key Vault namn och plats. Ange ditt eget unika Key Vault namn:
$rgName="myResourceGroup"
$vaultName="myuniquekeyvault"
$location = "EastUS"
New-AzResourceGroup -Name $rgName -Location $location
New-AzKeyVault -VaultName $vaultName -ResourceGroupName $rgName -Location $location -EnabledForDiskEncryption
Använda en befintlig Key Vault
Det här steget krävs bara om du har en befintlig Key Vault som du vill använda med diskkryptering. Hoppa över det här steget om du Key Vault i föregående avsnitt.
Du kan aktivera en befintlig Key Vault i samma prenumeration och region som skalningsuppsättningen för diskkryptering med Set-AzKeyVaultAccessPolicy. Definiera namnet på din befintliga Key Vault i $vaultName enligt följande:
$vaultName="myexistingkeyvault"
Set-AzKeyVaultAccessPolicy -VaultName $vaultName -EnabledForDiskEncryption
Skapa en skalningsuppsättning
Först anger du ett administratörsanvändarnamn och lösenord för virtuella datorer med Get-Credential:
$cred = Get-Credential
Skapa en VM-skalningsuppsättning med New-AzVmss. För att distribuera trafik till flera virtuella datorinstanser så skapas även en lastbalanserare. Lastbalanseraren innehåller regler för att distribuera trafik på TCP-port 80 och för att tillåta trafik för fjärrskrivbordet på TCP-port 3389 och PowerShell-fjärrkommunikation på TCP-port 5985:
$vmssName="myScaleSet"
New-AzVmss `
-ResourceGroupName $rgName `
-VMScaleSetName $vmssName `
-Location $location `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer" `
-UpgradePolicy "Automatic" `
-Credential $cred
Aktivera kryptering
Om du vill kryptera VM-instanser i en skalningsuppsättning hämtar du först information om Key Vault-URI och resurs-ID med Get-AzKeyVault. Dessa variabler används för att sedan starta krypteringsprocessen med 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"
När du uppmanas till det skriver du y för att fortsätta diskkrypteringsprocessen på skalningsuppsättningens VM-instanser.
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.
$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"
Anteckning
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:en för KEK som i: https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]
Kontrollera krypteringsförloppet
Om du vill kontrollera statusen för diskkryptering använder du Get-AzVmssDiskEncryption:
Get-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName
När VM-instanser krypteras rapporterar EncryptionSummary-koden ProvisioningState/succeeded enligt följande exempelutdata:
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
Inaktivera kryptering
Om du inte längre vill använda krypterade VM-instansdiskar kan du inaktivera kryptering med Disable-AzVmssDiskEncryption på följande sätt:
Disable-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName
Nästa steg
- I den här artikeln har du använt Azure PowerShell för att kryptera en VM-skalningsuppsättning. Du kan också använda Azure CLI eller Azure Resource Manager mallar.
- Om du vill använda Azure Disk Encryption när ett annat tillägg har etablerats kan du använda ordningsföljden för tillägget.


