Creación de una imagen personalizada para máquinas virtuales confidenciales de Azure
Se aplica a: ✔️ Máquinas virtuales Linux
En este "procedimiento" se muestra cómo usar el Interfaz de la línea de comandos de Azure (CLI de Azure) para crear una imagen personalizada para la máquina virtual confidencial (VM confidencial) en Azure. La CLI de Azure se usa para crear y administrar recursos de Azure mediante la línea de comandos o scripts.
La creación de una imagen personalizada permite preconfigurar la máquina virtual confidencial con software, configuración y medidas de seguridad específicas que cumplan sus requisitos. Si desea incorporar una imagen de Ubuntu que no sea compatible con máquinas virtuales confidenciales, puede seguir los pasos que se indican a continuación para ver cuáles son los requisitos mínimos de la imagen.
Requisitos previos
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Inicio de Azure Cloud Shell
Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.
Para abrir Cloud Shell, seleccione Pruébelo en la esquina superior derecha de un bloque de código. También puede abrir Cloud Shell en una pestaña independiente acudiendo a https://shell.azure.com/bash. Seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, después, seleccione Entrar para ejecutarlos.
Si prefiere instalar y usar la CLI en un entorno local, para esta guía de inicio rápido se requiere la versión 2.0.30 de la CLI de Azure o una versión posterior. Ejecute az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
Crear un grupo de recursos
Para crear un grupo de recursos, use el comando az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
Nota:
Las máquinas virtuales confidenciales no están disponibles en todas las ubicaciones. Para las ubicaciones admitidas actualmente, consulte qué productos de máquina virtual están disponibles en la región de Azure.
az group create --name $resourceGroupName --location eastus
Creación de una imagen personalizada para máquinas virtuales confidenciales de Azure
Cree una máquina virtual con una imagen de Ubuntu que prefiera en la lista de imágenes Soporte técnico de Azure.
Asegúrese de que la versión del kernel sea al menos 5.15.0-1037-azure. Puede usar "uname -r" después de conectarse a la máquina virtual para comprobar la versión del kernel. Aquí puede agregar los cambios a la imagen a medida que se ajuste.
Desasigne la máquina virtual.
az vm deallocate --name $vmname --resource-group $resourceGroupName
Cree un token de acceso compartido (token de SAS) para el disco del sistema operativo y almacénelo en una variable. Tenga en cuenta que este disco del sistema operativo no tiene que estar en el mismo grupo de recursos que la máquina virtual confidencial.
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)
Creación de una cuenta de almacenamiento para almacenar el disco exportado
- Cree una cuenta de almacenamiento.
az storage account create --resource-group ${resourceGroupName} --name ${storageAccountName} --location $region --sku "Standard_LRS"
- Cree un contenedor en la cuenta de almacenamiento.
az storage container create --name $storageContainerName --account-name $storageAccountName --resource-group $resourceGroupName
- Genere un token de acceso compartido de lectura (token de SAS) en el contenedor de almacenamiento y guárdelo en una variable.
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)
- Con azcopy, copie el disco del sistema operativo en el contenedor de almacenamiento.
blob_url="https://${storageAccountName}.blob.core.windows.net/$storageContainerName/$referenceVHD" azcopy copy "$disk_url" "${blob_url}?${container_sas}"
Creación de una imagen admitida confidencial
- Cree una galería de imágenes compartidas.
az sig create --resource-group $resourceGroupName --gallery-name $galleryName
- Cree una máquina virtual confidencial de definición de galería de imágenes compartidas (SIG). Establezca nuevos nombres para la definición de imágenes de la galería, el publicador SIG y la 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
- Obtenga el identificador de la cuenta de almacenamiento.
storageAccountId=$(az storage account show --name $storageAccountName --resource-group $resourceGroupName | jq -r .id)
- Cree una versión de imagen 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
- Almacene el identificador de la versión de la imagen SIG creada en el paso anterior.
galleryImageId=$(az sig image-version show --gallery-image-definition $imageDefinitionName --gallery-image-version $galleryImageVersion --gallery-name $galleryName --resource-group $resourceGroupName | jq -r .id)
Creación de una máquina virtual confidencial
- Cree la máquina virtual con el comando az vm create. Para obtener más información, consulte arranque seguro y vTPM. Para obtener más información sobre el cifrado de disco, consulte Cifrado de disco del sistema operativo confidencial. Actualmente, las máquinas virtuales confidenciales admiten los tamaños de máquina virtual de la serie DC y de la serie 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