Dela via


Skapa och konfigurera ett nyckelvalv för Azure Disk Encryption med Microsoft Entra-ID (tidigare version)

Gäller för: ✔️ Virtuella Windows-datorer

Den nya versionen av Azure Disk Encryption eliminerar kravet på att tillhandahålla en Microsoft Entra-programparameter för att aktivera diskkryptering för virtuella datorer. Med den nya versionen behöver du inte längre ange Microsoft Entra-autentiseringsuppgifter under steget aktivera kryptering. Alla nya virtuella datorer måste krypteras utan Microsoft Entra-programparametrarna med den nya versionen. Information om hur du aktiverar diskkryptering för virtuella datorer med den nya versionen finns i Azure Disk Encryption. Virtuella datorer som redan har krypterats med Microsoft Entra-programparametrar stöds fortfarande och bör fortsätta att underhållas med Microsoft Entra-syntaxen.

Azure Disk Encryption använder Azure Key Vault för att styra och hantera diskkrypteringsnycklar och hemligheter. Mer information om nyckelvalv finns i Komma igång med Azure Key Vault och Skydda ditt nyckelvalv.

Att skapa och konfigurera ett nyckelvalv för användning med Azure Disk Encryption med Microsoft Entra ID (tidigare version) omfattar tre steg:

  1. Skapa ett nyckelvalv.
  2. Konfigurera ett Microsoft Entra-program och tjänstens huvudnamn.
  3. Ange åtkomstprincipen för nyckelvalvet för Microsoft Entra-appen.
  4. Ställa in avancerade åtkomstprinciper för nyckelvalvet

Du kan också, om du vill, generera eller importera en nyckelkrypteringsnyckel (KEK).

Mer information om hur du installerar verktyg och ansluter till Azure finns i artikeln Skapa och konfigurera ett nyckelvalv för Azure Disk Encryption.

Kommentar

Stegen i den här artikeln automatiseras i CLI-skriptet för Förhandskrav för Azure Disk Encryption och PowerShell-skriptet för Azure Disk Encryption.The steps in this article are automated in the Azure Disk Encryption prerequisites CLI script and Azure Disk Encryption prerequisites PowerShell script.

Skapa ett nyckelvalv

Azure Disk Encryption är integrerat med Azure Key Vault för att hjälpa dig att styra och hantera diskkrypteringsnycklar och hemligheter i din nyckelvalvsprenumeration. Du kan skapa ett nyckelvalv eller använda ett befintligt för Azure Disk Encryption. Mer information om nyckelvalv finns i Komma igång med Azure Key Vault och Skydda ditt nyckelvalv. Du kan använda en Resource Manager-mall, Azure PowerShell eller Azure CLI för att skapa ett nyckelvalv.

Varning

För att säkerställa att krypteringshemligheterna inte korsar regionala gränser måste Azure Disk Encryption ha nyckelvalvet och de virtuella datorerna som ska finnas i samma region. Skapa och använd ett Key Vault som finns i samma region som den virtuella datorn som ska krypteras.

Skapa ett nyckelvalv med PowerShell

Du kan skapa ett nyckelvalv med Azure PowerShell med hjälp av cmdleten New-AzKeyVault . Ytterligare cmdletar för Key Vault finns i Az.KeyVault.

  1. Skapa en ny resursgrupp om det behövs med New-AzResourceGroup. Om du vill visa en lista över datacenterplatser använder du Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Skapa ett nytt nyckelvalv med New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Observera valvnamn, resursgruppnamn, resurs-ID, valv-URI och objekt-ID som returneras för senare användning när du krypterar diskarna.

Skapa ett nyckelvalv med Azure CLI

Du kan hantera ditt nyckelvalv med Azure CLI med hjälp av az keyvault-kommandona . Om du vill skapa ett nyckelvalv använder du az keyvault create.

  1. Skapa en ny resursgrupp om det behövs med az group create. Om du vill visa en lista över platser använder du az account list-locations

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Skapa ett nytt nyckelvalv med az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Observera valvnamn (namn), resursgruppnamn, resurs-ID (ID), valv-URI och objekt-ID som returneras för användning senare.

Skapa ett nyckelvalv med en Resource Manager-mall

Du kan skapa ett nyckelvalv med hjälp av Resource Manager-mallen.

  1. I azure-snabbstartsmallen väljer du Distribuera till Azure.
  2. Välj prenumeration, resursgrupp, resursgruppsplats, Nyckelvalvnamn, Objekt-ID, juridiska villkor och avtal och välj sedan Köp.

Konfigurera en Microsoft Entra-app och tjänstens huvudnamn

När du behöver kryptering för att aktiveras på en virtuell dator som körs i Azure genererar och skriver Azure Disk Encryption krypteringsnycklarna till ditt nyckelvalv. För att hantera krypteringsnycklar i nyckelvalvet krävs Microsoft Entra-autentisering. Skapa ett Microsoft Entra-program för detta ändamål. I autentiseringssyfte kan du använda antingen klienthemlighetsbaserad autentisering eller klientcertifikatbaserad Microsoft Entra-autentisering.

Konfigurera en Microsoft Entra-app och tjänstens huvudnamn med Azure PowerShell

Om du vill köra följande kommandon hämtar och använder du Azure PowerShell-modulen.

  1. Använd PowerShell-cmdleten New-AzADApplication för att skapa ett Microsoft Entra-program. MyApplicationHomePage och MyApplicationUri kan vara alla värden du vill.

    $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 är Microsoft Entra ClientID och $aadClientSecret är den klienthemlighet som du ska använda senare för att aktivera Azure Disk Encryption. Skydda Microsoft Entra-klienthemligheten på rätt sätt. Om du kör $azureAdApplication.ApplicationId visas ApplicationID.

Konfigurera en Microsoft Entra-app och tjänstens huvudnamn med Azure CLI

Du kan hantera tjänstens huvudnamn med Azure CLI med hjälp av az ad sp-kommandona . Mer information finns i Skapa ett huvudnamn för Azure-tjänsten.

  1. Skapa ett nytt huvudnamn för tjänsten.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. Det appId som returneras är Microsoft Entra ClientID som används i andra kommandon. Det är också det SPN som du använder för az keyvault set-policy. Lösenordet är den klienthemlighet som du bör använda senare för att aktivera Azure Disk Encryption. Skydda Microsoft Entra-klienthemligheten på rätt sätt.

Konfigurera en Microsoft Entra-app och tjänstens huvudnamn via Azure-portalen

Använd stegen från Använd portalen för att skapa ett Microsoft Entra-program och tjänstens huvudnamn som kan komma åt resursartikeln för att skapa ett Microsoft Entra-program. Vart och ett av dessa steg tar dig direkt till artikelavsnittet för att slutföra.

  1. Verifiera nödvändiga behörigheter
  2. Skapa ett Microsoft Entra-program
    • Du kan använda valfritt namn och en inloggnings-URL som du vill när du skapar programmet.
  3. Hämta program-ID:t och autentiseringsnyckeln.
    • Autentiseringsnyckeln är klienthemligheten och används som AadClientSecret för Set-AzVMDiskEncryptionExtension.
      • Autentiseringsnyckeln används av programmet som en autentiseringsuppgift för att logga in på Microsoft Entra-ID. I Azure-portalen kallas den här hemligheten nycklar, men har ingen relation till nyckelvalv. Skydda den här hemligheten på rätt sätt.
    • Program-ID används senare som AadClientId för Set-AzVMDiskEncryptionExtension och som ServicePrincipalName för Set-AzKeyVaultAccessPolicy.

Ange åtkomstprincipen för nyckelvalvet för Microsoft Entra-appen

För att kunna skriva krypteringshemligheter till ett angivet Nyckelvalv behöver Azure Disk Encryption klient-ID:t och klienthemligheten för Microsoft Entra-programmet som har behörighet att skriva hemligheter till Key Vault.

Kommentar

Azure Disk Encryption kräver att du konfigurerar följande åtkomstprinciper för ditt Microsoft Entra-klientprogram: WrapKey och Ange behörigheter.

Ange åtkomstprincipen för nyckelvalvet för Microsoft Entra-appen med Azure PowerShell

Ditt Microsoft Entra-program behöver behörighet att komma åt nycklarna eller hemligheterna i valvet. Använd cmdleten Set-AzKeyVaultAccessPolicy för att bevilja behörigheter till programmet med hjälp av klient-ID :t (som genererades när programmet registrerades) som parametervärdet –ServicePrincipalName . Mer information finns i blogginlägget Azure Key Vault – steg för steg.

  1. Ange åtkomstprincipen för nyckelvalvet för AD-programmet med PowerShell.

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

Ange åtkomstprincipen för nyckelvalvet för Microsoft Entra-appen med Azure CLI

Använd az keyvault set-policy för att ange åtkomstprincipen. Mer information finns i Hantera Key Vault med CLI 2.0.

Ge tjänstens huvudnamn som du skapade via Azure CLI åtkomst för att hämta hemligheter och omsluta nycklar med följande kommando:

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

Ange åtkomstprincipen för nyckelvalvet för Microsoft Entra-appen med portalen

  1. Öppna resursgruppen med ditt nyckelvalv.
  2. Välj ditt nyckelvalv, gå till Åtkomstprinciper och välj sedan Lägg till ny.
  3. Under Välj huvudnamn söker du efter Det Microsoft Entra-program som du skapade och väljer det.
  4. För Nyckelbehörigheter kontrollerar du Omsluta nyckel under Kryptografiska åtgärder.
  5. För Hemliga behörigheter kontrollerar du Ange under Hemliga hanteringsåtgärder.
  6. Välj OK för att spara åtkomstprincipen.

Kryptografiska åtgärder i Azure Key Vault – omslutningsnyckel

Azure Key Vault Secret-behörigheter – Ange

Ställa in avancerade åtkomstprinciper för nyckelvalvet

Azure-plattformen behöver åtkomst till krypteringsnycklarna eller hemligheterna i nyckelvalvet för att göra dem tillgängliga för den virtuella datorn för att starta och dekryptera volymerna. Det går inte att aktivera diskkryptering i nyckelvalvet eller distributioner.

Ange avancerade åtkomstprinciper för Key Vault med Azure PowerShell

Använd PowerShell-cmdleten Set-AzKeyVaultAccessPolicy för nyckelvalvet för att aktivera diskkryptering för nyckelvalvet.

  • Aktivera Key Vault för diskkryptering: EnabledForDiskEncryption krävs för Azure Disk-kryptering.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Aktivera Key Vault för distribution om det behövs: Aktiverar Microsoft. Beräkna resursprovider för att hämta hemligheter från det här nyckelvalvet när det här nyckelvalvet refereras till när du skapar resurser, till exempel när du skapar en virtuell dator.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Aktivera Key Vault för malldistribution om det behövs: Gör att Azure Resource Manager kan hämta hemligheter från det här nyckelvalvet när det här nyckelvalvet refereras till i en malldistribution.

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

Ange avancerade åtkomstprinciper för Key Vault med hjälp av Azure CLI

Använd az keyvault update för att aktivera diskkryptering för nyckelvalvet.

  • Aktivera Key Vault för diskkryptering: Aktiverad för diskkryptering krävs.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Aktivera Key Vault för distribution om det behövs: Tillåt att virtuella datorer hämtar certifikat som lagras som hemligheter från valvet.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Aktivera Key Vault för malldistribution om det behövs: Tillåt att Resource Manager hämtar hemligheter från valvet.

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

Ange avancerade åtkomstprinciper för Key Vault via Azure-portalen

  1. Välj din keyvault, gå till Åtkomstprinciper och Klicka för att visa avancerade åtkomstprinciper.
  2. Välj rutan Med etiketten Aktivera åtkomst till Azure Disk Encryption för volymkryptering.
  3. Välj Aktivera åtkomst till virtuella Azure-datorer för distribution och/eller Aktivera åtkomst till Azure Resource Manager för malldistribution om det behövs.
  4. Välj Spara.

Avancerade åtkomstprinciper för Azure Key Vault

Konfigurera en nyckelkrypteringsnyckel (valfritt)

Om du vill använda en nyckelkrypteringsnyckel (KEK) för ytterligare ett säkerhetslager för krypteringsnycklar lägger du till en KEK i nyckelvalvet. Använd cmdleten Add-AzKeyVaultKey för att skapa en nyckelkrypteringsnyckel i nyckelvalvet. Du kan också importera en KEK från din lokala HSM för nyckelhantering. Mer information finns i Dokumentation om Key Vault. När en nyckelkrypteringsnyckel har angetts använder Azure Disk Encryption den nyckeln för att omsluta krypteringshemligheterna innan du skriver till Key Vault.

Konfigurera en nyckelkrypteringsnyckel med Azure PowerShell

Innan du använder PowerShell-skriptet bör du känna till kraven för Azure Disk Encryption för att förstå stegen i skriptet. Exempelskriptet kan behöva ändras för din miljö. Det här skriptet skapar alla krav för Azure Disk Encryption och krypterar en befintlig virtuell IaaS-dator och omsluter diskkrypteringsnyckeln med hjälp av en nyckelkrypteringsnyckel.

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

Certifikatbaserad autentisering (valfritt)

Om du vill använda certifikatautentisering kan du ladda upp ett till ditt nyckelvalv och distribuera det till klienten. Innan du använder PowerShell-skriptet bör du känna till kraven för Azure Disk Encryption för att förstå stegen i skriptet. Exempelskriptet kan behöva ändras för din miljö.


# 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

Certifikatbaserad autentisering och en KEK (valfritt)

Om du vill använda certifikatautentisering och omsluta krypteringsnyckeln med en KEK kan du använda skriptet nedan som exempel. Innan du använder PowerShell-skriptet bör du känna till alla tidigare krav för Azure Disk Encryption för att förstå stegen i skriptet. Exempelskriptet kan behöva ändras för din miljö.

# 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ästa steg

Aktivera Azure Disk Encryption med Microsoft Entra-ID på virtuella Windows-datorer (tidigare version)