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

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

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

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для работы с этой статьей требуется Azure CLI версии 2.0.31 или более поздней. Если вы используете 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 extension set.

Внимание

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

Определите уникальное значение keyvault_name. Затем создайте хранилище ключей с помощью команды 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

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

Определите уникальное значение keyvault_name. Затем обновите хранилище ключей с помощью команды 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

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

Примечание.

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

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

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

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

# 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

Примечание.

Синтаксис значения параметра 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 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 ГБ и шифрует масштабируемый набор виртуальных машин.