Dela via


Använd Azure CLI för att aktivera kryptering från slutpunkt till slutpunkt med hjälp av kryptering på värden

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

När du aktiverar kryptering på värden krypteras data som lagras på den virtuella datorvärden i vila och flöden krypteras till lagringstjänsten. Konceptuell information om kryptering på värden och andra krypteringstyper för hanterade diskar finns i Kryptering på värden – Kryptering från slutpunkt till slutpunkt-kryptering för dina VM-data.

Begränsningar

  • Stöds för 4k sektorstorlek Ultra Diskar och Premium SSD v2.
  • Stöds endast på 512e-sektorns storlek Ultra Disks och Premium SSD v2 om de skapades efter 2023-05-13.
  • Det går inte att aktivera på virtuella datorer (VM) eller vm-skalningsuppsättningar som för närvarande eller någonsin har azure diskkryptering aktiverat.
  • Azure Disk Encryption kan inte aktiveras på diskar som har kryptering på värden aktiverat.
  • Krypteringen kan aktiveras på befintliga VM-skalningsuppsättningar. Men endast nya virtuella datorer som skapas efter aktivering av krypteringen krypteras automatiskt.
  • Befintliga virtuella datorer måste frigöras och omallokeras för att kunna krypteras.

VM-storlekar som stöds

Den fullständiga listan över vm-storlekar som stöds kan hämtas programmatiskt. Mer information om hur du hämtar dem programmatiskt finns i avsnittet Hitta vm-storlekar som stöds. Uppgradering av vm-storleken resulterar i validering för att kontrollera om den nya VM-storleken stöder funktionen EncryptionAtHost.

Förutsättningar

Du måste aktivera funktionen för din prenumeration innan du använder egenskapen EncryptionAtHost för din virtuella dator/VMSS. Använd följande steg för att aktivera funktionen för din prenumeration:

  • Kör följande kommando för att registrera funktionen för din prenumeration
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • Kontrollera att registreringstillståndet är Registrerat (tar några minuter) med hjälp av kommandot nedan innan du testar funktionen.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

Skapa resurser

Kommentar

Det här avsnittet gäller endast för konfigurationer med kundhanterade nycklar. Om du använder plattformshanterade nycklar kan du gå vidare till avsnittet Exempelskript .

När funktionen är aktiverad måste du konfigurera en DiskEncryptionSet och antingen ett Azure Key Vault eller en Hanterad HSM för Azure Key Vault.

Azure Key Vault

  • Installera den senaste Azure CLI och logga in på ett Azure-konto med az login.
  • Skapa ett Azure Key Vault och en krypteringsnyckel.

När du skapar Key Vault måste du aktivera rensningsskydd. Rensningsskydd säkerställer att en borttagen nyckel inte kan tas bort permanent förrän kvarhållningsperioden förfaller. De här inställningarna skyddar dig från att förlora data på grund av oavsiktlig borttagning. De här inställningarna är obligatoriska när du använder ett Key Vault för att kryptera hanterade diskar.

Viktigt!

Om du gör det kan det uppstå problem när du tilldelar ytterligare diskar till resursen i Azure-portalen.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName

az account set --subscription $subscriptionId

az group create --resource-group $rgName --location $location

az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true 

az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
  • Skapa en DiskEncryptionSet. Du kan ange enable-auto-key-rotation lika med true för att aktivera automatisk rotation av nyckeln. När du aktiverar automatisk rotation uppdaterar systemet automatiskt alla hanterade diskar, ögonblicksbilder och bilder som refererar till diskkrypteringsuppsättningen för att använda den nya versionen av nyckeln inom en timme.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)

az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
  • Ge resursen DiskEncryptionSet åtkomst till nyckelvalvet.

Kommentar

Det kan ta några minuter för Azure att skapa identiteten för diskEncryptionSet i ditt Microsoft Entra-ID. Om du får ett felmeddelande som "Det går inte att hitta Active Directory-objektet" när du kör följande kommando väntar du några minuter och försöker igen.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)

az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get

Azure Key Vault Managed HSM

Du kan också använda en hanterad HSM för att hantera dina nycklar.

För att göra detta måste du uppfylla följande krav:

Konfiguration

När du har skapat en hanterad HSM och lagt till behörigheter aktiverar du rensningsskydd och skapar en krypteringsnyckel.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
    
az account set --subscription $subscriptionId
    
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
    
az keyvault key create --hsm-name  $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048

Skapa sedan en DiskEncryptionSet.

keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
    
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false

Slutligen beviljar du DiskEncryptionSet åtkomst till Managed HSM.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
    
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys

Exempelskript

Skapa en virtuell dator med kryptering på värden aktiverat med kundhanterade nycklar

Skapa en virtuell dator med hanterade diskar med hjälp av resurs-URI:n för DiskEncryptionSet som skapades tidigare för att kryptera cacheminnet för operativsystem och datadiskar med kundhanterade nycklar. De temporära diskarna krypteras med plattformshanterade nycklar.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Skapa en virtuell dator med kryptering på värden aktiverat med plattformshanterade nycklar

Skapa en virtuell dator med kryptering på värden aktiverat för att kryptera cachelagring av OS/datadiskar och temporära diskar med plattformshanterade nycklar.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \

Uppdatera en virtuell dator för att aktivera kryptering på värden

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true

Kontrollera status för kryptering på värden för en virtuell dator

rgName=yourRGName
vmName=yourVMName

az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv

Uppdatera en virtuell dator för att inaktivera kryptering på värden

Du måste frigöra den virtuella datorn innan du kan inaktivera kryptering på värden.

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false

Skapa en VM-skalningsuppsättning med kryptering på värden aktiverad med kundhanterade nycklar

Skapa en vm-skalningsuppsättning med hanterade diskar med hjälp av resurs-URI:n för DiskEncryptionSet som skapades tidigare för att kryptera cacheminnet för operativsystem och datadiskar med kundhanterade nycklar. De temporära diskarna krypteras med plattformshanterade nycklar.

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

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 64 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

Skapa en VM-skalningsuppsättning med kryptering på värden aktiverad med plattformshanterade nycklar

Skapa en VM-skalningsuppsättning med kryptering på värden aktiverad för att kryptera cachelagring av OS/datadiskar och temporära diskar med plattformshanterade nycklar.

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

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \

Uppdatera en VM-skalningsuppsättning för att aktivera kryptering på värden

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true

Kontrollera status för kryptering på värden för en VM-skalningsuppsättning

rgName=yourRGName
vmssName=yourVMName

az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv

Uppdatera en VM-skalningsuppsättning för att inaktivera kryptering på värden

Du kan inaktivera kryptering på värden på vm-skalningsuppsättningen, men detta påverkar bara virtuella datorer som skapats när du inaktiverar kryptering på värden. För befintliga virtuella datorer måste du frigöra den virtuella datorn, inaktivera kryptering på värden på den enskilda virtuella datorn och sedan omallokera den virtuella datorn.

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false

Hitta vm-storlekar som stöds

Äldre VM-storlekar stöds inte. Du hittar listan över vm-storlekar som stöds med hjälp av resurs-SKU-API:er eller Azure PowerShell-modulen. Du hittar inte de storlekar som stöds med hjälp av CLI.

När du anropar Resource Skus-API:et EncryptionAtHostSupported kontrollerar du att funktionen är inställd på Sant.

    {
        "resourceType": "virtualMachines",
        "name": "Standard_DS1_v2",
        "tier": "Standard",
        "size": "DS1_v2",
        "family": "standardDSv2Family",
        "locations": [
        "CentralUSEUAP"
        ],
        "capabilities": [
        {
            "name": "EncryptionAtHostSupported",
            "value": "True"
        }
        ]
    }

För Azure PowerShell-modulen använder du cmdleten Get-AzComputeResourceSku .

$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}

foreach($vmSize in $vmSizes)
{
    foreach($capability in $vmSize.capabilities)
    {
        if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
        {
            $vmSize

        }

    }
}

Nästa steg

Nu när du har skapat och konfigurerat dessa resurser kan du använda dem för att skydda dina hanterade diskar. Följande länk innehåller exempelskript, var och en med ett respektive scenario, som du kan använda för att skydda dina hanterade diskar.

Azure Resource Manager-mallexempel