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. | |
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 använder du Azure Cloud Shell:
Starta Cloud Shell.
Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.
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.
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.