Vytvoření a konfigurace trezoru klíčů pro Azure Disk Encryption s ID Microsoft Entra (předchozí verze) pro virtuální počítače s Linuxem

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Nová verze služby Azure Disk Encryption eliminuje požadavek na poskytnutí parametru aplikace Microsoft Entra pro povolení šifrování disků virtuálního počítače. V nové verzi už během kroku povolení šifrování nemusíte zadávat přihlašovací údaje Microsoft Entra. Všechny nové virtuální počítače musí být šifrované bez parametrů aplikace Microsoft Entra pomocí nové verze. Pokyny k povolení šifrování disků virtuálního počítače pomocí nové verze najdete v tématu Azure Disk Encryption. Virtuální počítače, které už byly zašifrované pomocí parametrů aplikace Microsoft Entra, se stále podporují a měly by se dál udržovat pomocí syntaxe Microsoft Entra.

Azure Disk Encryption používá službu Azure Key Vault k řízení a správě šifrovacích klíčů a tajných kódů disků. Další informace o trezorech klíčů najdete v tématu Začínáme se službou Azure Key Vault a zabezpečením trezoru klíčů.

Vytvoření a konfigurace trezoru klíčů pro použití se službou Azure Disk Encryption s ID Microsoft Entra (předchozí verze) zahrnuje tři kroky:

  1. Vytvořte trezor klíčů.
  2. Nastavte aplikaci Microsoft Entra a instanční objekt.
  3. Nastavte zásady přístupu trezoru klíčů pro aplikaci Microsoft Entra.
  4. Nastavte pokročilé zásady přístupu k trezoru klíčů.

Můžete také vygenerovat nebo importovat šifrovací klíč klíče (KEK).

Postup instalace nástrojů a připojení k Azure najdete v hlavním článku Vytvoření a konfigurace trezoru klíčů pro Službu Azure Disk Encryption.

Poznámka:

Kroky v tomto článku jsou automatizované ve skriptu rozhraní příkazového řádku pro azure Disk Encryption a v požadavcích služby Azure Disk Encryption skript PowerShellu.

Vytvořte trezor klíčů.

Služba Azure Disk Encryption je integrovaná se službou Azure Key Vault , která vám pomůže řídit a spravovat klíče a tajné kódy pro šifrování disků v předplatném trezoru klíčů. Můžete vytvořit trezor klíčů nebo použít existující trezor pro Službu Azure Disk Encryption. Další informace o trezorech klíčů najdete v tématu Začínáme se službou Azure Key Vault a zabezpečením trezoru klíčů. K vytvoření trezoru klíčů můžete použít šablonu Resource Manageru, Azure PowerShell nebo Azure CLI.

Upozorňující

Aby bylo možné zajistit, aby tajné kódy šifrování nepřesály hranice oblastí, služba Azure Disk Encryption potřebuje službu Key Vault a virtuální počítače, které se nacházejí ve stejné oblasti. Vytvořte a použijte službu Key Vault, která je ve stejné oblasti jako virtuální počítač k šifrování.

Vytvoření trezoru klíčů pomocí PowerShellu

Trezor klíčů můžete vytvořit pomocí Azure PowerShellu pomocí rutiny New-AzKeyVault . Další rutiny pro Key Vault najdete v tématu Az.KeyVault.

  1. V případě potřeby vytvořte novou skupinu prostředků pomocí rutiny New-AzResourceGroup. K výpisu umístění datových center použijte rutinu Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Vytvoření nového trezoru klíčů pomocí Rutiny New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Poznamenejte si název trezoru, název skupiny prostředků, ID prostředku, identifikátor URI trezoru a ID objektu, které se vrátí pro pozdější použití při šifrování disků.

Vytvoření trezoru klíčů pomocí Azure CLI

Trezor klíčů můžete spravovat pomocí Azure CLI pomocí příkazů az keyvault . Pokud chcete vytvořit trezor klíčů, použijte příkaz az keyvault create.

  1. V případě potřeby vytvořte novou skupinu prostředků pomocí příkazu az group create. Pokud chcete zobrazit seznam umístění, použijte příkaz az account list-locations.

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Vytvořte nový trezor klíčů pomocí příkazu az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Poznamenejte si název trezoru (název), název skupiny prostředků, ID prostředku (ID), identifikátor URI trezoru a ID objektu, které se vrátí pro pozdější použití.

Vytvoření trezoru klíčů pomocí šablony Resource Manageru

Trezor klíčů můžete vytvořit pomocí šablony Resource Manageru.

  1. V šabloně Rychlého startu Azure vyberte Nasadit do Azure.
  2. Vyberte předplatné, skupinu prostředků, umístění skupiny prostředků, název služby Key Vault, ID objektu, právní podmínky a smlouvu a pak vyberte Koupit.

Nastavení aplikace Microsoft Entra a instančního objektu

Pokud potřebujete povolit šifrování na spuštěném virtuálním počítači v Azure, Azure Disk Encryption vygeneruje a zapisuje šifrovací klíče do vašeho trezoru klíčů. Správa šifrovacích klíčů ve vašem trezoru klíčů vyžaduje ověřování Microsoft Entra. Pro tento účel vytvořte aplikaci Microsoft Entra. Pro účely ověřování můžete použít ověřování založené na tajných klíčích klienta nebo ověřování Microsoft Entra založené na klientském certifikátu.

Nastavení aplikace a instančního objektu Microsoft Entra pomocí Azure PowerShellu

Pokud chcete spustit následující příkazy, získejte a použijte modul Azure PowerShellu.

  1. K vytvoření aplikace Microsoft Entra použijte rutinu New-AzADApplication PowerShellu. MyApplicationHomePage a MyApplicationUri můžou být libovolné hodnoty.

    $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 je Microsoft Entra ClientID a $aadClientSecret je tajný klíč klienta, který použijete později k povolení služby Azure Disk Encryption. Sejf vyžádřete tajný kód klienta Microsoft Entra odpovídajícím způsobem. Spuštění $azureAdApplication.ApplicationId zobrazí ID aplikace.

Nastavení aplikace a instančního objektu Microsoft Entra pomocí Azure CLI

Instanční objekty můžete spravovat pomocí Azure CLI pomocí příkazů az ad sp . Další informace najdete v tématu Vytvoření instančního objektu Azure.

  1. Vytvořte nový instanční objekt.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. Vrácený appId je ID klienta Microsoft Entra použité v jiných příkazech. Jedná se také o hlavní název služby (SPN), který použijete pro az keyvault set-policy. Heslo je tajný klíč klienta, který byste měli použít později k povolení služby Azure Disk Encryption. Sejf vyžádřete tajný kód klienta Microsoft Entra odpovídajícím způsobem.

Nastavení aplikace a instančního objektu Microsoft Entra prostřednictvím webu Azure Portal

Pomocí kroků z portálu Vytvořte aplikaci Microsoft Entra a instanční objekt, který má přístup k článku o prostředcích k vytvoření aplikace Microsoft Entra. Každý níže uvedený krok vás provede přímo do části článku, která se má dokončit.

  1. Ověření požadovaných oprávnění
  2. Vytvoření aplikace Microsoft Entra
    • Při vytváření aplikace můžete použít libovolné jméno a přihlašovací adresu URL.
  3. Získejte ID aplikace a ověřovací klíč.
    • Ověřovací klíč je tajný klíč klienta a používá se jako AadClientSecret pro Set-AzVMDiskEncryptionExtension.
      • Ověřovací klíč používá aplikace jako přihlašovací údaje k přihlášení k ID Microsoft Entra. Na webu Azure Portal se tento tajný klíč nazývá klíče, ale nemá žádný vztah k trezorům klíčů. Zabezpečte tento tajný kód odpovídajícím způsobem.
    • ID aplikace se použije později jako AadClientId pro Set-AzVMDiskEncryptionExtension a jako ServicePrincipalName pro Set-AzKeyVaultAccessPolicy.

Nastavení zásad přístupu trezoru klíčů pro aplikaci Microsoft Entra

K zápisu šifrovacích tajných kódů do zadané služby Key Vault potřebuje Azure Disk Encryption ID klienta a tajný klíč klienta aplikace Microsoft Entra, která má oprávnění k zápisu tajných kódů do služby Key Vault.

Poznámka:

Azure Disk Encryption vyžaduje, abyste pro klientskou aplikaci Microsoft Entra nakonfigurovali následující zásady přístupu: WrapKey a Nastavit oprávnění.

Nastavení zásad přístupu trezoru klíčů pro aplikaci Microsoft Entra pomocí Azure PowerShellu

Vaše aplikace Microsoft Entra potřebuje práva pro přístup ke klíčům nebo tajným kódům v trezoru. Pomocí rutiny Set-AzKeyVaultAccessPolicy udělte aplikaci oprávnění pomocí ID klienta (které se vygenerovalo při registraci aplikace) jako hodnota parametru –ServicePrincipalName. Další informace najdete v blogovém příspěvku o službě Azure Key Vault – krok za krokem.

  1. Nastavte zásady přístupu trezoru klíčů pro aplikaci AD pomocí PowerShellu.

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

Nastavení zásad přístupu trezoru klíčů pro aplikaci Microsoft Entra pomocí Azure CLI

K nastavení zásad přístupu použijte az keyvault set-policy . Další informace najdete v tématu Správa služby Key Vault pomocí rozhraní příkazového řádku 2.0.

Dejte instančnímu objektu, který jste vytvořili prostřednictvím Azure CLI, přístup k získání tajných kódů a zabalení klíčů pomocí následujícího příkazu:

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

Nastavení zásad přístupu trezoru klíčů pro aplikaci Microsoft Entra pomocí portálu

  1. Otevřete skupinu prostředků pomocí trezoru klíčů.
  2. Vyberte trezor klíčů, přejděte na Zásady přístupu a pak vyberte Přidat nový.
  3. V části Vybrat objekt zabezpečení vyhledejte aplikaci Microsoft Entra, kterou jste vytvořili, a vyberte ji.
  4. V části Oprávnění ke klíči zaškrtněte v části Kryptografické operace zalomení klíče.
  5. U oprávnění tajných kódů zaškrtněte v části Operace správy tajných kódů nastavení.
  6. Vyberte OK a uložte zásady přístupu.

Azure Key Vault cryptographic operations - Wrap Key

Azure Key Vault Secret permissions - Set

Nastavte pokročilé zásady přístupu trezoru klíčů.

Platforma Azure potřebuje přístup k šifrovacím klíčům nebo tajným klíčům ve vašem trezoru klíčů, aby je bylo možné zpřístupnit virtuálnímu počítači pro spouštění a dešifrování svazků. Povolení šifrování disků v trezoru klíčů nebo nasazení se nezdaří.

Nastavení pokročilých zásad přístupu trezoru klíčů pomocí Azure PowerShellu

K povolení šifrování disků pro trezor klíčů pro trezor klíčů použijte rutinu PowerShellu Set-AzKeyVaultAccessPolicy .

  • Povolení služby Key Vault pro šifrování disků: Pro azure Disk Encryption se vyžaduje enabledForDiskEncryption.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • V případě potřeby povolte službu Key Vault pro nasazení: Povolí Microsoft. Poskytovatel výpočetních prostředků, který načítá tajné kódy z tohoto trezoru klíčů, když se na tento trezor klíčů odkazuje při vytváření prostředků, například při vytváření virtuálního počítače.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • V případě potřeby povolte službu Key Vault pro nasazení šablony: Povolí Azure Resource Manageru získat tajné kódy z tohoto trezoru klíčů, když se na tento trezor klíčů odkazuje v nasazení šablony.

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

Nastavení pokročilých zásad přístupu trezoru klíčů pomocí Azure CLI

Pomocí příkazu az keyvault update povolte šifrování disků pro trezor klíčů.

  • Povolení služby Key Vault pro šifrování disků: Vyžaduje se povolené šifrování disku.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • V případě potřeby povolte službu Key Vault pro nasazení: Povolí virtuálním počítačům načítat certifikáty uložené jako tajné kódy z trezoru.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • V případě potřeby povolte službu Key Vault pro nasazení šablony: Povolte Resource Manageru načtení tajných kódů z trezoru.

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

Nastavení rozšířených zásad přístupu trezoru klíčů prostřednictvím webu Azure Portal

  1. Vyberte svoji službu keyvault, přejděte na Zásady přístupu a kliknutím zobrazíte pokročilé zásady přístupu.
  2. Zaškrtněte políčko Povolit přístup ke službě Azure Disk Encryption pro šifrování svazků.
  3. V případě potřeby vyberte Povolit přístup k virtuálním počítačům Azure pro nasazení nebo povolte přístup k Azure Resource Manageru.
  4. Zvolte Uložit.

Azure key vault advanced access policies

Nastavení šifrovacího klíče klíče (volitelné)

Pokud chcete pro další vrstvu zabezpečení šifrovacích klíčů použít šifrovací klíč klíče (KEK), přidejte do trezoru klíčů klíč KEK. Pomocí rutiny Add-AzKeyVaultKey vytvořte v trezoru klíčů šifrovací klíč klíče. Můžete také importovat klíč KEK z místního modulu hardwarového zabezpečení pro správu klíčů. Další informace najdete v dokumentaci ke službě Key Vault. Když zadáte šifrovací klíč klíče, Azure Disk Encryption tento klíč použije k zabalení šifrovacích tajných kódů před zápisem do služby Key Vault.

Nastavení šifrovacího klíče pomocí Azure PowerShellu

Před použitím skriptu PowerShellu byste měli znát požadavky služby Azure Disk Encryption, abyste porozuměli krokům ve skriptu. Ukázkový skript může pro vaše prostředí potřebovat změny. Tento skript vytvoří všechny požadavky služby Azure Disk Encryption a zašifruje existující virtuální počítač IaaS a zabalí šifrovací klíč disku pomocí šifrovacího klíče klíče.

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

Ověřování na základě certifikátů (volitelné)

Pokud chcete použít ověřování pomocí certifikátu, můžete ho nahrát do trezoru klíčů a nasadit ho do klienta. Před použitím skriptu PowerShellu byste měli znát požadavky služby Azure Disk Encryption, abyste porozuměli krokům ve skriptu. Ukázkový skript může pro vaše prostředí potřebovat změny.


# 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

Ověřování na základě certifikátů a klíč KEK (volitelné)

Pokud chcete použít ověřování certifikátu a zabalit šifrovací klíč pomocí klíče KEK, můžete jako příklad použít následující skript. Před použitím skriptu PowerShellu byste měli znát všechny předchozí požadavky služby Azure Disk Encryption, abyste porozuměli krokům ve skriptu. Ukázkový skript může pro vaše prostředí potřebovat změny.

Důležité

Ověřování založené na certifikátech Microsoft Entra se v současné době na virtuálních počítačích s Linuxem nepodporuje.

# 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

Další kroky

Povolení služby Azure Disk Encryption s ID Microsoft Entra na virtuálních počítačích s Linuxem (předchozí verze)