Udostępnij za pośrednictwem


Tworzenie i konfigurowanie magazynu kluczy dla usługi Azure Disk Encryption przy użyciu identyfikatora Entra firmy Microsoft (poprzedniej wersji) dla maszyn wirtualnych z systemem Linux

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Nowa wersja usługi Azure Disk Encryption eliminuje wymaganie podania parametru aplikacji Microsoft Entra w celu włączenia szyfrowania dysków maszyny wirtualnej. W nowej wersji nie musisz już podawać poświadczeń firmy Microsoft w trakcie kroku włączania szyfrowania. Wszystkie nowe maszyny wirtualne muszą być szyfrowane bez parametrów aplikacji Microsoft Entra przy użyciu nowej wersji. Aby wyświetlić instrukcje dotyczące włączania szyfrowania dysków maszyny wirtualnej przy użyciu nowej wersji, zobacz Azure Disk Encryption. Maszyny wirtualne, które zostały już zaszyfrowane za pomocą parametrów aplikacji Microsoft Entra, są nadal obsługiwane i powinny być nadal utrzymywane przy użyciu składni Microsoft Entra.

Usługa Azure Disk Encryption używa usługi Azure Key Vault do kontrolowania kluczy szyfrowania dysków i wpisów tajnych oraz zarządzania nimi. Aby uzyskać więcej informacji na temat magazynów kluczy, zobacz Rozpoczynanie pracy z usługą Azure Key Vault i Zabezpieczanie magazynu kluczy.

Tworzenie i konfigurowanie magazynu kluczy do użycia z usługą Azure Disk Encryption za pomocą identyfikatora Microsoft Entra ID (poprzedniej wersji) obejmuje trzy kroki:

  1. Tworzenie magazynu kluczy.
  2. Skonfiguruj aplikację Microsoft Entra i jednostkę usługi.
  3. Ustaw zasady dostępu magazynu kluczy dla aplikacji Microsoft Entra.
  4. Ustawianie zaawansowanych zasad dostępu magazynu kluczy.

Możesz również, jeśli chcesz, wygenerować lub zaimportować klucz szyfrowania klucza (KEK).

Zobacz główny artykuł Tworzenie i konfigurowanie magazynu kluczy dla usługi Azure Disk Encryption , aby uzyskać instrukcje dotyczące sposobu instalowania narzędzi i nawiązywania połączenia z platformą Azure.

Uwaga

Kroki opisane w tym artykule są zautomatyzowane w skrycie interfejsu wiersza polecenia wymagań wstępnych usługi Azure Disk Encryption i skryptu programu PowerShell wymagań wstępnych usługi Azure Disk Encryption.

Tworzenie magazynu kluczy

Usługa Azure Disk Encryption jest zintegrowana z usługą Azure Key Vault , aby ułatwić kontrolowanie kluczy i wpisów tajnych szyfrowania dysków oraz zarządzanie nimi w ramach subskrypcji magazynu kluczy. Magazyn kluczy można utworzyć lub użyć istniejącego magazynu dla usługi Azure Disk Encryption. Aby uzyskać więcej informacji na temat magazynów kluczy, zobacz Rozpoczynanie pracy z usługą Azure Key Vault i Zabezpieczanie magazynu kluczy. Do utworzenia magazynu kluczy można użyć szablonu usługi Resource Manager, programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.

Ostrzeżenie

Aby upewnić się, że wpisy tajne szyfrowania nie przekraczają granic regionalnych, usługa Azure Disk Encryption wymaga, aby usługa Key Vault i maszyny wirtualne znajdowały się w tym samym regionie. Utwórz i użyj usługi Key Vault, która znajduje się w tym samym regionie co maszyna wirtualna do szyfrowania.

Tworzenie magazynu kluczy przy użyciu programu PowerShell

Magazyn kluczy można utworzyć za pomocą programu Azure PowerShell przy użyciu polecenia cmdlet New-AzKeyVault . Aby uzyskać dodatkowe polecenia cmdlet dla usługi Key Vault, zobacz Az.KeyVault.

  1. W razie potrzeby utwórz nową grupę zasobów za pomocą polecenia New-AzResourceGroup. Aby wyświetlić listę lokalizacji centrum danych, użyj polecenia Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Tworzenie nowego magazynu kluczy przy użyciu polecenia New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Zwróć uwagę na nazwę magazynu, nazwę grupy zasobów, identyfikator zasobu, identyfikator URI magazynu i identyfikator obiektu, który jest zwracany do późniejszego użycia podczas szyfrowania dysków.

Tworzenie magazynu kluczy przy użyciu interfejsu wiersza polecenia platformy Azure

Magazyn kluczy można zarządzać za pomocą interfejsu wiersza polecenia platformy Azure przy użyciu poleceń az keyvault . Aby utworzyć magazyn kluczy, użyj polecenia az keyvault create.

  1. W razie potrzeby utwórz nową grupę zasobów za pomocą polecenia az group create. Aby wyświetlić listę lokalizacji, użyj polecenia az account list-locations

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Utwórz nowy magazyn kluczy przy użyciu polecenia az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Zanotuj nazwę magazynu (nazwę ), nazwę grupy zasobów, identyfikator zasobu (ID), identyfikator URI magazynu i identyfikator obiektu zwrócony do późniejszego użycia.

Tworzenie magazynu kluczy przy użyciu szablonu usługi Resource Manager

Magazyn kluczy można utworzyć przy użyciu szablonu usługi Resource Manager.

  1. W szablonie Szybkiego startu platformy Azure wybierz pozycję Wdróż na platformie Azure.
  2. Wybierz subskrypcję, grupę zasobów, lokalizację grupy zasobów, nazwę usługi Key Vault, identyfikator obiektu, postanowienia prawne i umowę, a następnie wybierz pozycję Kup.

Konfigurowanie aplikacji Microsoft Entra i jednostki usługi

Gdy konieczne jest włączenie szyfrowania na uruchomionej maszynie wirtualnej na platformie Azure, usługa Azure Disk Encryption generuje i zapisuje klucze szyfrowania w magazynie kluczy. Zarządzanie kluczami szyfrowania w magazynie kluczy wymaga uwierzytelniania firmy Microsoft Entra. W tym celu utwórz aplikację Firmy Microsoft Entra. W celach uwierzytelniania można użyć uwierzytelniania opartego na wpisach tajnych klienta lub uwierzytelniania opartego na certyfikatach klienta firmy Microsoft.

Konfigurowanie aplikacji Microsoft Entra i jednostki usługi za pomocą programu Azure PowerShell

Aby wykonać następujące polecenia, pobierz moduł Azure PowerShell i użyj go.

  1. Użyj polecenia cmdlet New-AzADApplication programu PowerShell, aby utworzyć aplikację Firmy Microsoft Entra. MyApplicationHomePage i MyApplicationUri mogą być dowolnymi wartościami.

    $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. Identyfikator $azureAdApplication.ApplicationId to Microsoft Entra ClientID, a $aadClientSecret to klucz tajny klienta, którego użyjesz później do włączenia usługi Azure Disk Encryption. Należy odpowiednio zabezpieczyć wpis tajny klienta Firmy Microsoft Entra. Uruchomienie $azureAdApplication.ApplicationId spowoduje wyświetlenie identyfikatora ApplicationID.

Konfigurowanie aplikacji Microsoft Entra i jednostki usługi przy użyciu interfejsu wiersza polecenia platformy Azure

Jednostki usługi można zarządzać za pomocą interfejsu wiersza polecenia platformy Azure przy użyciu poleceń az ad sp . Aby uzyskać więcej informacji, zobacz Tworzenie jednostki usługi platformy Azure.

  1. Utwórz nową jednostkę usługi.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. Zwrócony identyfikator appId jest identyfikatorem ClientID firmy Microsoft używanym w innych poleceniach. Jest to również nazwa SPN używana dla polecenia az keyvault set-policy. Hasło jest kluczem tajnym klienta, którego należy użyć później, aby włączyć usługę Azure Disk Encryption. Należy odpowiednio zabezpieczyć wpis tajny klienta Firmy Microsoft Entra.

Konfigurowanie aplikacji Microsoft Entra i jednostki usługi za pośrednictwem witryny Azure Portal

Wykonaj kroki opisane w artykule Używanie portalu, aby utworzyć aplikację Microsoft Entra i jednostkę usługi, która może uzyskać dostęp do zasobów , aby utworzyć aplikację firmy Microsoft Entra. Każdy krok wymieniony poniżej przeprowadzi Cię bezpośrednio do sekcji artykułu, aby ukończyć.

  1. Weryfikowanie wymaganych uprawnień
  2. Tworzenie aplikacji Firmy Microsoft Entra
    • Podczas tworzenia aplikacji możesz użyć dowolnej nazwy i adresu URL logowania.
  3. Pobierz identyfikator aplikacji i klucz uwierzytelniania.
    • Klucz uwierzytelniania jest kluczem tajnym klienta i jest używany jako element AadClientSecret dla polecenia Set-AzVMDiskEncryptionExtension.
      • Klucz uwierzytelniania jest używany przez aplikację jako poświadczenia do logowania się do identyfikatora Entra firmy Microsoft. W witrynie Azure Portal ten wpis tajny jest nazywany kluczami, ale nie ma relacji z magazynami kluczy. Należy odpowiednio zabezpieczyć ten wpis tajny.
    • Identyfikator aplikacji będzie używany później jako identyfikator AadClientId dla polecenia Set-AzVMDiskEncryptionExtension i jako parametr ServicePrincipalName dla polecenia Set-AzKeyVaultAccessPolicy.

Ustawianie zasad dostępu magazynu kluczy dla aplikacji Microsoft Entra

Aby zapisywać wpisy tajne szyfrowania w określonej usłudze Key Vault, usługa Azure Disk Encryption wymaga identyfikatora klienta i klucza tajnego klienta aplikacji Microsoft Entra, która ma uprawnienia do zapisywania wpisów tajnych w usłudze Key Vault.

Uwaga

Usługa Azure Disk Encryption wymaga skonfigurowania następujących zasad dostępu do aplikacji klienckiej Firmy Microsoft Entra: WrapKey i Ustaw uprawnienia.

Ustawianie zasad dostępu magazynu kluczy dla aplikacji Microsoft Entra przy użyciu programu Azure PowerShell

Aplikacja Microsoft Entra musi mieć uprawnienia dostępu do kluczy lub wpisów tajnych w magazynie. Użyj polecenia cmdlet Set-AzKeyVaultAccessPolicy, aby udzielić uprawnień aplikacji przy użyciu identyfikatora klienta (który został wygenerowany podczas rejestracji aplikacji) jako wartość parametru –ServicePrincipalName. Aby dowiedzieć się więcej, zobacz wpis w blogu Azure Key Vault — krok po kroku.

  1. Ustaw zasady dostępu magazynu kluczy dla aplikacji usługi AD za pomocą programu PowerShell.

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

Ustawianie zasad dostępu magazynu kluczy dla aplikacji Microsoft Entra przy użyciu interfejsu wiersza polecenia platformy Azure

Użyj polecenia az keyvault set-policy , aby ustawić zasady dostępu. Aby uzyskać więcej informacji, zobacz Zarządzanie usługą Key Vault przy użyciu interfejsu wiersza polecenia 2.0.

Nadaj jednostce usługi utworzonej za pośrednictwem interfejsu wiersza polecenia platformy Azure dostęp do uzyskiwania wpisów tajnych i zawijania kluczy za pomocą następującego polecenia:

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

Ustawianie zasad dostępu magazynu kluczy dla aplikacji Microsoft Entra za pomocą portalu

  1. Otwórz grupę zasobów przy użyciu magazynu kluczy.
  2. Wybierz magazyn kluczy, przejdź do pozycji Zasady dostępu, a następnie wybierz pozycję Dodaj nową.
  3. W obszarze Wybierz podmiot zabezpieczeń wyszukaj utworzoną aplikację Microsoft Entra i wybierz ją.
  4. W obszarze Uprawnienia klucza sprawdź pozycję Zawijanie klucza w obszarze Operacje kryptograficzne.
  5. Aby uzyskać uprawnienia wpisu tajnego, zobacz Ustawianie w obszarze Operacje zarządzania wpisami tajnymi.
  6. Wybierz przycisk OK , aby zapisać zasady dostępu.

Operacje kryptograficzne usługi Azure Key Vault — zawijanie klucza

Uprawnienia wpisu tajnego usługi Azure Key Vault — ustawianie

Ustawianie zaawansowanych zasad dostępu magazynu kluczy

Platforma Azure potrzebuje dostępu do kluczy szyfrowania lub wpisów tajnych w magazynie kluczy, aby udostępnić je maszynie wirtualnej do rozruchu i odszyfrowywania woluminów. Włączenie szyfrowania dysków w magazynie kluczy lub wdrożeniach zakończy się niepowodzeniem.

Ustawianie zaawansowanych zasad dostępu magazynu kluczy za pomocą programu Azure PowerShell

Użyj polecenia cmdlet programu PowerShell dla magazynu kluczy Set-AzKeyVaultAccessPolicy , aby włączyć szyfrowanie dysków dla magazynu kluczy.

  • Włącz usługę Key Vault na potrzeby szyfrowania dysków: dla szyfrowania dysków platformy Azure jest wymagany enabledForDiskEncryption.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Włącz usługę Key Vault do wdrożenia, jeśli jest to konieczne: włącza firmę Microsoft. Dostawca zasobów obliczeniowych do pobierania wpisów tajnych z tego magazynu kluczy podczas odwołowania się do tego magazynu kluczy podczas tworzenia zasobów, na przykład podczas tworzenia maszyny wirtualnej.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Włącz usługę Key Vault na potrzeby wdrażania szablonu, jeśli jest to konieczne: umożliwia usłudze Azure Resource Manager pobieranie wpisów tajnych z tego magazynu kluczy po odwołaniu się do tego magazynu kluczy we wdrożeniu szablonu.

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

Ustawianie zaawansowanych zasad dostępu magazynu kluczy przy użyciu interfejsu wiersza polecenia platformy Azure

Użyj polecenia az keyvault update , aby włączyć szyfrowanie dysków dla magazynu kluczy.

  • Włącz usługę Key Vault na potrzeby szyfrowania dysków: wymagane jest włączenie szyfrowania na dysku.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Włącz usługę Key Vault do wdrożenia w razie potrzeby: zezwalaj maszynom wirtualnym na pobieranie certyfikatów przechowywanych jako wpisy tajne z magazynu.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Włącz usługę Key Vault na potrzeby wdrażania szablonu, jeśli jest to konieczne: zezwalaj usłudze Resource Manager na pobieranie wpisów tajnych z magazynu.

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

Ustawianie zaawansowanych zasad dostępu magazynu kluczy za pośrednictwem witryny Azure Portal

  1. Wybierz swoją usługę keyvault, przejdź do pozycji Zasady dostępu i kliknij, aby wyświetlić zaawansowane zasady dostępu.
  2. Wybierz pole z etykietą Włącz dostęp do usługi Azure Disk Encryption na potrzeby szyfrowania woluminów.
  3. W razie potrzeby wybierz pozycję Włącz dostęp do usługi Azure Virtual Machines na potrzeby wdrażania i/lub Włącz dostęp do usługi Azure Resource Manager w celu wdrożenia szablonu.
  4. Wybierz pozycję Zapisz.

Zaawansowane zasady dostępu usługi Azure Key Vault

Konfigurowanie klucza szyfrowania klucza (opcjonalnie)

Jeśli chcesz użyć klucza szyfrowania klucza (KEK) dla dodatkowej warstwy zabezpieczeń kluczy szyfrowania, dodaj klucz KEK do magazynu kluczy. Użyj polecenia cmdlet Add-AzKeyVaultKey, aby utworzyć klucz szyfrowania klucza w magazynie kluczy. Klucz KEK można również zaimportować z lokalnego modułu HSM zarządzania kluczami. Aby uzyskać więcej informacji, zobacz Dokumentację usługi Key Vault. Po określeniu klucza szyfrowania klucza usługa Azure Disk Encryption używa tego klucza do opakowania wpisów tajnych szyfrowania przed zapisaniem w usłudze Key Vault.

Konfigurowanie klucza szyfrowania za pomocą programu Azure PowerShell

Przed rozpoczęciem korzystania ze skryptu programu PowerShell należy zapoznać się z wymaganiami wstępnymi usługi Azure Disk Encryption, aby zrozumieć kroki opisane w skrycie. Przykładowy skrypt może wymagać zmian w danym środowisku. Ten skrypt tworzy wszystkie wymagania wstępne usługi Azure Disk Encryption i szyfruje istniejącą maszynę wirtualną IaaS, opakowując klucz szyfrowania dysku przy użyciu klucza szyfrowania klucza.

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

Uwierzytelnianie oparte na certyfikatach (opcjonalnie)

Jeśli chcesz użyć uwierzytelniania certyfikatu, możesz przekazać go do magazynu kluczy i wdrożyć go na kliencie. Przed rozpoczęciem korzystania ze skryptu programu PowerShell należy zapoznać się z wymaganiami wstępnymi usługi Azure Disk Encryption, aby zrozumieć kroki opisane w skrycie. Przykładowy skrypt może wymagać zmian w danym środowisku.


# 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

Uwierzytelnianie oparte na certyfikatach i klucz KEK (opcjonalnie)

Jeśli chcesz użyć uwierzytelniania certyfikatu i opakować klucz szyfrowania za pomocą klucza KEK, możesz użyć poniższego skryptu jako przykładu. Przed rozpoczęciem korzystania ze skryptu programu PowerShell należy zapoznać się ze wszystkimi poprzednimi wymaganiami wstępnymi usługi Azure Disk Encryption, aby zrozumieć kroki opisane w skrycie. Przykładowy skrypt może wymagać zmian w danym środowisku.

Ważne

Uwierzytelnianie oparte na certyfikatach firmy Microsoft nie jest obecnie obsługiwane na maszynach wirtualnych z systemem Linux.

# 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

Następne kroki

Włączanie usługi Azure Disk Encryption przy użyciu identyfikatora Entra firmy Microsoft na maszynach wirtualnych z systemem Linux (poprzednia wersja)