Erstellen und Konfigurieren eines Schlüsseltresors für Azure Disk Encryption mit Microsoft Entra ID (vorheriges Release) für Linux-VMs

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

Beim neuen Release von Azure Disk Encryption muss kein Microsoft Entra-Anwendungsparameter mehr angegeben werden, um die VM-Datenträgerverschlüsselung zu aktivieren. Sie müssen beim neuen Release während des Schritts zum Aktivieren der Verschlüsselung keine Microsoft Entra-Anmeldeinformationen mehr angeben. Alle neuen VMs müssen mit dem neuen Release und ohne die Microsoft Entra-Anwendungsparameter verschlüsselt werden. Eine Anleitung zum Aktivieren der VM-Datenträgerverschlüsselung mit dem neuen Release finden Sie unter Azure Disk Encryption. VMs, die bereits mit Microsoft Entra-Anwendungsparametern verschlüsselt wurden, werden weiterhin unterstützt und sollten weiterhin mit der Microsoft Entra-Syntax verwaltet werden.

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 Azure Disk Encryption mit Microsoft Entra ID (vorheriges Release) umfasst drei 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üssel für die Schlüsselverschlüsselung (Key Encryption Key, KEK) generieren oder importieren.

Weitere Informationen zum Installieren von Tools und Herstellen einer Verbindung mit Azure finden Sie im Hauptartikel 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üsselungsgeheimnisse die Regionsgrenzen nicht verlassen, müssen den Schlüsseltresor und die VMs für Azure Disk Encryption sich in derselben Region angeordnet sein. Erstellen und verwenden Sie einen Schlüsseltresor, der sich in derselben Region wie die zu verschlüsselnde VM befindet.

Erstellen eines Schlüsseltresors mit PowerShell

Sie können mit Azure PowerShell mit dem Cmdlet New-AzKeyVault einen Schlüsseltresor erstellen. Weitere Cmdlets für Key Vault 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. Notieren Sie Tresorname, Ressourcengruppenname, Ressourcen-ID, Vault-URI und Objekt-ID, die zur späteren Verwendung beim Verschlüsseln der Datenträger zurückgegeben werden.

Erstellen eines Schlüsseltresors mit der Azure-Befehlszeilenschnittstelle

Sie können Ihren Schlüsseltresor mit der Azure CLI mit 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 mit az keyvault create einen neuen Schlüsseltresor.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Notieren Sie Tresorname (Name), Ressourcengruppenname, Ressourcen-ID (ID), Vault-URI und Objekt-ID, die zur späteren Verwendung zurückgegeben werden.

Erstellen eines Schlüsseltresors mit einer Resource Manager-Vorlage

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 Abonnement, Ressourcengruppe, Ressourcengruppenstandort, Schlüsseltresorname, Objekt-ID, rechtliche Bedingungen und Vereinbarung aus, und klicken Sie auf Kaufen.

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 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

Für die folgenden Befehle rufen Sie das Azure AD PowerShell-Modul und verwenden Sie es.

  1. Verwenden Sie das PowerShell-Cmdlet New-AzADApplication, um eine Microsoft Entra-Anwendung zu erstellen. Die Werte für „MyApplicationHomePage“ und „MyApplicationUri“ können beliebig sein.

    $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. „$azureAdApplication.ApplicationId“ ist die Microsoft Entra-ClientID und „$aadClientSecret“ ist der geheime Clientschlüssel. Sie benötigen diese Angaben später zum Aktivieren von Azure Disk Encryption. Sorgen Sie für eine sichere Aufbewahrung des geheimen Microsoft Entra-Clientschlüssels. Wenn Sie $azureAdApplication.ApplicationId ausführen, wird Ihnen die „ApplicationID“ angezeigt.

Einrichten einer Microsoft Entra-App und eines Dienstprinzipals mit der Azure CLI

Sie können Ihre Dienstprinzipale mit der Azure CLI mit 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ückgegeben App-ID (appId) ist die Microsoft Entra-ClientID, 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, mit dem Sie später Azure Disk Encryption aktivieren werden. 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 unten aufgeführte Schritt führt Sie direkt zum entsprechenden Artikelabschnitt.

  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.

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

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 mit PowerShell fest.

    $keyVaultName = 'MySecureVault'
    $aadClientID = 'MyAadAppClientID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

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

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

Erteilen Sie dem über die Azure CLI erstellten Dienstprinzipal Zugriff, damit er Geheimnisse abrufen und Schlüssel mit dem folgenden Befehl packen kann:

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD ClientID>" --key-permissions wrapKey --secret-permissions set

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

  1. Öffnen Sie die Ressourcengruppe mit Ihrem Schlüsseltresor.
  2. Wählen Sie Ihren Schlüsseltresor aus, öffnen Sie 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 für Schlüsselberechtigungen unter Kryptografische Vorgänge die Option Schlüssel packen.
  5. Aktivieren Sie für Berechtigungen für Geheimnis unter Verwaltungsvorgänge für Geheimnisse die Option Festlegen.
  6. Wählen Sie OK aus, um die Richtlinie zu speichern.

Azure Key Vault cryptographic operations - Wrap Key

Azure Key Vault Secret permissions - Set

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, damit Bereitstellungen nicht fehlschlagen.

Festlegen der erweiterten Zugriffsrichtlinien für Schlüsseltresore mit 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 von Key Vault für die Datenträgerverschlüsselung: „EnabledForDiskEncryption“ ist für die Verwendung von Azure Disk Encryption erforderlich.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Aktivieren von Key Vault für die Bereitstellung (falls erforderlich): aktiviert den Microsoft. Compute-Ressourcenanbieter, 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
    

Festlegen der erweiterten Zugriffsrichtlinien für Schlüsseltresore mit der Azure-Befehlszeilenschnittstelle

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): Virtuelle Computer können Zertifikate aus dem Schlüsseltresor abrufen, die als Geheimnisse 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, navigieren Sie zu Zugriffsrichtlinien, 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 ggf. Zugriff auf Azure Virtual Machines für Bereitstellung aktivieren und/oder Zugriff auf Azure Resource Manager für Vorlagenbereitstellung aktivieren aus.
  4. Wählen Sie Speichern aus.

Azure key vault advanced access policies

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

Wenn Sie Verschlüsselungsschlüssel mit einem Schlüssel für die Schlüsselverschlüsselung zusätzlich schützen möchten, fügen Sie Ihrem Schlüsseltresor einen Schlüsselverschlüsselungsschlüssel 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 der 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.

Festlegen eines Schlüssels für die Schlüsselverschlüsselung mit Azure PowerShell

Bevor Sie das PowerShell-Skript verwenden, sollten Sie mit den Voraussetzungen für Azure Disk Encryption vertraut sein, 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 you wish.

	 $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;
    $aadClientID = $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 $aadClientID -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 -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;

Zertifikatbasierte Authentifizierung (optional)

Wenn Sie Zertifikatauthentifizierung verwenden möchten, können Sie eine in Ihren Schlüsseltresor hochladen und für den Client bereitstellen. Bevor Sie das PowerShell-Skript verwenden, sollten Sie mit den Voraussetzungen für Azure Disk Encryption vertraut sein, 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

  $AADClientID = $AzureAdApplication.ApplicationId
  $aadClientCertThumbprint= $cert.Thumbprint

  Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -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 using Microsoft Entra client ID and the client certificate thumbprint

  Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

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

Wenn Sie die Zertifikatsauthentifizierung verwenden und den Schlüssel mit einem Schlüsselverschlüsselungsschlüssel umschließen möchten, verwenden Sie das folgende Skript als Beispiel. Wenn Sie das PowerShell-Skript verwenden möchten, sollten Sie mit allen zuvor genannten Voraussetzungen für Azure Disk Encryption vertraut sein, um die Schritte im Skript zu verstehen. Das Beispielskript muss ggf. an Ihre Umgebung angepasst werden.

Wichtig

Die zertifikatbasierte Microsoft Entra-Authentifizierung wird auf Linux-VMs aktuell nicht unterstützt.

# 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 Azure AD 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

   $AADClientID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   ## Give access for setting secrets and wraping keys
   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -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 using Azure AD client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

Nächste Schritte

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