次の方法で共有


Azure 機密 VM のカスタム イメージを作成する方法

適用対象: ✔️ Linux VM

この "方法" では、Azure Command-Line インターフェイス (Azure CLI) を使用して、Azure で機密仮想マシン (機密 VM) 用のカスタム イメージを作成する方法を示します。 Azure CLI は、コマンド ラインまたはスクリプトで Azure リソースを作成および管理するために使用します。

カスタム イメージを作成すると、要件を満たす特定のソフトウェア、設定、セキュリティ対策を使用して機密 VM を事前構成できます。 機密 VM と互換性のない Ubuntu イメージを持ち込む場合は、次の手順に従って、イメージの最小要件を確認できます。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に無料の Azure アカウントを作成してください。

Azure Cloud Shell を起動する

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。

Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。 https://shell.azure.com/bashに移動して、別のブラウザー タブで Cloud Shell を開くこともできます。 [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けてから、 [入力] を選択して実行します。

CLI をローカルにインストールして使用する場合、このクイック スタートでは、Azure CLI バージョン 2.0.30 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

リソース グループを作成する

az group create コマンドを使用して、リソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

機密 VM は、すべての場所で使用できるわけではありません。 現在サポートされている場所については、Azure リージョンで利用できる VM 製品を参照してください。

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. ストレージ アカウント ID を取得します。
    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 イメージ バージョンの ID を格納します。
    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
    

次のステップ