De Azure CLI gebruiken om end-to-end-versleuteling in te schakelen met behulp van versleuteling op de host

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

Wanneer u versleuteling op de host inschakelt, worden gegevens die zijn opgeslagen op de VM-host in rust versleuteld en stromen versleuteld naar de Storage-service. Zie Versleuteling op host en andere versleutelingstypen voor beheerde schijven voor conceptuele informatie over versleuteling op de host: end-to-end-versleuteling voor uw VM-gegevens.

Beperkingen

  • Ondersteund voor 4k sectorgrootte Ultra Disks en Premium SSD v2.
  • Alleen ondersteund op 512e sectorgrootte Ultra Disks en Premium SSD v2 als ze na 5/13/2023 zijn gemaakt.
  • Kan niet worden ingeschakeld op virtuele machines (VM's) of virtuele-machineschaalsets waarvoor Momenteel of ooit Azure Disk Encryption is ingeschakeld.
  • Azure Disk Encryption kan niet worden ingeschakeld op schijven waarvoor versleuteling is ingeschakeld op de host.
  • De versleuteling kan worden ingeschakeld voor bestaande virtuele-machineschaalsets. Alleen nieuwe VIRTUELE machines die zijn gemaakt nadat de versleuteling is ingeschakeld, worden echter automatisch versleuteld.
  • Bestaande VM's moeten de toewijzing ongedaan worden gemaakt en opnieuw worden toegewezen om te kunnen worden versleuteld.

Regionale beschikbaarheid

Versleuteling op host is beschikbaar in alle regio's voor alle schijftypen.

Ondersteunde VM-grootten

De volledige lijst met ondersteunde VM-grootten kan programmatisch worden opgehaald. Zie de sectie Ondersteunde VM-grootten zoeken voor meer informatie over het programmatisch ophalen. Het upgraden van de VM-grootte resulteert in validatie om te controleren of de nieuwe VM-grootte de functie EncryptionAtHost ondersteunt.

Vereisten

U moet de functie voor uw abonnement inschakelen voordat u de eigenschap EncryptionAtHost voor uw VM/VMSS gebruikt. Gebruik de volgende stappen om de functie voor uw abonnement in te schakelen:

  • Voer de volgende opdracht uit om de functie voor uw abonnement te registreren
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • Controleer of de registratiestatus is geregistreerd (duurt enkele minuten) met behulp van de onderstaande opdracht voordat u de functie probeert.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

Resources maken

Notitie

Deze sectie is alleen van toepassing op configuraties met door de klant beheerde sleutels. Als u door het platform beheerde sleutels gebruikt, kunt u doorgaan naar de sectie Voorbeeldscripts .

Zodra de functie is ingeschakeld, moet u een DiskEncryptionSet en een Door Azure Key Vault beheerde HSM instellen.

Azure Key Vault

  • Installeer de nieuwste Azure CLI en meld u aan bij een Azure-account met az login.
  • Maak een Azure Key Vault en versleutelingssleutel.

Wanneer u de Sleutelkluis maakt, moet u beveiliging tegen opschonen inschakelen. Beveiliging tegen opschonen zorgt ervoor dat een verwijderde sleutel pas definitief kan worden verwijderd als de bewaarperiode is verstreken. Met deze instellingen kunt u geen gegevens kwijtraken vanwege onbedoelde verwijdering. Deze instellingen zijn verplicht wanneer u een sleutelkluis gebruikt voor het versleutelen van beheerde schijven.

Belangrijk

Als u dit doet, ondervindt u mogelijk problemen bij het toewijzen van extra schijven aan de resource in Azure Portal.

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
  • Maak een DiskEncryptionSet. U kunt inschakelen voor het inschakelen van automatische sleutelrotatie gelijk aan waar instellen om automatische rotatie van de sleutel in te schakelen. Wanneer u automatische rotatie inschakelt, worden alle beheerde schijven, momentopnamen en installatiekopieën die naar de schijfversleuteling verwijzen, automatisch bijgewerkt om binnen één uur de nieuwe versie van de sleutel te gebruiken.
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
  • Verdeel de DiskEncryptionSet-resource toegang tot de sleutelkluis.

Notitie

Het kan enkele minuten duren voordat Azure de identiteit van uw DiskEncryptionSet in uw Microsoft Entra-id heeft gemaakt. Als er een foutbericht wordt weergegeven als 'Kan het Active Directory-object niet vinden' wanneer u de volgende opdracht uitvoert, wacht u enkele minuten en probeert u het opnieuw.

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

Beheerde HSM van Azure Key Vault

U kunt ook een beheerde HSM gebruiken om uw sleutels te verwerken.

Hiervoor moet u de volgende vereisten voltooien:

Configuratie

Nadat u een beheerde HSM hebt gemaakt en machtigingen hebt toegevoegd, schakelt u opschoningsbeveiliging in en maakt u een versleutelingssleutel.

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

Maak vervolgens een 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

Verleen ten slotte de DiskEncryptionSet toegang tot de beheerde 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

Voorbeeldscripts

Een VIRTUELE machine maken met versleuteling op de host ingeschakeld met door de klant beheerde sleutels

Maak een VIRTUELE machine met beheerde schijven met behulp van de resource-URI van de DiskEncryptionSet die u eerder hebt gemaakt om de cache van besturingssysteem- en gegevensschijven te versleutelen met door de klant beheerde sleutels. De tijdelijke schijven worden versleuteld met door het platform beheerde sleutels.

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

Een VIRTUELE machine maken met versleuteling op de host ingeschakeld met door het platform beheerde sleutels

Maak een VIRTUELE machine met versleuteling op de host die is ingeschakeld voor het versleutelen van de cache van besturingssysteem-/gegevensschijven en tijdelijke schijven met door platform beheerde sleutels.

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 \

Een VM bijwerken om versleuteling op host in te schakelen

rgName=yourRGName
vmName=yourVMName

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

Controleer de status van versleuteling op de host voor een VM

rgName=yourRGName
vmName=yourVMName

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

Een VM bijwerken om versleuteling op host uit te schakelen

U moet de toewijzing van uw VIRTUELE machine ongedaan maken voordat u versleuteling op de host kunt uitschakelen.

rgName=yourRGName
vmName=yourVMName

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

Een virtuele-machineschaalset maken met versleuteling op host ingeschakeld met door de klant beheerde sleutels

Maak een virtuele-machineschaalset met beheerde schijven met behulp van de resource-URI van de DiskEncryptionSet die u eerder hebt gemaakt om de cache van besturingssysteem- en gegevensschijven te versleutelen met door de klant beheerde sleutels. De tijdelijke schijven worden versleuteld met door het platform beheerde sleutels.

Belangrijk

Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - 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

Een virtuele-machineschaalset maken met versleuteling op host ingeschakeld met door platform beheerde sleutels

Maak een virtuele-machineschaalset met versleuteling op de host die is ingeschakeld voor het versleutelen van de cache van besturingssysteem-/gegevensschijven en tijdelijke schijven met door platform beheerde sleutels.

Belangrijk

Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - 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 \

Een virtuele-machineschaalset bijwerken om versleuteling op de host in te schakelen

rgName=yourRGName
vmssName=yourVMName

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

Controleer de status van versleuteling op de host voor een virtuele-machineschaalset

rgName=yourRGName
vmssName=yourVMName

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

Een virtuele-machineschaalset bijwerken om versleuteling op host uit te schakelen

U kunt versleuteling uitschakelen op de host in uw virtuele-machineschaalset, maar dit heeft alleen invloed op vm's die zijn gemaakt nadat u versleuteling op de host hebt uitgeschakeld. Voor bestaande VM's moet u de toewijzing van de VIRTUELE machine ongedaan maken, versleuteling uitschakelen op de host op die afzonderlijke VM en vervolgens de VIRTUELE machine opnieuw implementeren.

rgName=yourRGName
vmssName=yourVMName

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

Ondersteunde VM-grootten zoeken

Verouderde VM-grootten worden niet ondersteund. U vindt de lijst met ondersteunde VM-grootten met behulp van resource-SKU-API's of de Azure PowerShell-module. U kunt de ondersteunde grootten niet vinden met behulp van de CLI.

Wanneer u de Resource Skus-API aanroept, controleert u of de EncryptionAtHostSupported mogelijkheid is ingesteld op True.

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

Gebruik voor de Azure PowerShell-module de cmdlet 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

        }

    }
}

Volgende stappen

Nu u deze resources hebt gemaakt en geconfigureerd, kunt u deze gebruiken om uw beheerde schijven te beveiligen. De volgende koppeling bevat voorbeeldscripts, elk met een respectieve scenario, die u kunt gebruiken om uw beheerde schijven te beveiligen.

Voorbeelden van Azure Resource Manager-sjablonen