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

Завершено

Предположим, вы разрабатываете приложение для управления финансами для новых бизнес-стартапов. Вы хотите убедиться, что все данные клиентов защищены. Поэтому вы решили реализовать Шифрование дисков 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 с заданным размером 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 warning can occur 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, чтобы увидеть его.