Azure Disk Encryption scenarios on Linux VMs (Сценарии шифрования дисков Azure для виртуальных машин Linux)

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

Шифрование дисков Azure для виртуальных машин Linux использует функцию DM-Crypt Linux для обеспечения полного шифрования диска операционной системы и дисков данных. Кроме того, он обеспечивает шифрование временного диска при использовании функции EncryptFormatAll.

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

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

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

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

Ограничения

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

При шифровании томов Linux ОС виртуальная машина должна считаться недоступной. Настоятельно рекомендуется избегать входа по протоколу SSH во время шифрования, чтобы избежать проблем с блокированием открытых файлов, к которым необходимо получить доступ во время процесса шифрования. Чтобы проверить ход выполнения, используйте командлет PowerShell Get-AzVMDiskEncryptionStatus или команду CLI vm encryption show. Этот процесс может занять несколько часов для тома операционной системы 30 ГБ, а также дополнительное время для шифрования томов данных. Если не используется параметр шифрования всех форматов, время шифрования тома данных будет соответствовать размеру и количеству томов данных.

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

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

  • Шифрование виртуальных машин базового уровня или виртуальных машин, созданных с помощью классического метода создания виртуальной машины.
  • Отключение шифрования диска операционной системы или диска данных виртуальной машины Linux, когда диск ОС зашифрован.
  • Шифрование диска ОС для Масштабируемые наборы виртуальных машин Linux.
  • Шифрование пользовательских образов на виртуальных машинах Linux.
  • Интеграция с локальной системой управления ключами.
  • служба файлов Azure (общая файловая система);
  • сетевая файловая система (NFS);
  • динамические тома;
  • Временные диски ОС.
  • Шифрование общих и распределенных файловых систем, таких как (но не ограничено): DFS, GFS, DRDB и CephFS.
  • Перемещение зашифрованной виртуальной машины в другую подписку или регион.
  • Создание образа или моментального снимка зашифрованной виртуальной машины и его использование для развертывания дополнительных виртуальных машин.
  • Аварийный дамп памяти ядра (kdump).
  • Oracle ACFS (файловая система кластера ASM).
  • Диски NVMe, такие как те, что используются в виртуальных машинах для высокопроизводительных вычислений или оптимизированных для хранилища виртуальных машинах.
  • Виртуальная машина с "вложенными точками подключения"; то есть несколько точек подключения находятся по одному пути (например, "/1stmountpoint/Data/2stmountpoint").
  • Виртуальная машина с диском данных, подключенным поверх папки ОС.
  • Виртуальная машина, на которой был расширен логический том корня (диска ОС) с использованием диска данных.
  • Виртуальные машины серии M с дисками ускорителя записи.
  • Применение ADE к виртуальной машине с дисками, зашифрованными с помощью шифрования на узле или на стороне сервера с помощью ключей, управляемых клиентом (SSE + CMK). Применение SSE + CMK к диску данных или добавление диска данных с помощью SSE + CMK, настроенного на виртуальную машину, зашифрованную с помощью ADE, также является неподдерживаемым сценарием.
  • Перенос виртуальной машины, зашифрованной с помощью ADE или когда-либо зашифрованной с помощью ADE, в шифрование на узле или на стороне сервера с помощью ключей, управляемых клиентом.
  • Шифрование виртуальных машин в отказоустойчивых кластерах.
  • Шифрование дисков Azure Ultra.
  • Шифрование дисков SSD уровня "Премиум" версии 2.
  • Шифрование виртуальных машин в подписках с секретами должно иметь указанную политику максимального срока действия, включенную с эффектом DENY.

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

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

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.

Включите шифрование на существующей или запущенной виртуальной машине Linux

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

Важно!

Нужно обязательно создать образ или резервную копию экземпляра виртуальной машины на основе управляемого диска вне шифрования дисков Azure и перед включением этой функции. Моментальный снимок управляемого диска можно создать с портала или использовать для этого Azure Backup. Резервные копии обеспечивают возможность восстановления при любом непредвиденном сбое во время шифрования. После создания резервной копии можно зашифровать управляемые диски с помощью командлета Set-AzVMDiskEncryptionExtension, указав параметр -skipVmBackup. Команда Set-AzVMDiskEncryptionExtension будет завершаться ошибкой при использовании с виртуальными машинами на основе управляемых дисков, пока не будет сделана резервная копия и не будет указан определенный параметр.

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

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

Можно включить шифрование дисков для зашифрованного виртуального жесткого диска, установив программу командной строки Azure CLI. Его можно использовать в браузере с Azure Cloud Shell, а также установить на локальном компьютере и использовать в любом сеансе PowerShell. Чтобы включить шифрование на виртуальных машинах под управлением Linux, которые уже существуют или работают в Azure, используйте следующие команды CLI.

Используйте команду az vm encryption enable, чтобы включить шифрование на работающей виртуальной машине в 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]

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

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

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

Использование функции EncryptFormatAll для дисков данных на виртуальных машинах под управлением Linux

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

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

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

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

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

Критерии EncryptFormatAll

Параметр проходит по всем секциям и шифрует их до тех пор, пока они соответствуют всем приведенным ниже критериям:

  • это не корневой или загрузочный раздел, а также не раздел операционной системы;
  • этот раздел еще не зашифрован;
  • это не том BEK;
  • это не том RAID;
  • это не том LVM;
  • он подключен.

Выполняйте шифрование дисков, которые составляют том RAID или LVM, а не самого тома RAID или LVM.

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

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

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "data" --encrypt-format-all
    

Использование параметра EncryptFormatAll с диспетчером логических томов (LVM)

Рекомендуем установить LVM-on-crypt. Подробные инструкции по настройке шифрования LVM см. в разделе Настройка LVM и RAID на зашифрованных устройствах ADE.

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

В этом сценарии шифрование можно включить с помощью командлетов PowerShell или команд интерфейса командной строки.

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

Важно!

Нужно обязательно создать образ или резервную копию экземпляра виртуальной машины на основе управляемого диска вне шифрования дисков Azure и перед включением этой функции. Моментальный снимок управляемого диска можно создать с портала или использовать для этого Azure Backup. Резервные копии обеспечивают возможность восстановления при любом непредвиденном сбое во время шифрования. После создания резервной копии можно зашифровать управляемые диски с помощью командлета Set-AzVMDiskEncryptionExtension, указав параметр -skipVmBackup. Команда Set-AzVMDiskEncryptionExtension будет завершаться ошибкой при использовании с виртуальными машинами на основе управляемых дисков, пока не будет сделана резервная копия и не будет указан определенный параметр.

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

Использование 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 -Linux -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName "MyVirtualMachineResourceGroup"

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

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

Если виртуальная машина ранее была зашифрована со значением All, то в дальнейшем значение параметра volume-type должно оставаться All. Значение "All" включает как диски ОС, так и диски данных. Если виртуальная машина была зашифрована с типом тома OS, в дальнейшем параметр --volume-type следует заменить на All, чтобы были включены диск ОС и новый диск данных. Если виртуальная машина была зашифрована с типом тома "Data", то в дальнейшем он может оставаться со значением "Data", как это показано ниже. Добавления и присоединения нового диска данных к виртуальной машине недостаточно для подготовки к шифрованию. Вновь подключенный диск также должен быть отформатирован и правильно подключен к виртуальной машине перед включением шифрования. В Linux диск монтируется в /etc/fstab с постоянным именем блочного устройства.

В отличие от синтаксиса Powershell, интерфейс командной строки (CLI) не требует предоставления уникальной версии последовательности при включении шифрования. CLI автоматически создает и использует свое собственное уникальное значение версии последовательности.

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

    az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --disk-encryption-keyvault "MySecureVault" --volume-type "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 "Data"
    

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

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

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

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

Шифрование нельзя отключить, если зашифрован диск ОС. (Диски ОС шифруются, если исходная операция шифрования задала значение volumeType=ALL или volumeType=OS.)

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

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

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

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

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

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

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

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

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

Расширение шифрования можно удалить с помощью 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 "AzureDiskEncryptionForLinux"
    

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