Создание и настройка хранилища ключей для шифрования дисков Azure

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

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

  1. Создание группы ресурсов при необходимости.
  2. Создание хранилища ключей.
  3. Установка политик расширенного доступа к хранилищу ключей.

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

Установка средств и подключение к Azure

Действия, описанные в этой статье, можно выполнить с помощью Azure CLI, модуля Azure PowerShell Az или портала Azure.

Создание группы ресурсов

Если у вас уже есть группа ресурсов, можно перейти к созданию хранилища ключей.

Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure и управление ими.

Создайте группу ресурсов с помощью команды az group create в Azure CLI, команды New-AzResourceGroup в Azure PowerShell или на портале Azure.

Azure CLI

az group create --name "myResourceGroup" --location eastus

Azure PowerShell

New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"

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

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

Создайте хранилище ключей с помощью команды az keyvault create в Azure CLI, команды New-AzKeyvault в Azure PowerShell, на портале Azure или с помощью шаблона Resource Manager.

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

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

Каждый Key Vault должен иметь уникальное имя. В следующих примерах замените <your-unique-keyvault-name> именем своего хранилища ключей.

Azure CLI

При создании хранилища ключей с помощью Azure CLI добавьте флаг --enabled-for-disk-encryption.

az keyvault create --name "<your-unique-keyvault-name>" --resource-group "myResourceGroup" --location "eastus" --enabled-for-disk-encryption

Azure PowerShell

При создании хранилища ключей с помощью Azure PowerShell добавьте флаг -EnabledForDiskEncryption.

New-AzKeyvault -name "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup" -Location "eastus" -EnabledForDiskEncryption

Шаблон Resource Manager

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

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

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

Важно!

Для новых хранилищ ключей обратимое удаление по умолчанию включено. Если вы используете существующее хранилище ключей, обратимое удаление необходимо включить вручную. См. раздел Общие сведения об обратимом удалении в Azure Key Vault.

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

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

Azure CLI

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

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

    az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-disk-encryption "true"
    
  • Включение хранилища ключей для развертывания (если необходимо): позволяет поставщику ресурсов Microsoft.Compute извлекать секреты из этого хранилища ключей в случае использования ссылки на него при создании ресурса, например, виртуальной машины.

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

    az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-template-deployment "true"
    

Azure PowerShell

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

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

    Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDiskEncryption
    
  • Включение хранилища ключей для развертывания (если необходимо): позволяет поставщику ресурсов Microsoft.Compute извлекать секреты из этого хранилища ключей в случае использования ссылки на него при создании ресурса, например, виртуальной машины.

     Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDeployment
    
  • Включение хранилища ключей для развертывания шаблона (если необходимо): позволяет Azure Resource Manager получать секреты из этого хранилища ключей в случае использования ссылки на него при развертывании шаблона.

    Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForTemplateDeployment
    

Портал Azure

  1. Выберите свое хранилище ключей и перейдите в раздел Политики доступа.

  2. В разделе "Разрешить доступ" установите флажок Шифрование дисков Azure для шифрования томов.

  3. Выберите Виртуальные машины Azure для развертывания или Azure Resource Manager для развертывания шаблонов, если это необходимо.

  4. Выберите команду Сохранить.

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

Шифрование дисков Azure и автоматическая смена ключей

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

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

Настройка ключа шифрования ключа (KEK)

Важно!

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

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

Вы можете создать новый KEK с помощью команды az keyvault key create в Azure CLI, команды Add-AzKeyVaultKey в Azure PowerShell или на портале Azure. Вам нужно создать тип ключа RSA. Шифрование дисков Azure сейчас не поддерживает использование ключей на основе эллиптической кривой.

Вместо этого KEK можно импортировать из своего локального устройства HSM управления ключами. Дополнительные сведения см. в документации по Key Vault.

Для URL-адресов KEK хранилища ключей необходимо включить управление версиями. Это требование Azure. Ниже приведены примеры действительных URL-адресов секрета и ключа шифрования ключей.

Azure CLI

Используйте команду az keyvault key create в Azure CLI, чтобы создать новый KEK и сохранить его в хранилище ключей.

az keyvault key create --name "myKEK" --vault-name "<your-unique-keyvault-name>" --kty RSA --size 4096

Вместо этого можно импортировать закрытый ключ с помощью команды az keyvault key import в Azure CLI.

В любом случае вам нужно указать имя KEK в параметре az vm encryption enable --key-encryption-key в Azure CLI.

az vm encryption enable -g "MyResourceGroup" --name "myVM" --disk-encryption-keyvault "<your-unique-keyvault-name>" --key-encryption-key "myKEK"

Azure PowerShell

Используйте командлет Add-AzKeyVaultKey в Azure PowerShell, чтобы создать новый KEK и сохранить его в хранилище ключей.

Add-AzKeyVaultKey -Name "myKEK" -VaultName "<your-unique-keyvault-name>" -Destination "HSM" -Size 4096

Вместо этого можно импортировать закрытый ключ с помощью команды az keyvault key import в Azure PowerShell.

В любом случае вы укажете идентификатор хранилища ключей KEK и URL-адрес KEK в параметрах -KeyEncryptionKeyVaultId и -KeyEncryptionKeyUrl команды Set-AzVMDiskEncryptionExtension в Azure PowerShell. В этом примере предполагается, что вы используете одно хранилище ключей как для ключа шифрования диска, так и для KEK.

$KeyVault = Get-AzKeyVault -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup"
$KEK = Get-AzKeyVaultKey -VaultName "<your-unique-keyvault-name>" -Name "myKEK"

Set-AzVMDiskEncryptionExtension -ResourceGroupName MyResourceGroup -VMName "MyVM" -DiskEncryptionKeyVaultUrl $KeyVault.VaultUri -DiskEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyUrl $KEK.Id -SkipVmBackup -VolumeType All

Дальнейшие действия