Erstellen Sie einen Schlüsseltresor für ADE mit Microsoft Entra ID

Von Bedeutung

Die Azure Disk Encryption wird am 15. September 2028 eingestellt. Bis zu diesem Datum können Sie die Azure Disk Encryption ohne Unterbrechung weiterhin verwenden. Am 15. September 2028 werden ADE-fähige Workloads weiterhin ausgeführt, verschlüsselte Datenträger werden jedoch nach dem Neustart des virtuellen Computers nicht entsperrt, was zu Dienstunterbrechungen führt.

Verwenden Sie die Verschlüsselung auf dem Host für neue virtuelle Computer, oder ziehen Sie vertrauliche VM-Größen mit Betriebssystemdatenträgerverschlüsselung für vertrauliche Computerarbeitslasten in Betracht. Alle ADE-fähigen VMs (einschließlich Sicherungen) müssen vor dem Deaktivierungsdatum zur Verschlüsselung auf dem Host migriert werden, um Dienstunterbrechungen zu vermeiden. Ausführliche Informationen finden Sie unter Migrieren von Azure Disk Encryption zu Verschlüsselung auf dem Host .

Gilt für: ✔️ Windows-VMs

Beim neuen Release von Azure Disk Encryption muss kein Microsoft Entra-Anwendungsparameter mehr angegeben werden, um die VM-Datenträgerverschlüsselung zu aktivieren. Mit der neuen Version müssen Sie während des Aktivierungsverschlüsselungsschritts keine Microsoft Entra Anmeldeinformationen mehr bereitstellen. Verschlüsseln Sie alle neuen virtuellen Computer, indem Sie die neue Version ohne Microsoft Entra Anwendungsparameter verwenden. Anweisungen zum Aktivieren der VM-Datenträgerverschlüsselung mithilfe der neuen Version finden Sie unter Azure Disk Encryption. VMs, die bereits mit Microsoft Entra Anwendungsparametern verschlüsselt wurden, werden weiterhin unterstützt. Verwalten Sie diese virtuellen Computer weiterhin mit der Microsoft Entra-Syntax.

Azure Disk Encryption verwendet Azure Key Vault zum Steuern und Verwalten von Verschlüsselungsschlüsseln und Geheimnissen für die Datenträgerverschlüsselung. Weitere Informationen zu Schlüsseltresoren finden Sie unter Erste Schritte mit Azure Key Vault und Schützen eines Schlüsseltresors.

Das Erstellen und Konfigurieren eines Schlüsseltresors für die Verwendung mit Azure Disk Encryption mit Microsoft Entra ID (vorherige Version) umfasst vier Schritte:

  1. Erstellen eines Schlüsseltresors
  2. Einrichten einer Microsoft Entra-Anwendung und eines Dienstprinzipals
  3. Festlegen der Zugriffsrichtlinie für den Schlüsseltresor für die Microsoft Entra-App
  4. Legen Sie die erweiterten Zugriffsrichtlinien für den Schlüsseltresor fest.

Sie können auch einen Schlüsselverschlüsselungsschlüssel (KEY Encryption Key, KEK) generieren oder importieren.

Informationen zum Installieren von Tools und Herstellen einer Verbindung mit Azure finden Sie im Hauptartikel zum Erstellen und Konfigurieren eines Schlüsseltresors für Azure Disk Encryption.

Erstellen eines Schlüsseltresors

Azure Disk Encryption ist in Azure Key Vault integriert, damit Sie die Verschlüsselungsschlüssel und Geheimnisse für die Datenträgerverschlüsselung in Ihrem Key Vault-Abonnement steuern und verwalten können. Sie können für Azure Disk Encryption einen neuen Schlüsseltresor erstellen oder einen bereits vorhandenen verwenden. Weitere Informationen zu Schlüsseltresoren finden Sie unter Erste Schritte mit Azure Key Vault und Schützen eines Schlüsseltresors. Sie können eine Resource Manager-Vorlage, Azure PowerShell oder die Azure CLI verwenden, um einen Schlüsseltresor zu erstellen.

Warnung

Um sicherzustellen, dass die Verschlüsselungsschlüssel keine regionalen Grenzen überschreiten, setzt Azure Disk Encryption voraus, dass sich der Schlüsseltresor und die virtuellen Computer in derselben Region befinden. Erstellen und verwenden Sie einen Schlüsseltresor in derselben Region wie die VM, die Sie verschlüsseln möchten.

Erstellen Sie einen Schlüsseltresor mithilfe von PowerShell

Sie können einen Schlüsseltresor mithilfe von Azure PowerShell und dem Cmdlet New-AzKeyVault erstellen. Weitere Key Vault-Cmdlets finden Sie unter Az.KeyVault.

  1. Erstellen Sie ggf. mit New-AzResourceGroup eine neue Ressourcengruppe. Verwenden Sie Get-AzLocation, um Standorte von Rechenzentren aufzulisten.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Erstellen Sie mit New-AzKeyVault einen neuen Schlüsseltresor.

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Beachten Sie den Tresornamen, den Ressourcengruppennamen, die Ressourcen-ID, den Tresor-URI und die Objekt-ID , die für die spätere Verwendung zurückgegeben werden, wenn Sie die Datenträger verschlüsseln.

Erstellen Sie einen Schlüsseltresor mithilfe der Azure CLI

Sie können Ihren Schlüsseltresor mithilfe von Azure CLI und den az keyvault-Befehlen verwalten. Verwenden Sie az keyvault create, um einen Schlüsseltresor zu erstellen.

  1. Erstellen Sie ggf. mit az group create eine neue Ressourcengruppe. Verwenden Sie az account list-locations, um die Standorte aufzulisten.

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Erstellen Sie einen neuen Schlüsseltresor mithilfe von az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Notieren Sie sich den Tresornamen (Name), den Ressourcengruppennamen, die Ressourcen-ID (ID), den Tresor-URI und die Objekt-ID , die später zur Verwendung zurückgegeben werden.

Einen Schlüsseltresor mithilfe einer Azure Resource Manager-Vorlage erstellen

Sie können mit der Resource Manager-Vorlage einen Schlüsseltresor erstellen.

  1. Wählen Sie in der Azure-Schnellstartvorlage In Azure bereitstellen aus.
  2. Wählen Sie das Abonnement, die Ressourcengruppe, den Standort der Ressourcengruppe, den Schlüsseltresornamen, die Objekt-ID, die rechtlichen Bedingungen und den Vertrag aus, und wählen Sie dann "Kaufen" aus.

Einrichten einer Microsoft Entra-App und eines Dienstprinzipals

Wenn Sie die Verschlüsselung auf einem ausgeführten virtuellen Computer in Azure aktivieren müssen, werden die Verschlüsselungsschlüssel von Azure Disk Encryption generiert und in Ihren Schlüsseltresor geschrieben. Das Verwalten von Verschlüsselungsschlüsseln im Schlüsseltresor erfordert die Microsoft Entra-Authentifizierung. Erstellen Sie hierfür eine Microsoft Entra-Anwendung. Zu Authentifizierungszwecken können Sie entweder die auf einem geheimen Clientschlüssel basierende Authentifizierung oder die auf einem Clientzertifikat basierende Microsoft Entra-Authentifizierung verwenden.

Einrichten einer Microsoft Entra-App und eines Dienstprinzipals mit Azure PowerShell

Um die folgenden Befehle auszuführen, rufen Sie das modul Azure PowerShell ab, und verwenden Sie sie.

  1. Verwenden Sie das PowerShell-Cmdlet New-AzADApplication, um eine Microsoft Entra-Anwendung zu erstellen. "MyApplicationHomePage" und "MyApplicationUri" können beliebige Werte sein, die Sie auswählen.

    $aadClientSecret = "My AAD client secret"
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force
    $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor
    
  2. Dies $azureAdApplication.ApplicationId ist die Microsoft Entra Client-ID, und die $aadClientSecret ist der geheime Clientschlüssel, den Sie später verwenden werden, um Azure Disk Encryption zu aktivieren. Sorgen Sie für eine sichere Aufbewahrung des geheimen Microsoft Entra-Clientschlüssels. Beim Ausführen von $azureAdApplication.ApplicationId wird die Anwendungs-ID angezeigt.

Einrichten einer Microsoft Entra-Anwendung und eines Dienstprinzipals unter Verwendung der Azure CLI

Sie können Ihre Dienstprinzipale mithilfe von Azure CLI und den az ad sp-Befehlen verwalten. Weitere Informationen finden Sie unter Erstellen eines Azure-Dienstprinzipals.

  1. Erstellen Sie einen neuen Dienstprinzipal.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. Die zurückgegebene appId ist die Microsoft Entra Client-ID, die in anderen Befehlen verwendet wird. Sie ist außerdem der Dienstprinzipalname für „az keyvault set-policy“. Das Kennwort ist der geheime Clientschlüssel, den Sie später verwenden, um Azure Disk Encryption zu aktivieren. Sorgen Sie für eine sichere Aufbewahrung des geheimen Microsoft Entra-Clientschlüssels.

Einrichten einer Microsoft Entra-App und eines Dienstprinzipals über das Azure-Portal

Im Artikel Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals mit Ressourcenzugriff mithilfe des Portals finden Sie eine Anleitung, wie Sie eine Microsoft Entra-Anwendung erstellen. Jeder dieser Schritte führt Sie direkt zum Artikelabschnitt, um den Vorgang abzuschließen.

  1. Überprüfen Sie die erforderlichen Berechtigungen.
  2. Erstellen einer Microsoft Entra-Anwendung
    • Sie können einen beliebigen Namen und eine beliebige Anmelde-URL verwenden, wenn Sie die Anwendung erstellen.
  3. Rufen Sie die Anwendungs-ID und den Authentifizierungsschlüssel ab.
    • Der Authentifizierungsschlüssel ist der geheime Clientschlüssel und wird als „AadClientSecret“ für „Set-AzVMDiskEncryptionExtension“ verwendet.
    • Der Authentifizierungsschlüssel wird von der Anwendung als Anmeldeinformation für die Anmeldung bei Microsoft Entra ID verwendet. Im Azure-Portal heißt dieses Geheimnis „Schlüssel“, hat jedoch keinen Bezug zu Schlüsseltresoren. Schützen Sie dieses Geheimnis entsprechend.
    • Die Anwendungs-ID wird später als AadClientId für Set-AzVMDiskEncryptionExtension und als ServicePrincipalName für Set-AzKeyVaultAccessPolicy verwendet.

Festlegen der Zugriffsrichtlinie für den Schlüsseltresor für die Microsoft Entra-App

Um Verschlüsselungsgeheimnisse in einen bestimmten Key Vault zu schreiben, benötigt Azure Disk Encryption die Client ID und den geheimen Clientschlüssel der Microsoft Entra-Anwendung, der berechtigt ist, Geheimnisse in den Key Vault zu schreiben.

Hinweis

Azure Disk Encryption erfordert das Konfigurieren der folgenden Zugriffsrichtlinien für Ihre Microsoft Entra-Clientanwendung: Berechtigungen WrapKey und Set.

Zugriffsrichtlinie für den Schlüsseltresor für die Microsoft Entra-App mithilfe von Azure PowerShell festlegen

Ihre Microsoft Entra-Anwendung benötigt Rechte zum Zugreifen auf die Schlüssel oder geheimen Schlüssel im Tresor. Verwenden Sie das Cmdlet Set-AzKeyVaultAccessPolicy, um der Anwendung Berechtigungen zu erteilen. Verwenden Sie die Client-ID (die bei der Anwendungsregistrierung generiert wurde) als –ServicePrincipalName-Parameterwert. Weitere Informationen finden Sie im Blogbeitrag Azure Key Vault - Step by Step (Azure Key Vault – Schritt für Schritt).

  1. Legen Sie die Zugriffsrichtlinie für den Schlüsseltresor für die AD-Anwendung mithilfe von PowerShell fest.

    $keyVaultName = 'MySecureVault'
    $aadclient ID = 'MyAadAppclient ID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

Legen Sie die Zugriffsrichtlinie für den Schlüsseltresor für die Microsoft Entra-App mithilfe der Azure CLI fest.

Verwenden Sie az keyvault set-policy, um die Zugriffsrichtlinie festzulegen. Weitere Informationen finden Sie unter Verwalten von Key Vault mit der CLI 2.0.

Gewähren Sie dem Dienstprinzipal, den Sie mithilfe der Azure CLI erstellt haben, mit dem folgenden Befehl Zugriff zum Abrufen von Geheimnissen und zum Verpacken von Schlüsseln:

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Microsoft Entra client ID>" --key-permissions wrapKey --secret-permissions set

Die Key Vault-Zugriffsrichtlinie für die Microsoft Entra-Anwendung im Portal festlegen

  1. Öffnen Sie die Ressourcengruppe mit Ihrem Schlüsseltresor.
  2. Wählen Sie Ihren Schlüsseltresor aus, wechseln Sie zu Zugriffsrichtlinien und wählen Sie dann Neu hinzufügen aus.
  3. Suchen Sie unter Prinzipal auswählen nach der Microsoft Entra-Anwendung, die Sie erstellt haben, und wählen Sie sie aus.
  4. Aktivieren Sie unter Schlüsselberechtigungen die Option Wrap Key unter Kryptografische Vorgänge.
  5. Wählen Sie für Geheimberechtigungen unter Vorgänge zur Geheimnisverwaltung die Option Festlegen aus.
  6. Wählen Sie OK aus, um die Richtlinie zu speichern.

Azure Key Vault: „Kryptografische Vorgänge“ und „Schlüssel packen“

„Berechtigungen für Geheimnis“ in Azure Key Vault auf „Festlegen“

Festlegen von erweiterten Zugriffsrichtlinien für Schlüsseltresore

Die Azure-Plattform benötigt Zugriff auf die Verschlüsselungsschlüssel oder geheimen Schlüssel in Ihrem Schlüsseltresor, um sie für den virtuellen Computer zur Verfügung zu stellen, damit die Volumes gestartet und entschlüsselt werden können. Aktivieren Sie die Datenträgerverschlüsselung im Schlüsseltresor, andernfalls schlagen Bereitstellungen fehl.

Festlegen erweiterter Zugriffsrichtlinien für den Schlüsseltresor mithilfe von Azure PowerShell

Verwenden Sie das PowerShell-Cmdlet für Schlüsseltresore Set-AzKeyVaultAccessPolicy, um die Datenträgerverschlüsselung für den Schlüsseltresor zu aktivieren.

  • Aktivieren Sie Key Vault für die Datenträgerverschlüsselung: EnabledForDiskEncryption ist für Azure Disk Encryption erforderlich.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Aktivieren von Key Vault für die Bereitstellung (falls erforderlich): Der Ressourcenanbieter „Microsoft.Compute“ wird aktiviert, um Geheimnisse aus diesem Schlüsseltresor abzurufen, wenn dieser Schlüsseltresor bei der Ressourcenerstellung (z. B. beim Erstellen einer VM) referenziert wird.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Aktivieren von Key Vault für die Vorlagenbereitstellung (falls erforderlich): Azure Resource Manager kann aus diesem Schlüsseltresor Geheimnisse abrufen, wenn dieser Schlüsseltresor in einer Vorlagenbereitstellung referenziert wird.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
    

Erweiterte Zugriffsrichtlinien für den Schlüsseltresor mithilfe der Azure CLI festlegen

Verwenden Sie az keyvault update, um die Datenträgerverschlüsselung für den Schlüsseltresor zu aktivieren.

  • Aktivieren von Key Vault für die Datenträgerverschlüsselung: „Enabled-for-disk-encryption“ ist erforderlich.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Aktivieren von Key Vault für die Bereitstellung (falls erforderlich): VMs können Zertifikate aus dem Schlüsseltresor abrufen, die als Geheimnis gespeichert sind.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Aktivieren von Key Vault für die Vorlagenbereitstellung (falls erforderlich): Der Resource Manager kann Geheimnisse aus dem Tresor abrufen.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
    

Festlegen der erweiterten Zugriffsrichtlinien für Schlüsseltresore im Azure-Portal

  1. Wählen Sie Ihren Schlüsseltresor aus, wechseln Sie zu Access-Richtlinien, und klicken Sie, um erweiterte Zugriffsrichtlinien anzuzeigen.
  2. Wählen Sie das Feld Zugriff auf Azure Disk Encryption für Volumeverschlüsselung aktivieren aus.
  3. Wählen Sie "Zugriff auf Azure Virtual Machines für die Bereitstellung aktivieren" oder bei Bedarf "Zugriff auf Azure Resource Manager für die Vorlagenbereitstellung aktivieren" aus.
  4. Wählen Sie Speichern aus.

Erweiterte Zugriffsrichtlinien für Schlüsseltresore in Azure

Einrichten eines Schlüsselverschlüsselungsschlüssels (optional)

Wenn Sie einen Schlüsselverschlüsselungsschlüssel (KEK) für eine zusätzliche Sicherheitsebene für Verschlüsselungsschlüssel verwenden möchten, fügen Sie ihrem Schlüsseltresor einen KEK hinzu. Verwenden Sie das Cmdlet Add-AzKeyVaultKey, um im Schlüsseltresor einen Schlüsselverschlüsselungsschlüssel zu erstellen. Sie können den KEK auch aus Ihrem lokalen Hardwaresicherheitsmodul (HSM) für die Schlüsselverwaltung importieren. Weitere Informationen finden Sie in Key Vault Dokumentation. Wenn ein Schlüsselverschlüsselungsschlüssel angegeben wird, verwendet Azure Disk Encryption diesen, um Verschlüsselungsgeheimnisse vor dem Schreiben in Key Vault zu umschließen.

  • Verwenden Sie beim Generieren von Schlüsseln einen RSA-Schlüsseltyp. Azure Disk Encryption unterstützt die Verwendung von elliptischen Kurventasten noch nicht.

  • Ihre URLs für das Geheimnis des Schlüsseltresors und den Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) müssen mit einer Versionsangabe versehen sein. Azure erzwingt diese Einschränkung der Versionsverwaltung. Gültige URLs für Geheimnisse und KEKs finden Sie in den folgenden Beispielen:

  • Beispiel für eine gültige Geheimnis-URL: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • Beispiel für eine gültige KEK-URL: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • Die Angabe von Portnummern als Teil von URLs für Schlüsseltresorgeheimnisse und KEK-URLs wird von Azure Disk Encryption nicht unterstützt. Beispiele für nicht unterstützte und unterstützte Schlüsseltresor-URLs finden Sie hier:

  • Unzulässige Key Vault-URL: https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • Zulässige Schlüsseltresor-URL: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Einrichten eines Schlüsselverschlüsselungsschlüssels mithilfe von Azure PowerShell

Bevor Sie das PowerShell-Skript verwenden, überprüfen Sie die Azure Disk Encryption Voraussetzungen, um die Schritte im Skript zu verstehen. Das Beispielskript muss ggf. an Ihre Umgebung angepasst werden. Dieses Skript erstellt alle Voraussetzungen für Azure Disk Encryption und verschlüsselt eine vorhandene IaaS-VM, indem es den Datenträgerschlüssel mit einem Schlüssel für die Schlüsselverschlüsselung umschließt.

# Step 1: Create a new resource group and key vault in the same location.
	 # Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
	 # Use Get-AzLocation to get available locations and use the DisplayName.
	 # To use an existing resource group, comment out the line for New-AzResourceGroup

    $Loc = 'MyLocation';
    $KVRGname = 'MyKeyVaultResourceGroup';
    $KeyVaultName = 'MySecureVault';
    New-AzResourceGroup –Name  $KVRGname –Location $Loc;
    New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
    $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname;
    $KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).ResourceId;
    $diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).VaultUri;

# Step 2: Create the AD application and service principal.
	 # Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
	 # MyApplicationHomePage and the MyApplicationUri can be any values that you choose.

	 $aadClientSecret =  'MyAADClientSecret';
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
    $azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
    $aadclient ID = $azureAdApplication.ApplicationId;

#Step 3: Enable the vault for disk encryption and set the access policy for the Microsoft Entra application.

	 Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName  $KVRGname;

#Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
	 # Fill in 'MyKeyEncryptionKey' with your value.

	 $keyEncryptionKeyName = 'MyKeyEncryptionKey';
    Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
    $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;

#Step 5: Encrypt the disks of an existing IaaS VM
	 # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

	 $VMName = 'MySecureVM';
     $VMRGName = 'MyVirtualMachineResourceGroup';
    Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -Aadclient ID $aadclient ID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;

Zertifikatbasierte Authentifizierung (optional)

Wenn Sie die Zertifikatauthentifizierung verwenden möchten, können Sie einen in Ihren Schlüsseltresor hochladen und auf dem Client bereitstellen. Bevor Sie das PowerShell-Skript verwenden, überprüfen Sie die Azure Disk Encryption Voraussetzungen, um die Schritte im Skript zu verstehen. Das Beispielskript muss ggf. an Ihre Umgebung angepasst werden.


# Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)

  $KVRGname = 'MyKeyVaultResourceGroup'
  $KeyVaultName= 'MySecureVault'

  # Create a key vault and set enabledForDiskEncryption property on it.
  # Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.

  $Loc = 'MyLocation'
  New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
  Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

  #Setting some variables with the key vault information
  $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
  $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
  $KeyVaultResourceId = $KeyVault.ResourceId

  # Create the Microsoft Entra application and associate the certificate with it.
  # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
  # MyApplicationHomePage and the MyApplicationUri can be any values you wish

  $CertPath = "C:\certificates\mycert.pfx"
  $CertPassword = "Password"
  $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
  $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

  $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
  $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

  $AADclient ID = $AzureAdApplication.ApplicationId
  $aadClientCertThumbprint= $cert.Thumbprint

  Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

  # Upload the pfx file to the key vault.
  # Fill in "MyAADCert".

  $KeyVaultSecretName = "MyAADCert"
  $FileContentBytes = get-content $CertPath -Encoding Byte
  $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
          $JSONObject = @"
          {
              "data" : "$filecontentencoded",
              "dataType" : "pfx",
              "password" : "$CertPassword"
          }
"@

  $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
  $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

  #Set the secret and set the key vault policy for -EnabledForDeployment

  $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
  Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
  Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

  # Deploy the certificate to the VM
  # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

  $VMName = 'MySecureVM'
  $VMRGName = 'MyVirtualMachineResourceGroup'
  $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
  $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
  $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
  $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
  Update-AzVM -VM $VM -ResourceGroupName $VMRGName

  #Enable encryption on the VM by using Microsoft Entra client ID and the client certificate thumbprint

  Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

Zertifikatbasierte Authentifizierung und Schlüssel für die Schlüsselverschlüsselung (optional)

Wenn Sie die Zertifikatauthentifizierung verwenden und den Verschlüsselungsschlüssel mit einem KEK umschließen möchten, können Sie das folgende Skript als Beispiel verwenden. Bevor Sie das PowerShell-Skript verwenden, überprüfen Sie mit allen vorherigen Azure Disk Encryption Voraussetzungen, um die Schritte im Skript zu verstehen. Das Beispielskript muss ggf. an Ihre Umgebung angepasst werden.

# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)

   $KVRGname = 'MyKeyVaultResourceGroup'
   $KeyVaultName= 'MySecureVault'

   # Create a key vault and set enabledForDiskEncryption property on it.
   # Comment out the next three lines if you already have an existing key vault enabled for encryption.

   $Loc = 'MyLocation'
   New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

   # Create the Microsoft Entra application and associate the certificate with it.
   # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
   # MyApplicationHomePage and the MyApplicationUri can be any values you wish

   $CertPath = "C:\certificates\mycert.pfx"
   $CertPassword = "Password"
   $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
   $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

   $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
   $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

   $AADclient ID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   ## Give access for setting secrets and wrapping keys
   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

   # Upload the pfx file to the key vault.
   # Fill in "MyAADCert".

   $KeyVaultSecretName = "MyAADCert"
   $FileContentBytes = get-content $CertPath -Encoding Byte
   $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
           $JSONObject = @"
           {
               "data" : "$filecontentencoded",
               "dataType" : "pfx",
               "password" : "$CertPassword"
           }
"@

   $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
   $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

   #Set the secret and set the key vault policy for deployment

   $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
   Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

   #Setting some variables with the key vault information and generating a KEK
   # Fill in 'KEKName'

   $KEKName ='KEKName'
   $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
   $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
   $KeyVaultResourceId = $KeyVault.ResourceId
   $KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
   $KeyEncryptionKeyUrl = $KEK.Key.kid



   # Deploy the certificate to the VM
   # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

   $VMName = 'MySecureVM';
   $VMRGName = 'MyVirtualMachineResourceGroup';
   $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
   $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
   $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
   $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
   Update-AzVM -VM $VM -ResourceGroupName $VMRGName

   #Enable encryption on the VM by using Microsoft Entra client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

Nächste Schritte

Aktivieren von Azure Disk Encryption mit Microsoft Entra ID auf Windows-VMs (vorheriges Release)