Udostępnij przez


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

Ważne

Usługa Azure Disk Encryption ma zostać wycofana 15 września 2028 r. Do tej pory można nadal korzystać z usługi Azure Disk Encryption bez zakłóceń. 15 września 2028 r. obciążenia z obsługą programu ADE będą nadal działać, ale zaszyfrowane dyski nie będą mogły zostać odblokowane po ponownym uruchomieniu maszyny wirtualnej, co spowoduje przerwy w działaniu usługi.

Użyj szyfrowania na hoście dla nowych maszyn wirtualnych. Wszystkie maszyny wirtualne z obsługą programu ADE (w tym kopie zapasowe) muszą migrować do szyfrowania na hoście przed datą wycofania, aby uniknąć przerw w działaniu usługi. Aby uzyskać szczegółowe informacje, zobacz Migrowanie z usługi Azure Disk Encryption do szyfrowania na hoście .

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. Utwórz skrytkę kluczy.
  2. Skonfiguruj aplikację Microsoft Entra i jednostkę usługi.
  3. Ustaw politykę dostępu do skarbca kluczy dla aplikacji Microsoft Entra.
  4. Ustaw zaawansowane zasady dostępu w skarbcu 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 skrypcie interfejsu wiersza polecenia wymagań wstępnych usługi Azure Disk Encryption oraz skrypcie programu PowerShell wymagań wstępnych usługi Azure Disk Encryption.

Stwórz magazyn kluczy

Usługa Azure Disk Encryption jest zintegrowana z usługą Azure Key Vault, aby ułatwić kontrolowanie i zarządzanie kluczami szyfrowania dysków oraz tajnymi danymi 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

Żeby upewnić się, że tajne klucze szyfrowania nie przekraczają granic regionalnych, Azure Disk Encryption wymaga współlokacji Key Vault oraz maszyn wirtualnych 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 cmdlety dla 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. Utwórz nowy magazyn kluczy przy użyciu 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

Można zarządzać magazynem kluczy za pomocą Azure CLI, korzystając z 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), URI magazynu, i identyfikator obiektu, które są zwrócone do późniejszego użycia.

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

Można utworzyć magazyn kluczy 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.

Skonfiguruj aplikację Microsoft Entra oraz główną usługę

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 Microsoft Entra. W tym celu utwórz aplikację Microsoft Entra. W celach uwierzytelniania można użyć uwierzytelniania opartego na tajnym kluczu klienta lub uwierzytelniania Microsoft Entra opartego na certyfikatach klienta.

Skonfiguruj aplikację Microsoft Entra i jednostkę usługi za pomocą „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ę 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 identyfikator klienta Microsoft Entra, a $aadClientSecret to tajny klucz klienta, którego użyjesz później do włączenia szyfrowania dysku Azure. Należy odpowiednio zabezpieczyć tajny klienta Microsoft Entra. Uruchomienie $azureAdApplication.ApplicationId spowoduje wyświetlenie identyfikatora ApplicationID.

Skonfiguruj aplikację Microsoft Entra i jednostkę usługi za pomocą Azure CLI

Można zarządzać zasadami usługi za pomocą poleceń az ad sp w Azure CLI. Aby uzyskać więcej informacji, zobacz Tworzenie głównej 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ć tajny klienta Microsoft Entra.

Skonfiguruj aplikację Microsoft Entra i jednostkę usługi za pośrednictwem portalu Azure

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 ją ukończyć.

  1. Weryfikowanie wymaganych uprawnień
  2. Utwórz aplikację 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 portalu Azure ta tajemnica jest nazywana kluczami, ale nie ma związku z magazynami kluczy. Zabezpiecz tę tajemnicę odpowiednio.
    • Identyfikator aplikacji będzie używany później jako identyfikator AadClientId dla polecenia Set-AzVMDiskEncryptionExtension i jako parametr ServicePrincipalName dla polecenia Set-AzKeyVaultAccessPolicy.

Ustaw politykę 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 usługi Key Vault dla aplikacji Microsoft Entra przy użyciu programu Azure PowerShell

Aplikacja Microsoft Entra musi mieć uprawnienia dostępu do kluczy lub sekretów w skarbcu. 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 do magazynu kluczy dla aplikacji Microsoft Entra za pomocą Azure CLI

Użyj az keyvault set-policy, aby ustawić politykę 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 pomocą Azure CLI dostęp do uzyskiwania tajemnic i owijania kluczy przy użyciu 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

Ustaw zasady dostępu do skarbca kluczy dla aplikacji Microsoft Entra przy użyciu portalu

  1. Otwórz grupę zasobów zawierającą Twój magazyn kluczy.
  2. Wybierz magazyn kluczy, przejdź do Zasady dostępu, a następnie wybierz Dodaj nową zasadę.
  3. W sekcji Wybierz główna wyszukaj utworzoną aplikację Microsoft Entra i ją wybierz.
  4. W sekcji Uprawnienia klucza zaznacz Zawijanie klucza w części Operacje kryptograficzne.
  5. Aby uzyskać uprawnienia tajne, zaznacz Ustaw w obszarze Operacje zarządzania 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

Ustaw zaawansowane zasady dostępu do 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. Aktywuj szyfrowanie dysków w magazynie kluczy, w przeciwnym razie wdrożenia zakończą 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 Key Vault dla wdrożenia, jeśli to konieczne: Włącza usługę Microsoft. Dostawca zasobów obliczeniowych może pobierać tajne dane z tego magazynu kluczy, gdy jest on wykorzystywany do tworzenia zasobów, na przykład przy tworzeniu 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 Key Vault przy użyciu Azure CLI

Użyj 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 Key Vault do wdrożenia, jeśli to konieczne: Pozwól maszynom wirtualnym pobierać certyfikaty przechowywane jako tajemnice w skarbcu.

    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: pozwól usłudze Resource Manager na pobieranie tajemnic z magazynu.

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

Ustaw zaawansowane zasady dostępu składnicy kluczy przez portal Azure

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

Zaawansowane zasady dostępu usługi Azure Key Vault

Skonfiguruj klucz szyfrowania klucza (opcjonalnie)

Jeśli chcesz użyć klucza szyfrowania klucza (KEK) jako dodatkową warstwę zabezpieczeń dla 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 zabezpieczenia tajemnic szyfrowania przed zapisaniem w usłudze Key Vault.

  • Podczas generowania kluczy należy użyć typu klucza RSA. Usługa Azure Disk Encryption nie obsługuje jeszcze używania kluczy krzywej Elliptic.

  • Tajne dane magazynu kluczy i wersjonowane adresy URL klucza szyfrowania KEK muszą być wersjonowane. Platforma Azure wymusza to ograniczenie przechowywania wersji. Prawidłowe tajne adresy URL i adresy URL KEK można znaleźć w następujących przykładach:

    • Przykład prawidłowego tajnego adresu URL: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    • Przykład prawidłowego adresu URL klucza KEK: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • Usługa Azure Disk Encryption nie obsługuje określania numerów portów jako części sekretów magazynu kluczy i adresów URL KEK. Przykłady nieobsługiwanych i obsługiwanych adresów URL magazynu kluczy można znaleźć poniżej:

    • Niedopuszczalny adres URL magazynu kluczy https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    • Akceptowalny adres URL magazynu kluczy: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

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 wymogi wstępne usługi Azure Disk Encryption i szyfruje istniejącą maszynę wirtualną IaaS, owijają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ć na urządzeniu klienta. 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 (opcjonalny)

Jeśli chcesz użyć uwierzytelniania certyfikatu i zabezpieczyć klucz szyfrowania za pomocą 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)