Kryptera operativsystem och anslutna datadiskar i en VM-skalningsuppsättning med Azure PowerShell

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 tillämpar Azure Disk Encryption på en VM-skalningsuppsättning finns i Azure Disk Encryption for Virtual Machine Scale Sets (Azure Disk Encryption for Virtual Machine Scale Sets).

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 i en kod eller ett kommandoblock. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Screenshot that shows an example of Try It for 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. Button to launch Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Screenshot that shows the Cloud Shell button in the Azure portal

Så här använder du Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.

  3. Klistra in koden eller kommandot i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.

  4. Välj Retur för att köra koden eller kommandot.

Skapa ett Azure Key Vault aktiverat 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 hjälp av programvaruskydd, eller så kan du importera eller generera dina nycklar i maskinvarusäkerhetsmoduler (HSM) som är certifierade enligt FIPS 140-verifierade 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 ett nyckelvalv med New-AzKeyVault. Om du vill tillåta att Key Vault används för diskkryptering anger du parametern EnabledForDiskEncryption . I följande exempel definieras även variabler för resursgruppsnamn, 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 ett befintligt Key Vault

Det här steget krävs bara om du har ett befintligt Key Vault som du vill använda med diskkryptering. Hoppa över det här steget om du skapade ett Key Vault i föregående avsnitt.

Du kan aktivera ett befintligt Key Vault i samma prenumeration och region som skalningsuppsättningen för diskkryptering med Set-AzKeyVaultAccessPolicy. Definiera namnet på ditt befintliga Nyckelvalv i variabeln $vaultName enligt följande:

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

Skapa en skalningsuppsättning

Viktigt!

Från och med november 2023 kommer VM-skalningsuppsättningar som skapats med PowerShell och Azure CLI som standard att vara flexibla orkestreringsläge om inget orkestreringsläge har angetts. Mer information om den här ändringen och vilka åtgärder du bör vidta finns i Icke-bakåtkompatibla ändringar för VMSS PowerShell/CLI-kunder – Microsoft Community Hub

Först anger du ett administratörsanvändarnamn och lösenord för virtuella datorer med Get-Credential:

$cred = Get-Credential

Skapa nu 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 `
    -OrchestrationMode "flexible" `
    -Location $location `
    -VirtualNetworkName "myVnet" `
    -SubnetName "mySubnet" `
    -PublicIpAddressName "myPublicIPAddress" `
    -LoadBalancerName "myLoadBalancer" `
    -Credential $cred

Aktivera kryptering

Om du vill kryptera VM-instanser i en skalningsuppsättning får du först information om Key Vault-URI:n och resurs-ID:t 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"

Kommentar

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:n för KEK som i:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Kontrollera krypteringsstatus

Om du vill kontrollera status för diskkryptering använder du Get-AzVmssDiskEncryption:

Get-AzVmssDiskEncryption -ResourceGroupName $rgName -VMScaleSetName $vmssName

När virtuella datorinstanser krypteras rapporterar EncryptionSummary-koden ProvisioningState/lyckades 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-instanser 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 använde du Azure PowerShell för att kryptera en VM-skalningsuppsättning. Du kan också använda Azure CLI - eller Azure Resource Manager-mallarna.
  • Om du vill att Azure Disk Encryption ska tillämpas efter att ett annat tillägg har etablerats kan du använda tilläggssekvensering.