Создание пользовательского образа для конфиденциальных виртуальных машин 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
Создайте виртуальную машину с помощью образа Ubuntu из списка поддержка Azure образов.
Убедитесь, что версия ядра не менее 5.15.0-1037-azure. После подключения к виртуальной машине можно использовать uname -r, чтобы проверка версию ядра. Здесь можно добавить любые изменения в изображение, как показано в соответствии.
Отмените размещение виртуальной машины.
az vm deallocate --name $vmname --resource-group $resourceGroupName
Создайте общий маркер доступа (маркер 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)
Создание учетной записи хранения для хранения экспортированного диска
- Создание учетной записи хранения.
az storage account create --resource-group ${resourceGroupName} --name ${storageAccountName} --location $region --sku "Standard_LRS"
- Создайте контейнер в учетной записи хранения.
az storage container create --name $storageContainerName --account-name $storageAccountName --resource-group $resourceGroupName
- Создайте маркер общего доступа для чтения (маркер 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)
- С помощью azcopy скопируйте диск ОС в контейнер хранилища.
blob_url="https://${storageAccountName}.blob.core.windows.net/$storageContainerName/$referenceVHD" azcopy copy "$disk_url" "${blob_url}?${container_sas}"
Создание конфиденциального поддерживаемого образа
- Создайте Общая коллекция образов.
az sig create --resource-group $resourceGroupName --gallery-name $galleryName
- Создайте общую коллекцию образов (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
- Получите идентификатор учетной записи хранения.
storageAccountId=$(az storage account show --name $storageAccountName --resource-group $resourceGroupName | jq -r .id)
- Создайте версию образа 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
- Сохраните идентификатор версии образа SIG, созданной на предыдущем шаге.
galleryImageId=$(az sig image-version show --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --gallery-name $galleryName --resource-group $resourceGroupName | jq -r .id)
Создание конфиденциальной виртуальной машины
- Создайте виртуальную машину с помощью команды 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