Действие. Шифрование существующих дисков виртуальной машины
Предположим, вы разрабатываете приложение для управления финансами для новых бизнес-стартапов. Вы хотите убедиться, что все данные клиентов защищены. Поэтому вы решили реализовать Шифрование дисков Azure (ADE) на всех дисках ОС и данных на серверах, на которых размещается это приложение. Согласно вашим требованиям соответствия, вы также отвечаете за управление своими ключами шифрования.
В этом уроке вы шифруете диски на существующей виртуальной машине и управляете ключами шифрования с помощью azure Key Vault.
Подготовка среды
Начните с развертывания новой виртуальной машины Windows на виртуальной машине Azure.
Развертывание виртуальной машины Windows
Чтобы создать и развернуть новую виртуальную машину Windows, используйте окно Azure PowerShell справа.
Определите переменную PowerShell, в которой будет храниться выбранное расположение. Используйте тот же регион, что и группа ресурсов.
$location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
Совет
Чтобы скопировать команду в буфер обмена, нажмите кнопку Копировать. Для вставки щелкните правой кнопкой мыши новую строку в терминале Cloud Shell и выберите команду Вставить или нажмите клавиши SHIFT+INSERT (⌘+V в macOS).
Затем определите несколько переменных, в которых будут храниться имя виртуальной машины и группа ресурсов. Вы используете предварительно созданную группу ресурсов. Как правило, вы создадите новую группу
New-AzResourceGroup
$vmName = "fmdata-vm01" $rgName = "<rgn>[sandbox Resource Group]</rgn>"
Чтобы создать новую виртуальную машину, используйте
New-AzVm
:New-AzVm ` -ResourceGroupName $rgName ` -Name $vmName ` -Location $location ` -OpenPorts 3389
При появлении запроса Cloud Shell введите имя пользователя и пароль для виртуальной машины. Эти сведения используются в качестве начальной учетной записи, созданной для виртуальной машины.
Примечание.
Эта команда будет использовать некоторые значения по умолчанию, так как мы не указали много вариантов. В частности, он создает образ Сервера Windows 2016 с заданным размером Standard_DS1_v2. Помните, что виртуальные машины уровня "Базовый" не поддерживают ADE, если вы решите указать размер виртуальной машины.
После завершения развертывания виртуальной машины запишите сведения о виртуальной машине в переменную. Эту переменную можно использовать для изучения созданных вами возможностей.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
Для подтверждения диска ОС, подключенного к виртуальной машине, можно использовать следующий код:
$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
Проверьте текущее состояние шифрования диска операционной системы (и всех дисков данных).
Get-AzVmDiskEncryptionStatus ` -ResourceGroupName $rgName ` -VMName $vmName
Обратите внимание, что диски в настоящее время незашифрованы.
OsVolumeEncrypted : NotEncrypted DataVolumesEncrypted : NotEncrypted OsVolumeEncryptionSettings : ProgressMessage : No Encryption extension or metadata found on the VM
Давайте изменим это.
Шифрование дисков виртуальной машины с помощью шифрования дисков Azure
Нам нужно защитить эти данные, поэтому давайте зашифруем диски. Помните, что есть несколько действий, которые нужно выполнить:
Создайте хранилище ключей.
Включение поддержки шифрования диска для хранилища ключей.
Настройте шифрование дисков виртуальных машин с помощью ключей из хранилища ключей в Azure.
Совет
Мы рассмотрим шаги по отдельности, но при выполнении этой задачи в собственной подписке можно использовать удобный сценарий PowerShell, который мы связали в разделе сводки этого модуля.
Создание хранилища ключей
Чтобы создать Azure Key Vault, необходимо включить службу в нашей подписке. Вам нужно включить службу только один раз.
Совет
В зависимости от подписки может потребоваться включить поставщика Microsoft.KeyVault с помощью командлета Register-AzResourceProvider
. Это необязательно в подписке песочницы Azure.
Выберите имя нового хранилища ключей. Имя должно быть уникальным и состоять из цифр, букв и дефисов. Допустимая длина имени — от 3 до 24 символов. Попробуйте добавить в конец несколько случайных чисел, заменив следующие 1234:
$keyVaultName = "mvmdsk-kv-1234"
Создайте хранилище ключей 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
командлет. Так как это простое упражнение, и вы удаляете эти данные при завершении, вы пропустите этот шаг.
Чтобы сохранить сведения о хранилище ключей, определите переменную:
$keyVault = Get-AzKeyVault ` -VaultName $keyVaultName ` -ResourceGroupName $rgName
Затем, чтобы зашифровать диски виртуальных машин, запустите
Set-AzVmDiskEncryptionExtension
командлет"- Параметр
VolumeType
позволяет указать, какие диски будут зашифрованы: [Все | ОС | Данных]. По умолчанию используется значение All. Можно шифровать только диски данных для некоторых дистрибутивов Linux. - Флаг для управляемых дисков можно указать
SkipVmBackup
, если моментальный снимок отсутствует.
Set-AzVmDiskEncryptionExtension ` -ResourceGroupName $rgName ` -VMName $vmName ` -VolumeType All ` -DiskEncryptionKeyVaultId $keyVault.ResourceId ` -DiskEncryptionKeyVaultUrl $keyVault.VaultUri ` -SkipVmBackup
- Параметр
Командлет предупреждает, что виртуальная машина должна быть отключена и что задача может занять несколько минут. Идти вперед и позвольте ему продолжить:
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
После завершения выполнения командлета снова проверьте состояние шифрования:
Get-AzVmDiskEncryptionStatus -ResourceGroupName $rgName -VMName $vmName
Теперь диск ОС должен быть зашифрован. Все подключенные диски данных, видимые в Windows, также шифруются.
OsVolumeEncrypted : Encrypted DataVolumesEncrypted : NoDiskFound OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings ProgressMessage : Provisioning succeeded
Примечание.
Новые диски, добавленные после шифрования , не будут автоматически зашифрованы. Вы можете повторно запустить Set-AzVMDiskEncryptionExtension
командлет, чтобы зашифровать новые диски. Если вы добавите диски к виртуальной машине, которая уже была зашифрована, обязательно укажите новое число в последовательности. Кроме того, диски, которые не видны операционной системе, не будут зашифрованы. Диск должен быть правильно секционирован, отформатирован и подключен для расширения BitLocker, чтобы увидеть его.