Verwenden der Azure CLI zum Aktivieren der End-to-End-Verschlüsselung mit Verschlüsselung auf dem Host

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

Wenn Sie die Verschlüsselung auf dem Host aktivieren, werden die auf dem VM-Host gespeicherten Daten ruhend verschlüsselt und verschlüsselt an den Speicherdienst übermittelt. Informationen zum Konzept der Verschlüsselung auf dem Host sowie zu anderen Verschlüsselungstypen für verwaltete Datenträger finden Sie unter Verschlüsselung auf dem Host: End-to-End-Verschlüsselung für Ihre VM-Daten.

Beschränkungen

  • Unterstützt für Ultra Disks mit der Sektorgröße 4K und SSD Premium v2-Datenträger.
  • Nur unterstützt für Ultra Disks mit der Sektorgröße 512E und SSD Premium v2-Datenträger, wenn sie nach dem 13.05.2023 erstellt wurden.
    • Erstellen Sie für Datenträger, die vor diesem Datum erstellt wurden, eine Momentaufnahme des Datenträgers, und erstellen Sie mit der Momentaufnahme einen neuen Datenträger.
  • Kann nicht auf virtuellen Computern (VMs) oder Skalierungssätzen für virtuelle Computer aktiviert werden, bei denen derzeit oder jemals Azure Disk Encryption aktiviert war.
  • Azure Disk Encryption kann nicht auf Datenträgern aktiviert werden, auf denen Verschlüsselung auf dem Host aktiviert ist.
  • Die Verschlüsselung kann für vorhandene VM-Skalierungsgruppen aktiviert werden. Es werden jedoch nur neue VMs automatisch verschlüsselt, die nach dem Aktivieren der Verschlüsselung erstellt wurden.
  • Bei vorhandenen VMs muss deren Zuordnung aufgehoben und sie müssen erneut zugeordnet werden, damit sie verschlüsselt werden können.

Regionale Verfügbarkeit

Die Verschlüsselung auf dem Host ist in allen Regionen für alle Datenträgertypen verfügbar.

Unterstützte VM-Größen

Die vollständige Liste unterstützter VM-Größen kann programmgesteuert per Pull abgerufen werden. Informationen dazu, wie Sie sie programmgesteuert abrufen können, finden Sie im Abschnitt Ermitteln der unterstützten VM-Größen. Ein Upgrade der VM-Größe führt zu einem Validierungsprozess, um zu überprüfen, ob die neue VM-Größe das EncryptionAtHost-Feature unterstützt.

Voraussetzungen

Sie müssen das Feature für Ihr Abonnement aktivieren, bevor Sie die EncryptionAtHost-Eigenschaft für Ihre VM/VMSS verwenden. Führen Sie die folgenden Schritte aus, um das Feature für Ihr Abonnement zu aktivieren:

  • Führen Sie den folgenden Befehl aus, um das Feature für Ihr Abonnement zu registrieren.
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • Überprüfen Sie mithilfe des folgenden Befehls, ob der Registrierungsstatus Registriert lautet (dies dauert einige Minuten), bevor Sie das Feature ausprobieren.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

Erstellen von Ressourcen

Hinweis

Dieser Abschnitt gilt nur für Konfigurationen mit kundenseitig verwalteten Schlüsseln. Wenn Sie plattformseitig verwaltete Schlüssel verwenden, können Sie mit dem Abschnitt Beispielskripts fortfahren.

Nach dem Aktivieren des Features müssen Sie ein DiskEncryptionSet und entweder einen Azure Key Vault oder ein per Azure Key Vault verwaltetes HSM einrichten.

Azure-Schlüsseltresor

  • Installieren Sie die neueste Version der Azure CLI, und melden Sie sich mit az login bei einem Azure-Konto an.
  • Erstellen einer Azure Key Vault-Instanz und eines Verschlüsselungsschlüssels.

Beim Erstellen der Key Vault-Instanz müssen Sie den Schutz vor endgültigem Löschen aktivieren. Der Schutz vor endgültigem Löschen stellt sicher, dass ein gelöschter Schlüssel erst nach Ablauf der Aufbewahrungsdauer dauerhaft gelöscht werden kann. Diese Einstellungen schützen Sie vor dem Verlust von Daten durch versehentliches Löschen. Diese Einstellungen sind obligatorisch, wenn ein Schlüsseltresor für die Verschlüsselung verwalteter Datenträger verwendet wird.

Wichtig

Verwenden Sie keine gemischte Groß-/Kleinschreibung für die Region, da ansonsten Probleme beim Zuweisen zusätzlicher Datenträger zur Ressource im Azure-Portal auftreten.

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
  • Erstellen Sie ein DiskEncryptionSet (Datenträgerverschlüsselungssatz). Sie können „enable-auto-key-rotation“ auf TRUE festlegen, um die automatische Rotation des Schlüssels zu aktivieren. Wenn Sie die automatische Rotation aktivieren, aktualisiert das System innerhalb von einer Stunde automatisch alle verwalteten Datenträger, Momentaufnahmen und Images, die auf den Datenträgerverschlüsselungssatz verweisen, damit die neue Version des Schlüssels verwendet wird.
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
  • Gewähren Sie der DiskEncryptionSet-Ressource Zugriff auf den Schlüsseltresor.

Hinweis

Es kann einige Minuten dauern, bis Azure die Identität des Datenträgerverschlüsselungssatzes in Microsoft Entra ID erstellt hat. Wenn Sie bei der Ausführung des folgenden Befehls einen ähnlichen Fehler wie „Active Directory-Objekt kann nicht gefunden werden“ erhalten, warten Sie einige Minuten, und versuchen Sie es erneut.

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

Über Azure Key Vault verwaltetes HSM

Alternativ können Sie ein verwaltetes HSM verwenden, um Ihre Schlüssel zu verarbeiten.

Dazu müssen die folgenden Voraussetzungen erfüllt sein:

Konfiguration

Nachdem Sie ein verwaltetes HSM erstellt und Berechtigungen hinzugefügt haben, aktivieren Sie den Schutz vor endgültigem Löschen, und erstellen Sie einen Verschlüsselungsschlüssel.

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

Erstellen Sie anschließend ein DiskEncryptionSet (Datenträgerverschlüsselungssatz).

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

Erteilen Sie dem DiskEncryptionSet schließlich Zugriff auf das verwaltete 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

Beispielskripts

Erstellen einer VM mit aktivierter Verschlüsselung auf dem Host mit kundenseitig verwalteten Schlüsseln

Erstellen Sie eine VM mit verwalteten Datenträgern mithilfe des Ressourcen-URI der zuvor erstellten DiskEncryptionSet-Klasse, um einen Zwischenspeicher des Betriebssystems und Datenträger mit kundenseitig verwalteten Schlüsseln zu verschlüsseln. Temporäre Datenträger werden mit plattformseitig verwalteten Schlüsseln verschlüsselt.

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

Erstellen einer VM mit aktivierter Verschlüsselung auf dem Host mit plattformseitig verwalteten Schlüsseln

Erstellen Sie eine VM mit aktivierter Verschlüsselung auf dem Host, um einen Zwischenspeicher des Betriebssystems/Datenträger und temporäre Datenträger mit plattformseitig verwalteten Schlüsseln zu verschlüsseln.

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 \

Aktualisieren einer VM zur Aktivierung der Verschlüsselung auf dem Host

rgName=yourRGName
vmName=yourVMName

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

Überprüfen des Status einer Verschlüsselung auf dem Host für eine VM

rgName=yourRGName
vmName=yourVMName

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

Aktualisieren einer VM zur Deaktivierung der Verschlüsselung auf dem Host

Sie müssen die Zuordnung Ihrer VM aufheben, damit Sie die Verschlüsselung auf dem Host deaktivieren können.

rgName=yourRGName
vmName=yourVMName

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

Erstellen einer VM-Skalierungsgruppe mit aktivierter Verschlüsselung auf dem Host mit kundenseitig verwalteten Schlüsseln

Erstellen Sie eine VM-Skalierungsgruppe mit verwalteten Datenträgern mithilfe des Ressourcen-URIs der zuvor erstellten DiskEncryptionSet-Klasse, um einen Zwischenspeicher des Betriebssystems und Datenträger mit kundenseitig verwalteten Schlüsseln zu verschlüsseln. Temporäre Datenträger werden mit plattformseitig verwalteten Schlüsseln verschlüsselt.

Wichtig

Ab November 2023 werden VM-Skalierungsgruppen, die mit PowerShell und der Azure CLI erstellt wurden, standardmäßig auf den flexiblen Orchestrierungsmodus festgelegt, wenn kein Orchestrierungsmodus angegeben wird. Weitere Informationen zu dieser Änderung und zu den Maßnahmen, die Sie ergreifen sollten, finden Sie unter Breaking Change für PowerShell-/CLI-Kunden mit VMSS – 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

Erstellen einer VM-Skalierungsgruppe mit aktivierter Verschlüsselung auf dem Host mit plattformseitig verwalteten Schlüsseln

Erstellen Sie eine VM-Skalierungsgruppe mit aktivierter Verschlüsselung auf dem Host, um einen Zwischenspeicher des Betriebssystems/Datenträger und temporäre Datenträger mit plattformseitig verwalteten Schlüsseln zu verschlüsseln.

Wichtig

Ab November 2023 werden VM-Skalierungsgruppen, die mit PowerShell und der Azure CLI erstellt wurden, standardmäßig auf den flexiblen Orchestrierungsmodus festgelegt, wenn kein Orchestrierungsmodus angegeben wird. Weitere Informationen zu dieser Änderung und zu den Maßnahmen, die Sie ergreifen sollten, finden Sie unter Breaking Change für PowerShell-/CLI-Kunden mit VMSS – 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 \

Aktualisieren einer VM-Skalierungsgruppe zur Aktivierung der Verschlüsselung auf dem Host

rgName=yourRGName
vmssName=yourVMName

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

Überprüfen des Status einer Verschlüsselung auf dem Host für eine VM-Skalierungsgruppe

rgName=yourRGName
vmssName=yourVMName

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

Aktualisieren einer VM-Skalierungsgruppe zur Deaktivierung der Verschlüsselung auf dem Host

Sie können die Verschlüsselung auf dem Host für Ihre VM-Skalierungsgruppe deaktivieren. Dies wirkt sich jedoch nur auf VMs aus, die nach dem Deaktivieren der Verschlüsselung auf dem Host erstellt wurden. Bei vorhandenen VMs müssen Sie die Zuordnung der VM aufheben, die Verschlüsselung auf dem Host für diese jeweilige VM deaktivieren und dann die VM neu zuweisen.

rgName=yourRGName
vmssName=yourVMName

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

Ermitteln der unterstützten VM-Größen

Ältere VM-Größen werden nicht unterstützt. Sie finden die Liste der unterstützten VM-Größen entweder mithilfe der Ressourcen-SKU-APIs oder dem Azure PowerShell-Modul. Sie können die unterstützten Größen nicht mithilfe der CLI finden.

Wenn Sie die Ressourcen-SKU-API aufrufen, überprüfen Sie, dass die EncryptionAtHostSupported-Funktion auf WAHR festgelegt ist.

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

Verwenden Sie für das Azure PowerShell-Modul das 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

        }

    }
}

Nächste Schritte

Nachdem Sie diese Ressourcen erstellt und konfiguriert haben, können Sie diese zum Sichern Ihrer verwalteten Datenträger verwenden. Der folgende Link enthält Beispielskripts mit jeweils einem entsprechenden Szenario, die Sie zum Sichern Ihrer verwalteten Datenträger verwenden können.

Beispiele für Azure Resource Manager-Vorlagen