Сценарии шифрования дисков Azure для виртуальных машин Windows

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

Служба Шифрования дисков Azure для виртуальных машин Windows использует компонент BitLocker Windows для полного шифрования диска операционной системы и дисков данных. Кроме того, если параметр VolumeType (Тип тома) имеет значение All (Все), временные диски также шифруются.

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

Необходимые компоненты

Шифрование дисков можно применить только к виртуальным машинам поддерживаемых размеров и операционных систем. Также необходимы следующие элементы:

Ограничения

Если вы уже использовали шифрование дисков Azure c Microsoft Entra ID для шифрования виртуальной машины, продолжайте и далее пользоваться этим способом шифрования виртуальной машины. См. детали в разделе Шифрование дисков Azure с использованием приложения Microsoft Entra ID (предыдущий выпуск).

Перед шифрованием дисков необходимо сделать моментальный снимок и (или) создать резервную копию. Резервные копии обеспечивают возможность восстановления в случае любого непредвиденного сбоя во время шифрования. Для виртуальных машин с управляемыми дисками необходимо создать резервную копию до начала шифрования. После создания резервной копии можно зашифровать управляемые диски с помощью командлета Set-AzVMDiskEncryptionExtension с параметром -skipVmBackup. Дополнительные сведения о резервном копировании и восстановлении зашифрованных виртуальных машин см. в статье Резервное копирование и восстановление зашифрованной виртуальной машины Azure.

Шифрование или отключение шифрования может привести к перезагрузке виртуальной машины.

Шифрование дисков Azure не работает в следующих сценариях, компонентах и технологиях:

  • Шифрование виртуальных машин базового уровня или виртуальных машин, созданных с помощью классического метода создания виртуальной машины.
  • Шифрование виртуальных машин, настроенных с помощью программных систем RAID.
  • Шифрование виртуальных машин, настроенных с помощью локального дискового пространства (S2D), или версий Windows Server до 2016, настроенных с помощью дисковых пространств Windows.
  • Интеграция с локальной системой управления ключами.
  • служба файлов Azure (общая файловая система);
  • сетевая файловая система (NFS);
  • динамические тома;
  • Контейнеры Windows Server, которые создают динамические тома для каждого контейнера.
  • Временные диски ОС.
  • Диски iSCSI.
  • Шифрование общих и распределенных файловых систем, таких как (но не ограничиваясь ими): DFS, GFS, DRDB и CephFS.
  • Перемещение зашифрованной виртуальной машины в другую подписку или регион.
  • Создание образа или моментального снимка зашифрованной виртуальной машины и его использование для развертывания дополнительных виртуальных машин.
  • Виртуальные машины серии M с дисками ускорителя записи.
  • Применение ADE к виртуальной машине с дисками, зашифрованными с помощью шифрования на узле или на стороне сервера с помощью ключей, управляемых клиентом (SSE + CMK). Применение SSE + CMK к диску данных или добавление диска данных с помощью SSE + CMK, настроенного на виртуальную машину, зашифрованную с помощью ADE, также является неподдерживаемым сценарием.
  • Перенос виртуальной машины, зашифрованной с помощью ADE или когда-либо зашифрованной с помощью ADE, в шифрование на узле или на стороне сервера с помощью ключей, управляемых клиентом.
  • Шифрование виртуальных машин в отказоустойчивых кластерах.
  • Шифрование дисков Azure Ultra.
  • Шифрование дисков SSD уровня "Премиум" версии 2.
  • Шифрование виртуальных машин в подписках, в которых Secrets should have the specified maximum validity period включена политика с эффектом DENY.
  • Шифрование виртуальных машин в подписках с включенной политикой Key Vault secrets should have an expiration date с помощью эффекта DENY

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

Шифрованием дисков Azure можно управлять с помощью Azure CLI и Azure PowerShell. Для этого необходимо установить средства локально и подключиться к подписке Azure.

Azure CLI

Azure CLI 2.0 — это интерфейс командной строки для управления ресурсами Azure. Этот интерфейс обеспечивает гибкие функции подачи запросов, выполнение длительных операций без блокировки и простое создание скриптов. Его можно установить локально, выполнив действия, описанные в Установке Azure CLI.

Для входа в подписку Azure в Azure CLI используйте команду az login.

az login

Если вы хотите использовать для входа определенный клиент, выполните команду:

az login --tenant <tenant>

Если у вас есть несколько подписок и нужно указать конкретную, получите список подписок с помощью команды az account list и задайте требуемую, используя команду az account set.

az account list
az account set --subscription "<subscription name or ID>"

Дополнительные сведения можно найти в документации по началу работы с Azure CLI 2.0.

Azure PowerShell

В Azure PowerShell az module доступен набор командлетов, которые используют модель Azure Resource Manager для управления ресурсами Azure. Его можно использовать в браузере с Azure Cloud Shell, а также установить на локальном компьютере, следуя инструкциям в статье Установка модуля Azure PowerShell.

Если вы уже установили его локально, убедитесь, что вы используете последнюю версию версии пакета SDK для Azure PowerShell для настройки шифрования дисков Azure. Скачайте последнюю версию Azure PowerShell.

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

Connect-AzAccount

Если у вас есть несколько подписок и вы хотите указать одну из них, используйте командлет Get-AzSubscription для их перечисления, а затем выполните командлет Set-AzContext:

Set-AzContext -Subscription <SubscriptionId>

При выполнении командлета Get-AzContext будет проверена правильность выбранной подписки.

Чтобы убедиться, что командлеты шифрования дисков Azure установлены, используйте командлет Get-command:

Get-command *diskencryption*

Дополнительные сведения см. в разделе Приступая к работе с командлетами Azure PowerShell.

Включение шифрования на существующей или работающей виртуальной машине Windows

В этом сценарии шифрование можно включить с помощью шаблона Resource Manager, командлетов PowerShell или команд интерфейса командной строки. Сведения о схеме для расширения виртуальной машины см. в статье Шифрование дисков Azure для Windows .

Включение шифрования на существующих или работающих виртуальных машинах с помощью Azure PowerShell

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

  • Зашифруйте запущенную виртуальную машину: приведенный ниже скрипт инициализирует переменные и запускает командлет Set-AzVMDiskEncryptionExtension. Группа ресурсов, виртуальная машина и хранилище ключей должны быть уже созданы в качестве необходимых компонентов. Замените MyKeyVaultResourceGroup, MyVirtualMachineResourceGroup, MySecureVM и MySecureVault своими значениями.

     $KVRGname = 'MyKeyVaultResourceGroup';
     $VMRGName = 'MyVirtualMachineResourceGroup';
     $vmName = 'MySecureVM';
     $KeyVaultName = 'MySecureVault';
     $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
     $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
     $KeyVaultResourceId = $KeyVault.ResourceId;
    
     Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId;
    
  • Шифрование работающей виртуальной машины с использованием KEK:

    $KVRGname = 'MyKeyVaultResourceGroup';
    $VMRGName = 'MyVirtualMachineResourceGroup';
    $vmName = 'MyExtraSecureVM';
    $KeyVaultName = 'MySecureVault';
    $keyEncryptionKeyName = 'MyKeyEncryptionKey';
    $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
    $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
    $KeyVaultResourceId = $KeyVault.ResourceId;
    $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
    
    Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;
    
    

    Примечание.

    Синтаксис значения параметра disk-encryption-keyvault является строкой полного идентификатора: /subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
    Синтаксис значения параметра key-encryption-key — это полный URI к KEK, как в следующем примере: https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

  • Проверка того, зашифрованы ли диски. Чтобы проверить состояние шифрования виртуальной машины IaaS, используйте командлет Get-AzVmDiskEncryptionStatus.

    Get-AzVmDiskEncryptionStatus -ResourceGroupName 'MyVirtualMachineResourceGroup' -VMName 'MySecureVM'
    

Сведения об отключении шифрования см. в разделе Отключение шифрования и удаление расширения шифрования.

Включение шифрования на существующих или работающих виртуальных машинах с помощью Azure CLI

Используйте команду az vm encryption enable, чтобы включить шифрование на работающей виртуальной машине IaaS в Azure.

  • Шифрование работающей виртуальной машины:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type [All|OS|Data]
    
  • Шифрование работающей виртуальной машины с использованием KEK:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault  "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type [All|OS|Data]
    

    Примечание.

    Синтаксис значения параметра disk-encryption-keyvault является строкой полного идентификатора: /subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
    Синтаксис значения параметра key-encryption-key — это полный URI к KEK, как в следующем примере: https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

  • Проверка того, что диски зашифрованы. Чтобы проверить состояние шифрования виртуальной машины IaaS, используйте команду az vm encryption show.

    az vm encryption show --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup"
    

Сведения об отключении шифрования см. в разделе Отключение шифрования и удаление расширения шифрования.

Использование шаблона Resource Manager

Включить шифрование дисков на существующих или работающих виртуальных машинах IaaS под управлением Windows в Azure можно с помощью этого шаблона Resource Manager.

  1. На странице шаблона быстрого запуска Azure нажмите кнопку Deploy to Azure (Развернуть в Azure).

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

В следующей таблице перечислены параметры шаблона Resource Manager для имеющихся или работающих виртуальных машин.

Параметр Описание
vmName Имя виртуальной машины для выполнения операции шифрования.
keyVaultName Имя хранилища ключей, в которое будет передан ключ BitLocker. Его можно получить с помощью командлета (Get-AzKeyVault -ResourceGroupName <MyKeyVaultResourceGroupName>). Vaultname или команды Azure CLI az keyvault list --resource-group "MyKeyVaultResourceGroup".
keyVaultResourceGroup Имя группы ресурсов, содержащей хранилище ключей.
keyEncryptionKeyURL URL-адрес шифрования ключа в формате https://< keyvault-name>.vault.azure.net/key/<key-name>. Если использовать KEK не требуется, оставьте это поле пустым.
volumeType Тип тома, для которого будет выполняться шифрование. Допустимые значения: OS, Data и All.
forceUpdateTag Передает уникальное значение, такое как GUID, каждый раз, когда операция должна выполняться принудительно.
resizeOSDisk Если размер раздела ОС будет изменен и займет весь виртуальный жесткий диск ОС до разделения системного тома.
Расположение Расположение для всех ресурсов.

Включение шифрования на дисках NVMe для виртуальных машин Lsv2

В этом сценарии описывается включение шифрования дисков Azure на дисках NVMe для виртуальных машин серии Lsv2. Серия Lsv2 включает в себя локальное хранилище NVMe. Локальные диски NVMe являются временными, и если виртуальная машина будет остановлена или отменена, все данные, которые на них находятся, будут потеряны (см.: Lsv2-серия).

Чтобы включить шифрование на дисках NVMe, выполните следующие действия:

  1. Инициализируйте диски NVMe и создайте тома NTFS.
  2. Включите шифрование на виртуальной машине, указав для параметра VolumeType значение ALL (Все). Это позволит включить шифрование для всех дисков ОС и данных, включая тома, которые поддерживаются дисками NVMe. Дополнительные сведения см. в разделе Включение шифрования на существующей или работающей виртуальной машине Windows.

Шифрование будет сохранено на дисках NVMe в следующих сценариях:

  • Перезагрузка виртуальной машины
  • Пересоздание образа на Масштабируемом наборе виртуальных машин
  • Смена OS

Диски NVMe будут деинициализированы в следующих сценариях:

  • Запуск виртуальной машины после освобождения
  • Восстановление службы
  • Резервное копирование

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

Помимо сценариев, перечисленных в разделе "Ограничения" , шифрование дисков NVMe не поддерживается для:

Новые виртуальные машины IaaS, при создании которых используются зашифрованные виртуальные жесткие диски и ключи шифрования

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

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

Шифрование виртуальных машин с предварительно зашифрованными виртуальными жесткими дисками с помощью Azure PowerShell

Можно включить шифрование дисков для зашифрованного виртуального жесткого диска с помощью командлета PowerShell Set-AzVMOSDisk. Приведенный ниже пример имеет некоторые общие параметры.

$VirtualMachine = New-AzVMConfig -VMName "MySecureVM" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "SecureOSDisk" -VhdUri "os.vhd" Caching ReadWrite -Windows -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myKVresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName "MyVirtualMachineResourceGroup"

Включение шифрования на добавленном диске данных

Добавить новый диск на виртуальную машину Windows можно с помощью PowerShell или портала Azure.

Примечание.

Только что добавленное шифрование дисков данных должно быть включено с помощью PowerShell или CLI. В настоящее время портал Azure не поддерживает шифрование на новых дисках.

Включение шифрования на добавленном диске данных с помощью Azure PowerShell

При использовании Powershell для шифрования нового диска на виртуальных машинах Windows необходимо указать новую версию последовательности. Версия последовательности должна быть уникальной. Приведенный ниже сценарий создает GUID для версии последовательности. В некоторых случаях новый добавленный диск данных может быть зашифрован автоматически с помощью расширения шифрования дисков Azure. Автоматическое шифрование обычно происходит, когда виртуальная машина перезапускается после включения нового диска. Обычно это происходит, так как для типа тома указано значение "Все", если ранее на виртуальной машине использовалось шифрование дисков. Если выполняется шифрование на новом диске данных, рекомендуется снова выполнить командлет Set-AzVmDiskEncryptionExtension с новой версией последовательности. Если для нового диска данных включено автоматическое шифрование и вы хотите отказаться от шифрования, сначала расшифруйте все диски, а затем повторите шифрование с новой версией последовательности, указав соответствующую операционную систему для типа тома.

  • Зашифруйте запущенную виртуальную машину: приведенный ниже скрипт инициализирует переменные и запускает командлет Set-AzVMDiskEncryptionExtension. Группа ресурсов, виртуальная машина и хранилище ключей должны быть уже созданы в качестве необходимых компонентов. Замените MyKeyVaultResourceGroup, MyVirtualMachineResourceGroup, MySecureVM и MySecureVault своими значениями. В этом примере в качестве значения параметра VolumeType используется значение "All", что включает тома операционной системы и тома данных. Если требуется шифрование только томов операционной системы, используйте "OS" в качестве значения параметра VolumeType.

     $KVRGname = 'MyKeyVaultResourceGroup';
     $VMRGName = 'MyVirtualMachineResourceGroup';
     $vmName = 'MySecureVM';
     $KeyVaultName = 'MySecureVault';
     $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
     $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
     $KeyVaultResourceId = $KeyVault.ResourceId;
     $sequenceVersion = [Guid]::NewGuid();
    
     Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -VolumeType "All" –SequenceVersion $sequenceVersion;
    
  • Шифрование работающей виртуальной машины с использованием KEK. В этом примере в качестве значения параметра VolumeType используется значение "All", что включает тома операционной системы и тома данных. Если требуется шифрование только томов операционной системы, используйте "OS" в качестве значения параметра VolumeType.

    $KVRGname = 'MyKeyVaultResourceGroup';
    $VMRGName = 'MyVirtualMachineResourceGroup';
    $vmName = 'MyExtraSecureVM';
    $KeyVaultName = 'MySecureVault';
    $keyEncryptionKeyName = 'MyKeyEncryptionKey';
    $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
    $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
    $KeyVaultResourceId = $KeyVault.ResourceId;
    $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
    $sequenceVersion = [Guid]::NewGuid();
    
    Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGname -VMName $vmName -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId -VolumeType "All" –SequenceVersion $sequenceVersion;
    
    

    Примечание.

    Синтаксис значения параметра disk-encryption-keyvault является строкой полного идентификатора: /subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]
    Синтаксис значения параметра key-encryption-key — это полный URI к KEK, как в следующем примере: https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

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

Команда Azure CLI автоматически предоставит вам новую версию последовательности, когда вы запустите команду для включения шифрования. В этом примере используется "All" для параметра volume-type. Может потребоваться изменить значение параметра volume-type на"OS", если необходимо выполнить шифрование только диска операционной системы. В отличие от синтаксиса Powershell, интерфейс командной строки (CLI) не требует предоставления уникальной версии последовательности при включении шифрования. CLI автоматически создает и использует свое собственное уникальное значение версии последовательности.

  • Шифрование работающей виртуальной машины:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "All"
    
  • Шифрование работающей виртуальной машины с использованием KEK:

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault  "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type "All"
    

Отключение шифрования и удаление расширения шифрования

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

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

Отключение шифрования

Вы можете отключить шифрование с помощью Azure PowerShell, Azure CLI или шаблона Resource Manager. Отключение шифрования не приводит к удалению расширения (см. раздел Удаление расширения шифрования).

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

Отключение шифрования диска данных, когда диск ОС и диск данных зашифрованы, может привести к непредвиденным результатам. В этом случае отключите шифрование на всех дисках.

Отключение шифрования приведет к запуску фонового процесса BitLocker для расшифровки дисков. Этому процессу следует предоставить достаточно времени для завершения, прежде чем пытаться повторно включить шифрование.

  • Отключите шифрование дисков с помощью Azure PowerShell. Чтобы отключить шифрование, используйте командлет Disable-AzVMDiskEncryption .

    Disable-AzVMDiskEncryption -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM" -VolumeType "all"
    
  • Отключение шифрования с помощью Azure CLI. Для отключения шифрования используйте команду az vm encryption disable.

    az vm encryption disable --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup" --volume-type "all"
    
  • Отключение шифрования с помощью шаблона Resource Manager:

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

Удаление расширения шифрования

Если вы хотите расшифровать диски и удалить расширение шифрования, необходимо отключить шифрование перед удалением расширения. См. раздел Отключение шифрования.

Расширение шифрования можно удалить с помощью Azure PowerShell или Azure CLI.

  • Отключение шифрования дисков с помощью Azure PowerShell. Для удаления шифрования используйте командлет Remove-AzVMDiskEncryptionExtension.

    Remove-AzVMDiskEncryptionExtension -ResourceGroupName "MyVirtualMachineResourceGroup" -VMName "MySecureVM"
    
  • Отключение шифрования с помощью Azure CLI. Для удаления шифрования используйте команду az vm extension delete.

    az vm extension delete -g "MyVirtualMachineResourceGroup" --vm-name "MySecureVM" -n "AzureDiskEncryption"
    

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