Краткое руководство. Развертывание конфиденциальной виртуальной машины с помощью шаблона ARM
Шаблон Azure Resource Manager (шаблон ARM) можно использовать для быстрого создания конфиденциальной виртуальной машины Azure. Конфиденциальные виртуальные машины работают на обоих процессорах AMD, поддерживаемых AMD SEV-SNP и процессорами Intel, поддерживаемыми Intel TDX, для обеспечения шифрования и изоляции памяти виртуальных машин. Дополнительные сведения см. в разделе Обзор конфиденциальных виртуальных машин.
Это руководство описывает развертывание конфиденциальной виртуальной машины с пользовательской конфигурацией.
Необходимые компоненты
- Подписка Azure. Бесплатные пробные учетные записи не предоставляют доступ к виртуальным машинам, используемым в этом руководстве. Одним из возможных вариантов является подписка с оплатой по мере использования.
- Если вы хотите развернуть из Azure CLI, установите PowerShell и установите Azure CLI.
Развертывание шаблона конфиденциальной виртуальной машины с помощью Azure CLI
Вы можете развернуть шаблон конфиденциальной виртуальной машины с необязательным шифрованием диска ОС с помощью ключа, управляемого платформой.
Чтобы создать и развернуть конфиденциальную виртуальную машину с помощью шаблона ARM с помощью Azure CLI:
Войдите в свою учетную запись Azure в Azure CLI.
az login
Настройте свою подписку Azure. Замените
<subscription-id>
идентификатором своей подписки. Обязательно используйте подписку, которая соответствует предварительным требованиям.az account set --subscription <subscription-id>
Задайте переменные для конфиденциальной виртуальной машины. Укажите имя развертывания (
$deployName
), группу ресурсов ($resourceGroup
), имя виртуальной машины ($vmName
) и регион Azure ($region
). Замените примеры значений собственными сведениями.Примечание.
Конфиденциальные виртуальные машины доступны не во всех расположениях. Сведения о поддерживаемых расположениях см. в разделе Доступность продуктов Azure по регионам.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"
Если указанная группа ресурсов не существует, создайте группу ресурсов с таким именем.
az group create -n $resourceGroup -l $region
Разверните виртуальную машину в Azure с помощью шаблона ARM с пользовательским файлом параметров и файлом шаблона.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Определение файла настраиваемых параметров
При создании конфиденциальной виртуальной машины с помощью интерфейс командной строки Azure (Azure CLI) необходимо определить пользовательский файл параметров. Чтобы создать файл настраиваемых параметров JSON, сделайте следующее:
Войдите в учетную запись Azure с помощью Azure CLI.
Создайте файл параметров JSON. Например,
azuredeploy.parameters.json
.В зависимости от используемого образа ОС скопируйте пример файла параметров Windows или пример файла параметров Linux в файл параметров.
При необходимости измените код JSON в файле параметров. Например, обновите имя образа ОС (
osImageName
) или имя пользователя администратора (adminUsername
).Настройка параметра типа безопасности (
securityType
). ВыберитеVMGuestStateOnly
без конфиденциального шифрования диска ОС. Или выберитеDiskWithVMGuestState
конфиденциальное шифрование диска ОС с помощью ключа, управляемого платформой. Только для SKU Intel TDX и образов на основе Linux клиенты могут выбратьNonPersistedTPM
тип безопасности для развертывания с помощью эфемерного vTPM.NonPersistedTPM
Для типа безопасности в файле шаблона используйте минимальное значение apiVersion: "2023-09-01".Microsoft.Compute/virtualMachines
Сохраните файл параметров.
Пример файла параметров Windows
Используйте этот пример, чтобы создать файл настраиваемых параметров для конфиденциальной виртуальной машины под управлением Windows.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Windows Server 2022 Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"adminPasswordOrKey": {
"value": "<your password>"
}
}
}
Пример файла параметров Linux
Используйте этот пример, чтобы создать файл настраиваемых параметров для конфиденциальной виртуальной машины под управлением Linux.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Ubuntu 20.04 LTS Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"authenticationType": {
"value": "sshPublicKey"
},
"adminPasswordOrKey": {
"value": <your SSH public key>
}
}
}
Примечание.
Замените значение osImageName соответствующим образом.
Развертывание шаблона конфиденциальной виртуальной машины с помощью конфиденциального шифрования диска ОС с помощью ключа, управляемого клиентом
Войдите в учетную запись Azure с помощью Azure CLI.
az login
Настройте свою подписку Azure. Замените
<subscription-id>
идентификатором своей подписки. Обязательно используйте подписку, которая соответствует предварительным требованиям.az account set --subscription <subscription-id>
Предоставление субъекту-службе конфиденциальной виртуальной машины клиенту
Confidential VM Orchestrator
Для этого шага необходимо быть глобальным администратором или у вас должна быть роль администратора доступа пользователей RBAC. Установите пакет SDK Microsoft Graph, чтобы выполнить приведенные ниже команды.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
Настройте хранилище ключей Azure. Сведения об использовании управляемого HSM в Azure Key Vault см. на следующем шаге.
Создайте группу ресурсов для хранилища ключей. Экземпляр хранилища ключей и конфиденциальная виртуальная машина должны находиться в одном регионе Azure.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $region
Создайте экземпляр хранилища ключей с номером SKU уровня "Премиум" и выберите предпочтительный регион. Стандартный номер SKU не поддерживается.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protection
Убедитесь, что у вас есть роль владельца в этом хранилище ключей.
Предоставьте
Confidential VM Orchestrator
разрешенияget
иrelease
хранилище ключей.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault set-policy --name $KeyVault --object-id $cvmAgent.Id --key-permissions get release
(Необязательно) Если вы не хотите использовать хранилище ключей Azure, вы можете создать управляемый HSM в Azure Key Vault.
Следуйте краткому руководству по созданию управляемого HSM в Azure Key Vault для подготовки и активации управляемого HSM в Azure Key Vault.
Включите защиту очистки в управляемом HSM Azure. Этот шаг необходим для включения выпуска ключа.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection true
Предоставьте
Confidential VM Orchestrator
разрешения управляемому HSM.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault role assignment create --hsm-name $hsm --assignee $cvmAgent.Id --role "Managed HSM Crypto Service Release User" --scope /keys/$KeyName
Создайте новый ключ с помощью Azure Key Vault. Сведения о том, как использовать управляемый HSM Azure, см. на следующем шаге.
Подготовьте и скачайте политику выпуска ключа на локальный диск.
Создайте новый ключ.
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --vault-name $KeyVault --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --policy "@.\skr-policy.json"
Получение сведений о созданном ключе.
$encryptionKeyVaultId = ((az keyvault show -n $KeyVault -g $resourceGroup) | ConvertFrom-Json).id $encryptionKeyURL= ((az keyvault key show --vault-name $KeyVault --name $KeyName) | ConvertFrom-Json).key.kid
Разверните набор шифрования дисков (DES) с помощью шаблона DES ARM (
deployDES.json
).$desName = <name of DES> $deployName = <name of deployment> $desArmTemplate = <name of DES ARM template file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $desArmTemplate ` -p desName=$desName ` -p encryptionKeyURL=$encryptionKeyURL ` -p encryptionKeyVaultId=$encryptionKeyVaultId ` -p region=$region
Назначьте доступ к ключу к DES-файлу.
$desIdentity= (az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $KeyVault ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
(Необязательно) Создайте новый ключ из управляемого устройства HSM Azure.
Подготовьте и скачайте политику выпуска ключа на локальный диск.
Создайте новый ключ.
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --hsm-name $hsm --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --policy "@.\skr-policy.json"
Получение сведений о созданном ключе.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
Развертывание DES.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURL
Назначьте ключ доступа к DES.
desIdentity=$(az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $hsm ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
Разверните конфиденциальную виртуальную машину с помощью ключа, управляемого клиентом.
Получите идентификатор ресурса для DES.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)
Разверните конфиденциальную виртуальную машину с помощью шаблона ARM конфиденциальной виртуальной машины для Intel TDX и файла параметров развертывания (например,
azuredeploy.parameters.win2022.json
с помощью ключа, управляемого клиентом).$deployName = <name of deployment> $vmName = <name of confidential VM> $cvmArmTemplate = <name of confidential VM ARM template file> $cvmParameterFile = <name of confidential VM parameter file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $cvmArmTemplate ` -p $cvmParameterFile ` -p diskEncryptionSetId=$desID ` -p vmName=$vmName
Подключитесь к конфиденциальной виртуальной машине, чтобы убедиться, что создание выполнено успешно.