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. Exempel på Prova för Azure Cloud Shell
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. Starta Cloud Shell i ett nytt fönster
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Cloud Shell-knappen i Azure Portal

Så här kör du koden i den här artikeln i Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Kopiera koden genom att klicka på knappen Kopiera på ett kodblock.

  3. 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.

  4. 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.