Поделиться через


Создание и настройка хранилища ключей для Шифрование дисков Azure с помощью идентификатора Microsoft Entra (предыдущий выпуск)

Область применения: ✔️ Виртуальные машины Windows

Новый выпуск Azure Disk Encryption устраняет необходимость предоставления параметра приложения Microsoft Entra для включения шифрования дисков виртуальной машины. В новом выпуске вы больше не обязаны предоставлять учетные данные Microsoft Entra во время включения шифрования. Все новые виртуальные машины должны быть зашифрованы без использования параметров приложения Microsoft Entra с помощью нового релиза. Чтобы просмотреть инструкции по включению шифрования дисков виртуальных машин с использованием новой версии, см. Azure Disk Encryption. Виртуальные машины, которые уже зашифрованы с параметрами приложения Microsoft Entra, по-прежнему поддерживаются и должны продолжать поддерживаться с помощью синтаксиса Microsoft Entra.

Шифрование дисков Azure использует Azure Key Vault, чтобы управлять секретами и ключами шифрования дисков. Дополнительные сведения о хранилищах ключей см. в статье Приступая к работе с Azure Key Vault и Защита хранилища ключей.

Создание и настройка хранилища ключей для работы с функцией шифрования дисков Azure с использованием идентификатора Microsoft Entra ID (предыдущий выпуск) состоит из трех этапов.

  1. Создайте хранилище ключей.
  2. Настройте приложение Microsoft Entra и учетную запись службы.
  3. Задайте политику доступа к хранилищу ключей для приложения Microsoft Entra.
  4. Установите политики расширенного доступа к хранилищу ключей.

При необходимости можно создать или импортировать ключ шифрования ключа (KEK).

Инструкции по установке средств и подключению к Azure см. в статье Создание и настройка хранилища ключей для службы "Шифрование дисков Azure".

Примечание.

Описанные в этой статье шаги автоматизированы в скрипте Azure Disk Encryption prerequisites CLI script и в скрипте Azure Disk Encryption prerequisites PowerShell script.

Создание хранилища ключей

Шифрование дисков Azure интегрировано с Azure Key Vault, что позволяет управлять секретами и ключами шифрования дисков в подписке Key Vault и контролировать их. Вы можете создать хранилище ключей или использовать существующее для шифрования дисков Azure. Дополнительные сведения о хранилищах ключей см. в статье Приступая к работе с Azure Key Vault и Защита хранилища ключей. Для создания хранилища ключей можно использовать шаблон Resource Manager, Azure PowerShell или Azure CLI.

Предупреждение

Чтобы убедиться, что секреты шифрования не пересекают региональные границы, шифрованию дисков Azure требуется, чтобы хранилище ключей и виртуальные машины были расположены в одном регионе. Создайте и используйте хранилище ключей, которое находится в том же регионе, что и виртуальная машина, которую нужно зашифровать.

Создание хранилища ключей с помощью PowerShell

Вы можете создать хранилище ключей в Azure PowerShell с помощью командлета New-AzKeyVault. Другие командлеты для Key Vault см. в разделе Az.KeyVault.

  1. Чтобы создать группу ресурсов, используйте команду New-AzResourceGroup. Чтобы перечислить расположения центров обработки данных, используйте команду Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Создайте новое хранилище ключей с помощью командлета New-AzKeyVault.

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Запишите возвращенные значения имени хранилища, имени группы ресурсов, идентификатора ресурса, кода URI хранилища и идентификатора объекта для последующего использования при шифровании дисков.

Создание хранилища ключей с помощью Azure CLI

Вы можете управлять вашим хранилищем ключей в Azure CLI с помощью команд az keyvault. Чтобы создать хранилище ключей, используйте команду az keyvault create.

  1. Чтобы создать группу ресурсов, используйте команду az group create. Для перечисления расположений используйте команду az account list-locations.

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Чтобы создать новое хранилище ключей, используйте командуaz keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Запишите возвращенные значения имени хранилища, имени группы ресурсов, идентификатора ресурса, кода URI хранилища и идентификатора объекта для последующего использования.

Создание хранилища ключей с помощью шаблона Resource Manager

Можно создать хранилище ключей с помощью шаблона Resource Manager.

  1. В шаблоне быстрого запуска Azure выберите Развернуть в Azure.
  2. Выберите подписку, группу ресурсов, расположение группы ресурсов, имя Key Vault, идентификатор объекта, юридические условия и соглашение, а затем нажмите кнопку "Приобрести".

Настройка приложения и субъекта-службы Microsoft Entra

Если шифрование нужно включить для виртуальной машины, работающей в Azure, то служба шифрования дисков Azure создает ключи шифрования и записывает их в ваше хранилище ключей. Для управления ключами шифрования в хранилище ключей требуется проверка подлинности Microsoft Entra. Создайте приложение Microsoft Entra для этой цели. Для проверки подлинности можно использовать проверку подлинности на основе секрета клиента или проверку подлинности Microsoft Entra на основе сертификата клиента.

Настройка приложения Microsoft Entra и служебной учетной записи с помощью Azure PowerShell

Чтобы выполнить следующие команды, получите и используйте модуль Azure PowerShell.

  1. Используйте командлет PowerShell New-AzADApplication для создания приложения Microsoft Entra. Вместо MyApplicationHomePage и MyApplicationUri можно указать любые значения.

    $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 — это идентификатор клиента Microsoft Entra, а $aadClientSecret — это клиентский секрет, который будет использоваться позже для включения шифрования дисков Azure. Оберегите секрет клиента Microsoft Entra соответствующим образом. Запуск $azureAdApplication.ApplicationId покажет идентификатор приложения.

Настройка приложения и субъекта-службы Microsoft Entra с помощью Azure CLI

Вы можете управлять своими объектами службы в Azure CLI с помощью команд az ad sp. Дополнительные сведения см. в статье Создание учётной записи службы Azure.

  1. Создайте новую учетную запись службы.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. Возвращенный идентификатор приложения — это идентификатор клиента Microsoft Entra, используемый в других командах. Это также имя субъекта-службы, которое будет использоваться для команды az keyvault set-policy. Пароль — это секрет клиента, который понадобится позже, чтобы включить шифрование дисков Azure. Оберегите секрет клиента Microsoft Entra соответствующим образом.

Настройте приложение и принципала службы Microsoft Entra с помощью портала Azure

Используйте шаги из статьи портал использования для создания приложения Microsoft Entra и субъект-службу, имеющую доступ к ресурсам для создания приложения Microsoft Entra. Каждый из этих шагов направит вас непосредственно в раздел статьи для завершения.

  1. Проверьте необходимые разрешения.
  2. Создание приложения Microsoft Entra
    • При создании приложения можно использовать любое имя и URL-адрес входа.
  3. Получите идентификатор приложения и ключ проверки подлинности.
    • Ключ проверки подлинности является секретом клиента и используется в качестве AadClientSecret для Set-AzVMDiskEncryptionExtension.
      • Ключ проверки подлинности используется приложением в качестве учетных данных для входа в идентификатор Microsoft Entra. На портале Azure эти секреты называются ключами, но они не имеют никакого отношения к хранилищам ключей. Защитите этот секрет должным образом.
    • Идентификатор приложения будет использоваться позже в качестве AadClientId для Set-AzVMDiskEncryptionExtension и в качестве ServicePrincipalName для Set-AzKeyVaultAccessPolicy.

Настройка политики доступа к хранилищу ключей для приложения Microsoft Entra

Чтобы записать секреты шифрования в указанное хранилище ключей, Шифрование дисков Azure требуется идентификатор клиента и секрет клиента приложения Microsoft Entra с разрешениями на запись секретов в Key Vault.

Примечание.

Для шифрования дисков Azure необходимо настроить следующие политики доступа для клиентского приложения Microsoft Entra: разрешения WrapKey и Set.

Настройка политики доступа к хранилищу ключей для приложения Microsoft Entra с помощью Azure PowerShell

Приложению Microsoft Entra требуются права доступа к ключам или секретам в хранилище. Используйте командлет Set-AzKeyVaultAccessPolicy, чтобы предоставить приложению необходимые разрешения. Здесь в качестве значения параметра –ServicePrincipalName следует использовать идентификатор клиента, созданный при регистрации приложения. Чтобы узнать больше, ознакомьтесь с записью блога Azure Key Vault - Step by Step (Пошаговая инструкция для Azure Key Vault).

  1. Настройте политики доступа к хранилищу ключей для приложения AD с помощью PowerShell.

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

Настройка политики доступа к хранилищу ключей для приложения Microsoft Entra с помощью Azure CLI

Используйте az keyvault set-policy, чтобы настроить политику доступа. Дополнительные сведения см. в разделе Управление Key Vault с помощью интерфейса командной строки 2.0.

Предоставьте субъекту-службе, который вы создали через интерфейс Azure CLI, доступ к секретам и упакуйте ключи с помощью следующей команды:

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

Настройка политики доступа к хранилищу ключей для приложения Microsoft Entra с помощью портала

  1. Откройте группу ресурсов, в которой содержится ваше хранилище ключей.
  2. Выберите хранилище ключей, перейдите к политикам доступа, а затем нажмите кнопку "Добавить".
  3. В разделе "Выбор принципала" найдите созданное приложение Microsoft Entra и выберите его.
  4. В колонке Разрешения ключей установите флажок Упаковка ключа в разделе Операции шифрования.
  5. В колонке Разрешения секретов установите флажок Установить в разделе Операции управления секретами.
  6. Нажмите кнопку "ОК ", чтобы сохранить политику доступа.

Криптографические операции Azure Key Vault — упаковка ключа

Разрешения секретов Azure Key Vault — настройка

установить политики расширенного доступа к хранилищу ключей.

Платформа Azure должна иметь доступ к ключам шифрования или секретам, расположенным в вашем хранилище ключей, чтобы предоставлять их виртуальной машине при ее загрузке для расшифровки томов. Включите шифрование диска в хранилище ключей, иначе развертывание завершится сбоем.

Настройка политик расширенного доступа хранилища ключей с помощью Azure PowerShell

Используйте командлет Set-AzKeyVaultAccessPolicy в PowerShell, чтобы включить шифрование диска для хранилища ключей.

  • Включение хранилища ключей для шифрования диска: для шифрования дисков Azure требуется использовать параметр EnabledForDiskEncryption.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Включите Key Vault для развертывания при необходимости: включает корпорацию Майкрософт. Поставщик вычислительных ресурсов для получения секретов из этого хранилища ключей при создании ресурса, например при создании виртуальной машины.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Включение хранилища ключей для развертывания шаблона (если необходимо): позволяет Azure Resource Manager получать секреты из этого хранилища ключей в случае использования ссылки на него при развертывании шаблона.

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

Настройка политик расширенного доступа хранилища ключей с помощью Azure CLI

Включите шифрование дисков для хранилища ключей с помощью команды az keyvault update.

  • Включение хранилища ключей для шифрования диска: требуется использовать параметр enabled-for-disk-encryption.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Включение хранилища ключей для развертывания (если необходимо): позволяет виртуальным машинам получать сертификаты, хранимые в виде секретов, из хранилища.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Включение хранилища ключей для развертывания шаблона (если необходимо): позволяет Resource Manager получать секреты из хранилища.

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

Настройка политик расширенного доступа к хранилищу ключей с помощью портал Azure

  1. Выберите хранилище ключей, перейдите на вкладку Политики доступа и выберите Щелкните, чтобы показать политики расширенного доступа.
  2. Установите флажок Включить доступ к шифрованию дисков Azure для шифрования томов.
  3. Выберите Включить доступ к виртуальным машинам Azure для развертывания или Включить доступ к Azure Resource Manager для развертывания шаблонов, если это необходимо.
  4. Выберите Сохранить.

Установка политики расширенного доступа к хранилищу Azure Key Vault

Настройка ключа шифрования ключей (необязательно)

Если вы хотите использовать ключ шифрования ключей (KEK), чтобы добавить уровень безопасности ключей шифрования, поместите KEK в хранилище ключей. Используйте командлет Add-AzKeyVaultKey, чтобы создать ключ шифрования ключей в хранилище ключей. Вы также можете импортировать KEK из вашего внутреннего модуля HSM для управления ключами. Дополнительные сведения см. в документации по Key Vault. Когда ключ шифрования ключей указан, шифрование дисков Azure использует его для упаковки секретов шифрования перед записью в Key Vault.

Настройка ключа шифрования с помощью Azure PowerShell

Перед использованием скрипта PowerShell нужно ознакомиться с предварительными требованиями к шифрованию дисков Azure, чтобы понять шаги. Для примера скрипта могут потребоваться изменения в вашей среде. Этот скрипт создает все необходимые компоненты для шифрования дисков Azure и шифрует существующую виртуальную машину IaaS, упаковывая ключ шифрования диска с помощью ключа шифрования ключей.

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

Проверка подлинности на основе сертификатов (необязательно)

Если вы хотите использовать аутентификацию с использованием сертификата, вы можете загрузить сертификат в ваше хранилище ключей и развернуть его на клиенте. Перед использованием скрипта PowerShell нужно ознакомиться с предварительными требованиями к шифрованию дисков Azure, чтобы понять шаги. Для примера скрипта могут потребоваться изменения в вашей среде.


# 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

Проверка подлинности на основе сертификатов и KEK (необязательно)

Если вы хотите использовать аутентификацию на основе сертификата и упаковать ключ шифрования с помощью KEK, вы можете использовать приведенный ниже скрипт в качестве примера. Перед использованием скрипта PowerShell нужно ознакомиться со всеми предыдущими предварительными требованиями к шифрованию дисков Azure, чтобы понять шаги. Образец скрипта может потребовать изменений для вашей среды.

# 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

Следующие шаги

Включение шифрования дисков Azure с Microsoft Entra ID на виртуальных машинах Windows (предыдущий выпуск)