共用方式為


如何建立 Azure 機密 VM 的自訂映像

適用於:✔️ Linux VM

本「操作說明」示範如何使用 Azure 命令列介面 (Azure CLI),在 Azure 中建立機密虛擬機器 (機密 VM) 的自訂映像。 Azure CLI 可用來透過命令列或指令碼建立和管理 Azure 資源。

建立自訂映像可讓您使用符合您需求的特定軟體、設定及安全性措施,預先設定您的機密 VM。 如果您想要帶入與機密 VM 不相容的 Ubuntu 映像,您可以遵循下列步驟查看您映像的最低需求。

必要條件

如果您沒有 Azure 訂用帳戶,請在開始前建立免費 Azure 帳戶

啟動 Azure Cloud Shell

Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。

若要開啟 Cloud Shell,只要選取程式碼區塊右上角的 [試試看] 即可。 您也可以移至 https://shell.azure.com/bash,從另一個瀏覽器索引標籤開啟 Cloud Shell。 選取 [複製] 即可複製程式碼區塊,將它貼到 Cloud Shell 中,然後選取 Enter 鍵加以執行。

如果您偏好在本機安裝和使用 CLI,本快速入門需要有 Azure CLI 2.0.30 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

建立資源群組

使用 az group create 命令來建立資源群組。 Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。

注意

機密 VM 不一定在所有位置都能使用。 如需了解目前支援的位置,請參閱可用的 VM 產品 (依 Azure 區域)

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

建立 Azure 機密 VM 的自訂映像

  1. 使用從 Azure 支援的映像清單中選取的 Ubuntu 映像建立虛擬機器

  2. 確定核心版本至少為 5.15.0-1037-azure。 連線到 VM 之後,您可以使用「uname -r」來檢查核心版本。 您可以在這裏視需要將任何變更新增至映像。

  3. 解除配置您的虛擬機器。

    az vm deallocate --name $vmname --resource-group $resourceGroupName
    
  4. 建立 OS 磁碟的共用存取權杖 (SAS 權杖),並將其儲存在變數中。 請注意,此 OS 磁碟不一定位於與機密 VM 相同的資源群組中。

    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,將 OS 磁碟複製到儲存體容器。
     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) 定義機密 VM。 設定資源庫映像定義、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)
    

建立機密 VM

  1. 使用 az vm create 命令來建立 VM。 如需詳細資訊,請參閱安全開機和 vTPM。 如需磁碟加密的詳細資訊,請參閱機密 OS 磁碟加密。 目前機密 VM 支援 DC 系列EC 系列 VM 大小。
    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
    

後續步驟