Создание пользовательского образа для конфиденциальных виртуальных машин Azure

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

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

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

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

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Запуск Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.

Чтобы открыть Cloud Shell, просто выберите Попробовать в правом верхнем углу блока кода. Кроме того, Cloud Shell можно открыть в отдельной вкладке браузера. Для этого перейдите на страницу https://shell.azure.com/bash. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить его.

Если вы решили установить и использовать CLI локально, для выполнения инструкций из этого руководства вам потребуется Azure CLI 2.0.30 или более поздней версии. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Создание или изменение группы ресурсов

Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.

Примечание.

Конфиденциальные виртуальные машины доступны не во всех расположениях. Сведения о поддерживаемых расположениях см. в разделе Доступность продуктов Azure по регионам.

az group create --name $resourceGroupName --location eastus

Создание пользовательского образа для конфиденциальных виртуальных машин Azure

  1. Создайте виртуальную машину с помощью образа Ubuntu из списка поддержка Azure образов.

  2. Убедитесь, что версия ядра не менее 5.15.0-1037-azure. После подключения к виртуальной машине можно использовать uname -r, чтобы проверка версию ядра. Здесь можно добавить любые изменения в изображение, как показано в соответствии.

  3. Отмените размещение виртуальной машины.

    az vm deallocate --name $vmname --resource-group $resourceGroupName
    
  4. Создайте общий маркер доступа (маркер SAS) для диска ОС и сохраните его в переменной. Обратите внимание, что этот диск ОС не должен находиться в той же группе ресурсов, что и конфиденциальная виртуальная машина.

    disk_name=$(az vm show --name $vmname --resource-group $resourceGroupName | jq -r .storageProfile.osDisk.name)
    disk_url=$(az disk grant-access --duration-in-seconds 3600 --name $disk_name --resource-group $resourceGroupName | jq -r .accessSas)
    

Создание учетной записи хранения для хранения экспортированного диска

  1. Создание учетной записи хранения.
    az storage account create --resource-group ${resourceGroupName} --name ${storageAccountName} --location $region --sku "Standard_LRS"
    
  2. Создайте контейнер в учетной записи хранения.
    az storage container create --name $storageContainerName --account-name $storageAccountName --resource-group $resourceGroupName
    
  3. Создайте маркер общего доступа для чтения (маркер SAS) в контейнер хранилища и сохраните его в переменной.
    container_sas=$(az storage container generate-sas --name $storageContainerName --account-name $storageAccountName --auth-mode key --expiry 2024-01-01 --https-only --permissions dlrw -o tsv)
    
  4. С помощью azcopy скопируйте диск ОС в контейнер хранилища.
     blob_url="https://${storageAccountName}.blob.core.windows.net/$storageContainerName/$referenceVHD"
     azcopy copy "$disk_url" "${blob_url}?${container_sas}"
    

Создание конфиденциального поддерживаемого образа

  1. Создайте Общая коллекция образов.
    az sig create --resource-group $resourceGroupName --gallery-name $galleryName
    
  2. Создайте общую коллекцию образов (SIG), поддерживаемую конфиденциальной виртуальной машиной. Задайте новые имена для определения изображений коллекции, издателя SIG и номера SKU.
    az sig image-definition create --resource-group  $resourceGroupName --location $region --gallery-name $galleryName --gallery-image-definition $imageDefinitionName --publisher $sigPublisherName --offer ubuntu --sku $sigSkuName --os-type Linux --os-state specialized --hyper-v-generation V2  --features SecurityType=ConfidentialVMSupported
    
  3. Получите идентификатор учетной записи хранения.
    storageAccountId=$(az storage account show --name $storageAccountName --resource-group $resourceGroupName | jq -r .id)
    
  4. Создайте версию образа SIG.
    az sig image-version create --resource-group $resourceGroupName --gallery-name $galleryName --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --os-vhd-storage-account $storageAccountId --os-vhd-uri $blob_url
    
  5. Сохраните идентификатор версии образа SIG, созданной на предыдущем шаге.
    galleryImageId=$(az sig image-version show --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --gallery-name $galleryName --resource-group $resourceGroupName | jq -r .id)
    

Создание конфиденциальной виртуальной машины

  1. Создайте виртуальную машину с помощью команды az vm create. Дополнительные сведения см. в разделе "Безопасная загрузка" и vTPM. Дополнительные сведения о шифровании дисков см. в разделе о шифровании дисков конфиденциальной ОС. В настоящее время конфиденциальные виртуальные машины поддерживают размеры виртуальных машин серии контроллера домена и серии EC.
    az vm create \
    --resource-group $resourceGroupName \
    --name $cvmname \
    --size Standard_DC4as_v5 \
    --enable-vtpm true \
    --enable-secure-boot true \
    --image $galleryImageId \
    --public-ip-sku Standard \
    --security-type ConfidentialVM \
    --os-disk-security-encryption-type VMGuestStateOnly \
    --specialized
    

Next Steps