Действие. Шифрование существующих дисков виртуальной машины

Завершено

Предположим, вы разрабатываете приложение для управления финансами для новых бизнес-стартапов. Вы хотите обеспечить защиту всех данных клиентов, поэтому вы решили реализовать Шифрование дисков Azure (ADE) на всех дисках ОС и данных на серверах, где будет размещено это приложение. Согласно вашим требованиям соответствия, вы также отвечаете за управление своими ключами шифрования.

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

Подготовка среды

Начните с развертывания новой виртуальной машины Windows в Виртуальной машине Azure.

Развертывание виртуальной машины Windows

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

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

    $location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
    

    Совет

    Чтобы скопировать команду в буфер обмена, нажмите кнопку Копировать. Для вставки щелкните правой кнопкой мыши новую строку в терминале Cloud Shell и выберите команду Вставить или нажмите клавиши SHIFT+INSERT (⌘+V в macOS).

  2. Затем определите несколько переменных, в которых будут храниться имя виртуальной машины и группа ресурсов. Обратите внимание, что вы используете предварительно созданную группу ресурсов здесь. Как правило, вы создадите новую группу ресурсов в подписке с помощью New-AzResourceGroup.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. Чтобы создать новую виртуальную машину, используйте New-AzVm:

    New-AzVm `
        -ResourceGroupName $rgName `
        -Name $vmName `
        -Location $location `
        -OpenPorts 3389
    

    При появлении запроса Cloud Shell введите имя пользователя и пароль для виртуальной машины. Эти имя пользователя и пароль будут использованы в качестве первоначальной учетной записи, созданной для виртуальной машины.

    Примечание.

    Эта команда будет использовать некоторые значения по умолчанию, так как мы не указали много вариантов. В частности, она создаст образ Windows 2016 Server с размером Standard_DS1_v2. Помните, что виртуальные машины уровня "Базовый" не поддерживают ADE, если вы решите указать размер виртуальной машины.

  4. После завершения развертывания виртуальной машины запишите сведения о виртуальной машине в переменную. Эту переменную можно использовать для изучения созданных вами возможностей.

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. Приведенный ниже код можно использовать для подтверждения подключения диска ОС к виртуальной машине:

    $vm.StorageProfile.OSDisk
    
    OsType                  : Windows
    EncryptionSettings      :
    Name                    : fmdata-vm01_OsDisk_1_6bcf8dcd49794aa785bad45221ec4433
    Vhd                     :
    Image                   :
    Caching                 : ReadWrite
    WriteAcceleratorEnabled :
    CreateOption            : FromImage
    DiskSizeGB              : 127
    ManagedDisk             : Microsoft.Azure.Management.Compute.Models.ManagedDiskP
                              arameters
    
  6. Проверьте текущее состояние шифрования диска операционной системы (и всех дисков данных).

    Get-AzVmDiskEncryptionStatus  `
        -ResourceGroupName $rgName `
        -VMName $vmName
    

    Вы заметите, что диски в настоящее время незашифрованы.

    OsVolumeEncrypted          : NotEncrypted
    DataVolumesEncrypted       : NotEncrypted
    OsVolumeEncryptionSettings :
    ProgressMessage            : No Encryption extension or metadata found on the VM
    

Давайте изменим это.

Шифрование дисков виртуальной машины с помощью шифрования дисков Azure

Нам нужно защитить эти данные, поэтому давайте зашифруем диски. Помните, что есть несколько действий, которые нужно выполнить:

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

  2. Включение поддержки шифрования диска для хранилища ключей.

  3. Настройте шифрование дисков виртуальных машин с помощью ключей из хранилища ключей в Azure.

Совет

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

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

Чтобы создать Azure Key Vault, необходимо включить службу в нашей подписке. Эту операцию достаточно выполнить один раз.

Совет

В зависимости от подписки может потребоваться включить поставщика Microsoft.KeyVault с помощью командлета Register-AzResourceProvider. Это необязательно в подписке песочницы Azure.

  1. Выберите имя нового хранилища ключей. Имя должно быть уникальным и состоять из цифр, букв и дефисов. Допустимая длина имени — от 3 до 24 символов. Попробуйте добавить в конец несколько случайных чисел, заменив следующие 1234:

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. Создайте хранилище ключей Azure Key Vault, выполнив команду New-AzKeyVault:

    • Убедитесь, что он размещен в той же группе ресурсов и расположении, что и виртуальная машина.
    • Включение хранилища ключей для использования с шифрованием дисков
    • Указание уникального имени хранилища ключей
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    Вы получите предупреждение о том, что пользователи не могут получить доступ.

    WARNING: Access policy is not set. No user or app have access permission to use this vault. This can happen if the vault was created by a service principal. To set access policies, use Set-AzKeyVaultAccessPolicy.
    

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

Шифрование диска

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

Важно!

Если это была рабочая система, вам потребуется выполнить резервную копию управляемых дисков, используя Azure Backup или создав моментальный снимок. Моментальные снимки можно создавать в портал Azure или с помощью командной строки. В PowerShell вы будете New-AzSnapshot использовать командлет. Так как это простое упражнение, и вы будете удалять эти данные после завершения, вы пропустите этот шаг.

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

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. Затем, чтобы зашифровать диски виртуальных машин, запустите Set-AzVmDiskEncryptionExtension командлет"

    • Параметр VolumeType позволяет указать, какие диски будут зашифрованы: [Все | ОС | Данных]. По умолчанию используется значение All. Можно шифровать только диски данных для некоторых дистрибутивов Linux.
    • Флаг для управляемых дисков можно указать SkipVmBackup , если моментальный снимок отсутствует.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. Командлет предупредит, что виртуальную машину необходимо перевести в автономный режим и на выполнение задачи может потребоваться несколько минут. Идти вперед и позвольте ему продолжить:

    Enable AzureDiskEncryption on the VM
    This cmdlet prepares the VM and enables encryption which may reboot the machine and takes 10-15 minutes to
    finish. Please save your work on the VM before confirming. Do you want to continue?
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
    
  4. После завершения выполнения командлета снова проверка состояние шифрования:

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

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

    OsVolumeEncrypted          : Encrypted
    DataVolumesEncrypted       : NoDiskFound
    OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
    ProgressMessage            : Provisioning succeeded
    

Примечание.

Новые диски, добавленные после шифрования , не будут автоматически зашифрованы. Вы можете повторно запустить Set-AzVMDiskEncryptionExtension командлет, чтобы зашифровать новые диски. Если вы добавите диски к виртуальной машине, которая уже была зашифрована, обязательно укажите новое число в последовательности. Кроме того, диски, которые не видны операционной системе, не будут зашифрованы. Диск должен быть правильно секционирован, отформатирован и подключен для расширения BitLocker, чтобы увидеть его.