Proposed Pull Request Change

title description author ms.topic ms.service ms.date ms.author ms.reviewer
Virtual Machine Metablob Disk Information on Virtual Machine Metablob Disk (VMMD) linuxelf001 concept-article azure-confidential-computing 09/05/2025 raginjup raginjup
📄 Document Links
GitHub View on GitHub Microsoft Learn View on Microsoft Learn
Content Truncation Detected
The generated rewrite appears to be incomplete.
Original lines: -
Output lines: -
Ratio: -
Raw New Markdown
Generating updated version of doc...
Rendered New Markdown
Generating updated version of doc...
+0 -0
+0 -0
--- title: Virtual Machine Metablob Disk description: Information on Virtual Machine Metablob Disk (VMMD) author: linuxelf001 ms.topic: concept-article ms.service: azure-confidential-computing ms.date: 09/05/2025 ms.author: raginjup ms.reviewer: raginjup --- # Virtual Machine Metablob Disk This article outlines the changes to be aware when using confidential virtual machines with Virtual Machine Metablob (VMMD) disk. > [!NOTE] > The VMMD feature support described here are available in Azure REST API version **2025-01-02** and later, Azure CLI version **2.77.0** and later, Azure PowerShell version **14.4.0** and later. ## Prerequisites Before you begin, ensure you have the following: * An Azure account with an active subscription. [Create an account for free.](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn) * A confidential virtual machine with managed disks. * The appropriate version of the tools you are using: * Azure REST API version 2025-01-02 or later. * Azure CLI version 2.77.0 or later. * Azure PowerShell version 14.4.0 or later. ## Disk Access The process for granting access to confidential virtual machine disks has been updated to provide a SAS URI for the Virtual Machine Metadata Disk (VMMD) blob. This is in addition to the existing SAS URIs for the OS disk and the VM guest state (VMGS) blob. ### [Azure REST API](#tab/rest-access) To get the VMMD SAS URI using the Azure REST API, use the `beginGetAccess` endpoint with version `2025-01-02` or later. Grant access to a confidential virtual machine disk * API: beginGetAccess * New in response: securityMetadataAccessSAS **Sample HTTP Request:** ```http POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myDisk/beginGetAccess?api-version=2025-01-02 { "access": "Read", "durationInSeconds": 300, "fileFormat": "VHD" } ``` **Sample Response:** Status code: 200 ```json { "accessSAS": "OS disk SAS URI", "securityDataAccessSAS": "VM Guest State SAS URI", "securityMetadataAccessSAS": "VM Metadata SAS URI" } ``` Detailed documentation and more examples using Java, Go, JavaScript, or dotnet [are available here.](/rest/api/compute/disks/create-or-update?view=rest-compute-2025-01-02&tabs=HTTP#create-a-managed-disk-from-importsecure-create-option-with-metadata-uri-for-confidential-vm&preserve-view=true) ### [Azure CLI](#tab/cli-access) When using the `az disk grant-access` command in Azure CLI version 2.77.0 or later, confidential virtual machines with three blobs include the `securityMetadataAccessSAS`. **Example:** ```shell diskSas=$(az disk grant-access \ -n $diskName \ -g $resourceGroupName \ --access-level Write \ --duration-in-seconds 86400 \ --secure-vm-guest-state-sas) ``` **Returned value schema:** ```json { "accessSAS": "OS disk SAS URI", "securityDataAccessSAS": "VM Guest State SAS URI", "securityMetadataAccessSAS": "VM Metadata SAS URI" } ``` ### [Azure PowerShell](#tab/powershell-access) With Azure PowerShell version 14.4.0 or later, the `Grant-AzDiskAccess` cmdlet now returns an object that includes the `securityMetadataAccessSAS`. **Example:** ```powershell Grant-AzDiskAccess ` -ResourceGroupName 'ResourceGroup01' ` -DiskName 'Disk01' ` -Access 'Read' ` -DurationInSecond 60 ` -SecureVmGuestStateSas ``` > [!NOTE] > Multiline commands in PowerShell require a trailing backtick (\`) character, which must have a space preceding it. There should NOT be any space or trailing comments after the backtick (\`) either. You may avoid this issue by entering the whole command in a single line. **Returned value schema:** ```json { "accessSAS": "OS disk SAS URI", "securityDataAccessSAS": "VM Guest State SAS URI", "securityMetadataAccessSAS": "VM Metadata SAS URI" } ``` --- ## Create ### [Azure REST API](#tab/rest-create) To create a confidential virtual machine disk with VMMD URI * API: createOption ImportSecure * Include: securityMetadataUri in the request **Sample HTTP Request:** ```http PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myDisk?api-version=2025-01-02 { "location": "West US", "properties": { "osType": "Windows", "securityProfile": { "securityType": "ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey" }, "creationData": { "createOption": "ImportSecure", "storageAccountId": "subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myStorageAccount", "sourceUri": "https://mystorageaccount.blob.core.windows.net/osimages/osimage.vhd", "securityDataUri": "https://mystorageaccount.blob.core.windows.net/osimages/vmgs.vhd", "securityMetadataUri": "https://mystorageaccount.blob.core.windows.net/osimages/vmmd.vhd" } } } ``` **Sample Response:** Status code: 200 ```json { "id": "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myDisk", "name": "myDisk", "location": "West US", "properties": { "provisioningState": "Updating", "osType": "Windows", "securityProfile": { "securityType": "ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey" }, "creationData": { "createOption": "ImportSecure", "storageAccountId": "subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myStorageAccount", "sourceUri": "https://mystorageaccount.blob.core.windows.net/osimages/osimage.vhd", "securityDataUri": "https://mystorageaccount.blob.core.windows.net/osimages/vmgs.vhd", "securityMetadataUri": "https://mystorageaccount.blob.core.windows.net/osimages/vmmd.vhd" } } } ``` Detailed documentation and more examples using Java, Go, JavaScript, or dotnet [are available here.](/rest/api/compute/disks/create-or-update?view=rest-compute-2025-01-02&tabs=HTTP#create-a-managed-disk-from-importsecure-create-option-with-metadata-uri-for-confidential-vm&preserve-view=true) ### [Azure CLI](#tab/cli-create) To create a confidential virtual machine disk with VMMD URI * Include the --security-metadata-uri parameter. * Requires Azure CLI version 2.77.0 or later. **Example:** ```shell az disk create -n $diskName -g $resourceGroup -l $location --os-type Windows --hyper-v-generation V2 --security-type "ConfidentialVM_VMGuestStateOnlyEncryptedWithPlatformKey" --source $sourceDiskVhdUri --security-data-uri $guestStateDiskVhdUri --security-metadata-uri $metadataDiskVhdUri \ --sku standard_lrs ``` **Returned value schema:** ```json { "accessSAS": "OS disk SAS URI", "securityDataAccessSAS": "VM Guest State SAS URI", "securityMetadataAccessSAS": "VM Metadata SAS URI" } ``` ### [Azure PowerShell](#tab/powershell-create) With Azure PowerShell version 14.4.0 or later, the `Grant-AzDiskAccess` cmdlet now returns an object that includes the `securityMetadataAccessSAS`. **Example:** ```powershell Grant-AzDiskAccess ` -ResourceGroupName 'ResourceGroup01' ` -DiskName 'Disk01' ` -Access 'Read' ` -DurationInSecond 60 ` -SecureVmGuestStateSas ``` > [!NOTE] > Multiline commands in PowerShell require a trailing backtick (\`) character, which must have a space preceding it. There should NOT be any space or trailing comments after the backtick (\`) either. You may avoid this issue by entering the whole command in a single line. **Returned value schema:** ```json { "accessSAS": "OS disk SAS URI", "securityDataAccessSAS": "VM Guest State SAS URI", "securityMetadataAccessSAS": "VM Metadata SAS URI" } ``` --- When using UploadPreparedSecure, upload the VMMD blob in addition to the OS and VMGS blobs if the source includes VMMD. ## FAQ 1. What is the VMMD blob? <br> The VMMD (Virtual Machine Metadata) blob contains metadata for a confidential VM. 3. Do we currently have support for incremental snapshots for confidential VM with VMMD <br> At this moment, confidential VMs with VMMD blob do not support incremental snapshots yet. 4. Can we convert confidential VMs with VMMD and VMGS blob to confidential VMs with VMGS only <br> Unfortunately, this conversion is not supported at the moment. For more, see our [confidential VM FAQ](/azure/confidential-computing/confidential-vm-faq) and our [managed disk FAQ](/azure/virtual-machines/faq-for-disks) ## Next Steps * [Deploy a confidential VM from Azure](/azure/confidential-computing/quick-create-confidential-vm-portal) * [Azure confidential computing documentation](/azure/confidential-computing/) ## Related Articles * [Azure managed disks overview](/azure/virtual-machines/managed-disks-overview) * [Managed disk migration guide](/azure/virtual-machines/linux/convert-unmanaged-to-managed-disks)
Success! Branch created successfully. Create Pull Request on GitHub
Error: