Een sleutelkluis maken en configureren voor Azure Disk Encryption met Microsoft Entra ID (vorige release) voor Linux-VM's

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

De nieuwe versie van Azure Disk Encryption elimineert de vereiste voor het instellen van een Microsoft Entra-toepassingsparameter om VM-schijfversleuteling in te schakelen. Met de nieuwe release bent u niet meer verplicht om Microsoft Entra-referenties op te geven tijdens de stap versleuteling inschakelen. Alle nieuwe VM's moeten worden versleuteld zonder de Microsoft Entra-toepassingsparameters met behulp van de nieuwe release. Zie Azure Disk Encryption voor instructies voor het inschakelen van VM-schijfversleuteling met behulp van de nieuwe versie. VM's die al zijn versleuteld met Microsoft Entra-toepassingsparameters, worden nog steeds ondersteund en moeten nog steeds worden onderhouden met de Microsoft Entra-syntaxis.

Azure Disk Encryption gebruikt Azure Key Vault om sleutels en geheimen voor schijfversleuteling te beheren. Zie Aan de slag met Azure Key Vault en Uw sleutelkluis beveiligen voor meer informatie over sleutelkluizen.

Het maken en configureren van een sleutelkluis voor gebruik met Azure Disk Encryption met Microsoft Entra ID (vorige release) omvat drie stappen:

  1. Een sleutelkluis maken.
  2. Een Microsoft Entra-toepassing en service-principal instellen.
  3. Stel het toegangsbeleid voor de sleutelkluis in voor de Microsoft Entra-app.
  4. Geavanceerd toegangsbeleid voor de sleutelkluis instellen.

U kunt eventueel ook een sleutelversleutelingssleutel genereren of importeren (KEK).

Zie het hoofdartikel over het maken en configureren van een sleutelkluis voor Azure Disk Encryption voor stappen voor het installeren van hulpprogramma's en het maken van verbinding met Azure.

Notitie

De stappen in dit artikel zijn geautomatiseerd in het CLI-script met vereisten voor Azure Disk Encryption en het PowerShell-script voor Azure Disk Encryption.

Maak een sleutelkluis.

Azure Disk Encryption is geïntegreerd met Azure Key Vault om u te helpen bij het beheren en beheren van de sleutels en geheimen voor schijfversleuteling in uw sleutelkluisabonnement. U kunt een sleutelkluis maken of een bestaande sleutelkluis gebruiken voor Azure Disk Encryption. Zie Aan de slag met Azure Key Vault en Uw sleutelkluis beveiligen voor meer informatie over sleutelkluizen. U kunt een Resource Manager-sjabloon, Azure PowerShell of de Azure CLI gebruiken om een sleutelkluis te maken.

Waarschuwing

Om ervoor te zorgen dat de versleutelingsgeheimen geen regionale grenzen overschrijden, heeft Azure Disk Encryption de Key Vault en de VM's nodig die zich in dezelfde regio bevinden. Maak en gebruik een sleutelkluis die zich in dezelfde regio bevindt als de virtuele machine die moet worden versleuteld.

Een sleutelkluis maken met PowerShell

U kunt een sleutelkluis maken met Azure PowerShell met behulp van de cmdlet New-AzKeyVault . Zie Az.KeyVault voor aanvullende cmdlets voor Key Vault.

  1. Maak indien nodig een nieuwe resourcegroep met New-AzResourceGroup. Gebruik Get-AzLocation om locaties van datacenters weer te geven.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Een nieuwe sleutelkluis maken met New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Noteer de kluisnaam, resourcegroepnaam, resource-id, kluis-URI en de object-id die worden geretourneerd voor later gebruik wanneer u de schijven versleutelt.

Een sleutelkluis maken met Azure CLI

U kunt uw sleutelkluis beheren met Azure CLI met behulp van de az keyvault-opdrachten . Als u een sleutelkluis wilt maken, gebruikt u az keyvault create.

  1. Maak indien nodig een nieuwe resourcegroep met az group create. Als u locaties wilt weergeven, gebruikt u az account list-locations

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Maak een nieuwe sleutelkluis met az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Noteer de kluisnaam (naam), resourcegroepnaam, resource-id (id ), kluis-URI en de object-id die later worden geretourneerd voor gebruik.

Een sleutelkluis maken met een Resource Manager-sjabloon

U kunt een sleutelkluis maken met behulp van de Resource Manager-sjabloon.

  1. Selecteer Implementeren in Azure in de Azure-snelstartsjabloon.
  2. Selecteer het abonnement, de resourcegroep, de locatie van de resourcegroep, de naam van de sleutelkluis, de object-id, de juridische voorwaarden en de overeenkomst en selecteer Vervolgens Kopen.

Een Microsoft Entra-app en service-principal instellen

Wanneer versleuteling moet worden ingeschakeld op een actieve VM in Azure, genereert en schrijft Azure Disk Encryption de versleutelingssleutels naar uw sleutelkluis. Voor het beheren van versleutelingssleutels in uw sleutelkluis is Microsoft Entra-verificatie vereist. Maak hiervoor een Microsoft Entra-toepassing. Voor verificatiedoeleinden kunt u verificatie op basis van clientgeheimen of op clientcertificaten gebaseerde Microsoft Entra-verificatie gebruiken.

Een Microsoft Entra-app en service-principal instellen met Azure PowerShell

Als u de volgende opdrachten wilt uitvoeren, haalt u de Azure PowerShell-module op en gebruikt u deze.

  1. Gebruik de PowerShell-cmdlet New-AzADApplication om een Microsoft Entra-toepassing te maken. MyApplicationHomePage en de MyApplicationUri kunnen alle gewenste waarden zijn.

    $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. De $azureAdApplication.ApplicationId is de Microsoft Entra ClientID en de $aadClientSecret is het clientgeheim dat u later gaat gebruiken om Azure Disk Encryption in te schakelen. Beveilig het Microsoft Entra-clientgeheim op de juiste wijze. Als deze wordt uitgevoerd $azureAdApplication.ApplicationId , wordt de ApplicationID weergegeven.

Een Microsoft Entra-app en service-principal instellen met Azure CLI

U kunt uw service-principals beheren met Azure CLI met behulp van de az ad sp-opdrachten . Zie Een Azure-service-principal maken voor meer informatie.

  1. Maak een nieuwe service-principal.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. De geretourneerde appId is de Microsoft Entra ClientID die wordt gebruikt in andere opdrachten. Het is ook de SPN die u gaat gebruiken voor az keyvault set-policy. Het wachtwoord is het clientgeheim dat u later moet gebruiken om Azure Disk Encryption in te schakelen. Beveilig het Microsoft Entra-clientgeheim op de juiste wijze.

Een Microsoft Entra-app en service-principal instellen via Azure Portal

Gebruik de stappen in de Portal gebruiken om een Microsoft Entra-toepassing en service-principal te maken die toegang hebben tot het artikel over resources om een Microsoft Entra-toepassing te maken. Met elke onderstaande stap gaat u rechtstreeks naar de sectie met artikelen om deze te voltooien.

  1. Vereiste machtigingen controleren
  2. Een Microsoft Entra-toepassing maken
    • U kunt elke gewenste naam en aanmeldings-URL gebruiken bij het maken van de toepassing.
  3. Haal de toepassings-id en de verificatiesleutel op.
    • De verificatiesleutel is het clientgeheim en wordt gebruikt als AadClientSecret voor Set-AzVMDiskEncryptionExtension.
      • De verificatiesleutel wordt door de toepassing gebruikt als referentie om u aan te melden bij Microsoft Entra-id. In Azure Portal wordt dit geheim sleutels genoemd, maar heeft geen relatie met sleutelkluizen. Beveilig dit geheim op de juiste manier.
    • De toepassings-id wordt later gebruikt als de AadClientId voor Set-AzVMDiskEncryptionExtension en als de ServicePrincipalName voor Set-AzKeyVaultAccessPolicy.

Het toegangsbeleid voor key vault instellen voor de Microsoft Entra-app

Voor het schrijven van versleutelingsgeheimen naar een opgegeven Sleutelkluis heeft Azure Disk Encryption de client-id en het clientgeheim van de Microsoft Entra-toepassing nodig die gemachtigd is om geheimen naar de Key Vault te schrijven.

Notitie

Voor Azure Disk Encryption moet u het volgende toegangsbeleid configureren voor uw Microsoft Entra-clienttoepassing: WrapKey en machtigingen instellen .

Het toegangsbeleid voor key vault instellen voor de Microsoft Entra-app met Azure PowerShell

Uw Microsoft Entra-toepassing heeft rechten nodig voor toegang tot de sleutels of geheimen in de kluis. Gebruik de cmdlet Set-AzKeyVaultAccessPolicy om machtigingen te verlenen aan de toepassing, met behulp van de client-id (die is gegenereerd toen de toepassing werd geregistreerd) als de parameterwaarde –ServicePrincipalName . Zie het blogbericht Azure Key Vault- stapsgewijs voor meer informatie.

  1. Stel het toegangsbeleid voor key vault in voor de AD-toepassing met PowerShell.

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

Het toegangsbeleid voor key vault instellen voor de Microsoft Entra-app met Azure CLI

Gebruik az keyvault set-policy om het toegangsbeleid in te stellen. Zie Key Vault beheren met CLI 2.0 voor meer informatie.

Geef de service-principal die u hebt gemaakt via de Azure CLI toegang om geheimen op te halen en sleutels te verpakken met de volgende opdracht:

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

Het toegangsbeleid voor key vault instellen voor de Microsoft Entra-app met de portal

  1. Open de resourcegroep met uw sleutelkluis.
  2. Selecteer uw sleutelkluis, ga naar Toegangsbeleid en selecteer Nieuwe toevoegen.
  3. Zoek onder Principal selecteren naar de Microsoft Entra-toepassing die u hebt gemaakt en selecteer deze.
  4. Voor sleutelmachtigingen controleert u De sleutel verpakken onder Cryptografische bewerkingen.
  5. Voor geheime machtigingen schakelt u Set onder Secret Management Operations in.
  6. Selecteer OK om het toegangsbeleid op te slaan.

Azure Key Vault cryptographic operations - Wrap Key

Azure Key Vault Secret permissions - Set

Geavanceerd toegangsbeleid voor de sleutelkluis instellen

Het Azure-platform heeft toegang nodig tot de versleutelingssleutels of geheimen in uw sleutelkluis om ze beschikbaar te maken voor de VM voor het opstarten en ontsleutelen van de volumes. Schijfversleuteling inschakelen in de sleutelkluis of implementaties mislukt.

Geavanceerd toegangsbeleid voor key vault instellen met Azure PowerShell

Gebruik de PowerShell-cmdlet Set-AzKeyVaultAccessPolicy voor sleutelkluizen om schijfversleuteling in te schakelen voor de sleutelkluis.

  • Key Vault inschakelen voor schijfversleuteling: EnabledForDiskEncryption is vereist voor Azure Disk Encryption.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Key Vault inschakelen voor implementatie, indien nodig: hiermee schakelt u Microsoft in. Rekenresourceprovider voor het ophalen van geheimen uit deze sleutelkluis wanneer naar deze sleutelkluis wordt verwezen bij het maken van resources, bijvoorbeeld bij het maken van een virtuele machine.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Key Vault inschakelen voor sjabloonimplementatie, indien nodig: Hiermee kan Azure Resource Manager geheimen ophalen uit deze sleutelkluis wanneer naar deze sleutelkluis wordt verwezen in een sjabloonimplementatie.

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

Geavanceerde toegangsbeleidsregels voor key vault instellen met behulp van de Azure CLI

Gebruik az keyvault update om schijfversleuteling in te schakelen voor de sleutelkluis.

  • Key Vault inschakelen voor schijfversleuteling: Ingeschakeld voor schijfversleuteling is vereist.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Schakel Key Vault in voor implementatie, indien nodig: Virtuele machines toestaan certificaten op te halen die zijn opgeslagen als geheimen uit de kluis.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Schakel Key Vault in voor sjabloonimplementatie, indien nodig: Sta Resource Manager toe geheimen op te halen uit de kluis.

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

Geavanceerd toegangsbeleid voor key vault instellen via Azure Portal

  1. Selecteer uw sleutelkluis, ga naar Toegangsbeleid en klik om geavanceerd toegangsbeleid weer te geven.
  2. Schakel het selectievakje Toegang tot Azure Disk Encryption voor volumeversleuteling inschakelen in.
  3. Selecteer indien nodig Toegang tot Azure Virtual Machines inschakelen voor implementatie en/of Toegang tot Azure Resource Manager inschakelen voor sjabloonimplementatie.
  4. Selecteer Opslaan.

Azure key vault advanced access policies

Een sleutelversleutelingssleutel instellen (optioneel)

Als u een Key Encryption Key (KEK) wilt gebruiken als een extra beveiligingslaag voor versleutelingssleutels, voegt u een KEK toe aan uw sleutelkluis. Gebruik de cmdlet Add-AzKeyVaultKey om een sleutelversleutelingssleutel in de sleutelkluis te maken. U kunt ook een KEK importeren vanuit uw on-premises sleutelbeheer-HSM. Zie onze Key Vault-documentatie voor meer informatie. Wanneer er een KEK is opgegeven, gebruikt Azure Disk Encryption die sleutel om de versleutelingsgeheimen te verpakken voordat er naar Key Vault wordt geschreven.

Een sleutelversleutelingssleutel instellen met Azure PowerShell

Voordat u het PowerShell-script gebruikt, moet u bekend zijn met de vereisten voor Azure Disk Encryption om inzicht te hebben in de stappen in het script. Het voorbeeldscript heeft mogelijk wijzigingen nodig voor uw omgeving. Met dit script worden alle vereisten voor Azure Disk Encryption gemaakt en wordt een bestaande IaaS-VM versleuteld, waarbij de schijfversleutelingssleutel wordt verpakt met behulp van een sleutelversleutelingssleutel.

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

Verificatie op basis van certificaten (optioneel)

Als u certificaatverificatie wilt gebruiken, kunt u er een uploaden naar uw sleutelkluis en deze implementeren op de client. Voordat u het PowerShell-script gebruikt, moet u bekend zijn met de vereisten voor Azure Disk Encryption om inzicht te hebben in de stappen in het script. Het voorbeeldscript heeft mogelijk wijzigingen nodig voor uw omgeving.


# 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

Verificatie op basis van certificaten en een KEK (optioneel)

Als u certificaatverificatie wilt gebruiken en de versleutelingssleutel wilt verpakken met een KEK, kunt u het onderstaande script als voorbeeld gebruiken. Voordat u het PowerShell-script gebruikt, moet u bekend zijn met alle vorige vereisten voor Azure Disk Encryption om inzicht te hebben in de stappen in het script. Het voorbeeldscript heeft mogelijk wijzigingen nodig voor uw omgeving.

Belangrijk

Verificatie op basis van Microsoft Entra-certificaten wordt momenteel niet ondersteund op Linux-VM's.

# 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

Volgende stappen

Azure Disk Encryption inschakelen met Microsoft Entra-id op Linux-VM's (vorige release)