Поделиться через


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

Это важно

Шифрование дисков Azure будет выведено из эксплуатации 15 сентября 2028 г. До этой даты вы можете продолжать использовать шифрование дисков Azure без нарушений. 15 сентября 2028 г. рабочие нагрузки с поддержкой ADE будут выполняться, но зашифрованные диски не смогут разблокироваться после перезагрузки виртуальной машины, что приведет к нарушению работы службы.

Используйте шифрование на узле для новых виртуальных машин или рассмотрите размеры конфиденциальных виртуальных машин с шифрованием дисков ОС для рабочих нагрузок конфиденциальных вычислений. Все виртуальные машины с поддержкой ADE (включая резервные копии) должны перенестися в шифрование на узле до даты выхода на пенсию, чтобы избежать прерывания работы службы. Дополнительные сведения см. в статье "Миграция из шифрования дисков Azure в шифрование на узле ".

Azure CLI используется для создания ресурсов Azure и управления ими из командной строки или скриптов. В этом кратком руководстве показано, как использовать Azure CLI для создания и шифрования масштабируемого набора виртуальных машин. Дополнительные сведения о применении шифрования дисков Azure к масштабируемой группе виртуальных машин см. в статье "Шифрование дисков Azure для масштабируемых наборов виртуальных машин".

Предпосылки

  • Для этой статьи требуется версия 2.0.31 или более поздняя версия Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

Создать набор для масштабирования

Прежде чем создать масштабируемый набор, создайте группу ресурсов с помощью команды az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Теперь создайте масштабируемый набор виртуальных машин с помощью az vmss create. В следующем примере создается масштабируемый набор с именем myScaleSet , который устанавливается для автоматического обновления по мере применения изменений, и создает ключи SSH, если они не существуют в ~/.ssh/id_rsa. Диск данных размером 32 ГБ подключен к каждому экземпляру виртуальной машины, а расширение пользовательского скрипта Azure используется для подготовки дисков данных с помощью набора расширений az vmss:

Это важно

Обязательно выберите поддерживаемую операционную систему с помощью ADE. Поддерживаемая ОС для ADE.

# Create a scale set with attached data disk
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode Flexible \
  --image <SKU Linux Image> \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 32

# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

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

Создание хранилища ключей Azure, включенного для шифрования дисков

Azure Key Vault может хранить ключи, секреты или пароли, которые позволяют безопасно реализовать их в приложениях и службах. Криптографические ключи хранятся в Azure Key Vault с помощью программной защиты, или вы можете импортировать или создать ключи в аппаратных модулях безопасности (HSM), сертифицированных в стандартах FIPS 140 . Эти криптографические ключи используются для шифрования и расшифровки виртуальных дисков, подключенных к виртуальной машине. Вы сохраняете контроль над этими криптографическими ключами и можете проверять их использование.

Задайте свой уникальный keyvault_name. Затем создайте KeyVault с помощью команды az keyvault create в той же подписке и регионе, что и набор виртуальных машин, и установите политику доступа --enabled-for-disk-encryption для шифрования дисков.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption

Использование существующего хранилища ключей

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

Задайте свой уникальный keyvault_name. Затем обновите Key Vault с az keyvault update и установите политику доступа с параметром --enabled-for-disk-encryption.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption

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

Замечание

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

Чтобы зашифровать экземпляры виртуальных машин в масштабируемом наборе, сначала получите информацию об ID ресурса Key Vault с az keyvault show. Эти переменные используются для запуска процесса шифрования с помощью az vmss encryption enable:

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Для запуска процесса шифрования может потребоваться несколько минут.

Так как политика обновления в масштабируемом наборе, созданном на предыдущем шаге, установлена на автоматическую, экземпляры виртуальных машин автоматически начинают процесс шифрования. В масштабируемых наборах, где политика обновления выполняется вручную, запустите политику шифрования в экземплярах виртуальных машин с az vmss update-instances.

Включите шифрование с использованием KEK для завертывания ключа

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

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --key-encryption-key myKEK \
    --key-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Замечание

Синтаксис для значения параметра ключ шифрования диска - это полная строка идентификатора:
/subscriptions/[subscription-id-guid]/resourceGroups/[имя группы ресурсов]/providers/Microsoft.KeyVault/vaults/[keyvault-name]

. Синтаксис для параметра ключ шифрования ключа - это полный универсальный код ресурса (URI) к KEK (КШК), как в:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Проверка хода выполнения шифрования

Чтобы проверить состояние шифрования дисков, используйте az vmss encryption show:

az vmss encryption show --resource-group myResourceGroup --name myScaleSet

Когда экземпляры виртуальных машин шифруются, код состояния сообщает EncryptionState/encrypted, как показано в следующем примере выходных данных:

[
  {
    "disks": [
      {
        "encryptionSettings": null,
        "name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
        "statuses": [
          {
            "additionalProperties": {},
            "code": "EncryptionState/encrypted",
            "displayStatus": "Encryption is enabled on disk",
            "level": "Info",
            "message": null,
            "time": null
          }
        ]
      }
    ],
    "id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
    "resourceGroup": "MYRESOURCEGROUP"
  }
]

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

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

az vmss encryption disable --resource-group myResourceGroup --name myScaleSet

Дальнейшие шаги

  • В этой статье вы использовали Azure CLI для шифрования масштабируемого набора виртуальных машин. Вы также можете использовать шаблоны Azure PowerShell или Azure Resource Manager.
  • Если вы хотите применить шифрование дисков Azure после установки другого расширения, можно использовать последовательность расширений.
  • Полный пример пакетного файла для шифрования дисков данных масштабируемого набора Linux можно найти здесь. В этом примере создается группа ресурсов, масштабируемый набор виртуальных машин Linux, подключается диск данных размером 5 ГБ и шифруется масштабируемый набор виртуальных машин.