Краткое руководство. Создание конфиденциальной виртуальной машины с помощью Azure CLI
Область применения: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows
В этом кратком руководстве показано, как использовать интерфейс командной строки Azure (Azure CLI) для развертывания конфиденциальной виртуальной машины (конфиденциальной виртуальной машины) в Azure. Azure CLI используется для создания ресурсов Azure и управления ими с помощью командной строки или скриптов.
Необходимые компоненты
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Запуск Azure Cloud Shell
Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.
Чтобы открыть Cloud Shell, просто выберите Попробовать в правом верхнем углу блока кода. Кроме того, Cloud Shell можно открыть в отдельной вкладке браузера. Для этого перейдите на страницу https://shell.azure.com/bash. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить его.
Если вы предпочитаете локально устанавливать и использовать ИНТЕРФЕЙС командной строки, для этого краткого руководства требуется Azure CLI версии 2.38.0 или более поздней. Чтобы узнать версию, выполните команду az--version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Создание или изменение группы ресурсов
Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении northeurope :
Примечание.
Конфиденциальные виртуальные машины доступны не во всех расположениях. Сведения о поддерживаемых расположениях см. в разделе Доступность продуктов Azure по регионам.
az group create --name myResourceGroup --location northeurope
Создание конфиденциальной виртуальной машины с помощью ключа, управляемого платформой
Создайте виртуальную машину с помощью команды az vm create.
В следующем примере создается виртуальная машина myVM и добавляется учетная запись пользователя azureuser. Параметр --generate-ssh-keys
используется для автоматического создания ключа SSH и его размещения в расположении ключа по умолчанию (~/.ssh). Чтобы использовать определенный набор ключей, примените параметр --ssh-key-values
.
Для size
параметра выберите размер конфиденциальной виртуальной машины. Дополнительные сведения см. в разделе Поддерживаемые семейства конфиденциальных виртуальных машин.
Выберите VMGuestStateOnly
без конфиденциального шифрования диска ОС. Или выберите DiskWithVMGuestState
конфиденциальное шифрование диска ОС с помощью ключа, управляемого платформой. Безопасная загрузка включена по умолчанию, но является необязательной для VMGuestStateOnly
. Дополнительные сведения см. в разделе "Безопасная загрузка" и vTPM. Дополнительные сведения о шифровании и шифровании дисков на узле см. в разделе о шифровании и шифровании диска конфиденциальной ОС на узле.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--size Standard_DC4es_v5 \
--admin-username <azure-username> \
--admin-password <azure-password> \
--enable-vtpm true \
--image "Canonical:0001-com-ubuntu-confidential-vm-jammy:22_04-lts-cvm:latest" \
--public-ip-sku Standard \
--security-type ConfidentialVM \
--os-disk-security-encryption-type VMGuestStateOnly \
--enable-secure-boot true
Создание виртуальной машины и вспомогательных ресурсов занимает несколько минут. В следующем примере выходных данных показано, что виртуальная машина успешно создана.
{
"fqdns": "",
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "northeurope",
"macAddress": "<MAC-address>",
"powerState": "VM running",
"privateIpAddress": "10.20.255.255",
"publicIpAddress": "192.168.255.255",
"resourceGroup": "myResourceGroup",
"zones": ""
}
Запишите publicIpAddress
для последующего использования.
Создание конфиденциальной виртуальной машины с помощью управляемого клиентом ключа
Чтобы создать набор шифрования конфиденциальных дисков, у вас есть два варианта: использование Azure Key Vault или управляемого аппаратного модуля безопасности Azure Key Vault (HSM). В зависимости от потребностей безопасности и соответствия требованиям можно выбрать любой из вариантов. Однако важно отметить, что стандартный номер SKU не поддерживается. В следующем примере используется Azure Key Vault Premium.
- Предоставьте субъекту-службе
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 Key Vault с помощью команды az keyvault create . Для ценовой категории выберите "Премиум" (включает поддержку поддерживаемых ключей HSM). Убедитесь, что у вас есть роль владельца в этом хранилище ключей.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true --enable-rbac-authorization false
- Предоставьте
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 keyVaultName --object-id $cvmAgent.Id --key-permissions get release
- Создайте ключ в хранилище ключей с помощью az keyvault key create. Для типа ключа используйте RSA-HSM.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
- Создайте набор шифрования дисков с помощью az disk-encryption-set create. Задайте для типа
ConfidentialVmEncryptedWithCustomerKey
шифрования значение .
$keyVaultKeyUrl=(az keyvault key show --vault-name keyVaultName --name mykey--query [key.kid] -o tsv)
az disk-encryption-set create --resource-group myResourceGroup --name diskEncryptionSetName --key-url $keyVaultKeyUrl --encryption-type ConfidentialVmEncryptedWithCustomerKey
- Предоставьте ресурсу набора ресурсов набора шифрования дисков к хранилищу ключей с помощью az key vault set-policy.
$desIdentity=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [identity.principalId] -o tsv)
az keyvault set-policy -n keyVaultName -g myResourceGroup --object-id $desIdentity --key-permissions wrapkey unwrapkey get
- Используйте идентификатор набора шифрования дисков для создания виртуальной машины.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
- Создайте виртуальную машину с помощью команды az vm create. Выберите
DiskWithVMGuestState
конфиденциальное шифрование диска ОС с помощью ключа, управляемого клиентом. Включение безопасной загрузки является необязательным, но рекомендуется. Дополнительные сведения см. в разделе "Безопасная загрузка" и vTPM. Дополнительные сведения о шифровании дисков см. в разделе о шифровании дисков конфиденциальной ОС.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--size Standard_DC4as_v5 \
--admin-username <azure-user> \
--admin-password <azure-password> \
--enable-vtpm true \
--enable-secure-boot true \
--image "Canonical:0001-com-ubuntu-confidential-vm-focal:20_04-lts-cvm:latest" \
--public-ip-sku Standard \
--security-type ConfidentialVM \
--os-disk-security-encryption-type DiskWithVMGuestState \
--os-disk-secure-vm-disk-encryption-set $diskEncryptionSetID \
Создание виртуальной машины и вспомогательных ресурсов занимает несколько минут. В следующем примере выходных данных показано, что виртуальная машина успешно создана.
{
"fqdns": "",
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "eastus",
"macAddress": "<MAC-address>",
"powerState": "VM running",
"privateIpAddress": "10.20.255.255",
"publicIpAddress": "192.168.255.255",
"resourceGroup": "myResourceGroup",
"zones": ""
}
Запишите publicIpAddress
для последующего использования.
Подключение и аттестация CVM на основе AMD через пример приложения Microsoft Аттестация Azure
Чтобы использовать пример приложения в C++ для использования с API аттестации гостей, выполните следующие действия. В этом примере используется конфиденциальная виртуальная машина Linux. Инструкции по сборке Для Windows см . в разделе "Инструкции по сборке" для Windows.
Войдите на конфиденциальную виртуальную машину с помощью общедоступного IP-адреса.
Клонируйте пример приложения Linux.
Установите пакет
build-essential
. Этот пакет устанавливает все необходимое для компиляции примера приложения.
sudo apt-get install build-essential
- Установите приведенные ниже пакеты.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
sudo apt-get install libboost-all-dev
sudo apt install nlohmann-json3-dev
Скачайте пакет аттестации.
Установите пакет аттестации. Обязательно замените
<version>
скачаемую версию.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
- После установки указанных выше пакетов выполните приведенные ниже действия для сборки и запуска приложения.
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
- Чтобы преобразовать веб-токен в JSON, выполните приведенные ниже действия.
sudo ./AttestationClient -o token>> /attestation_output
JWT=$(cat /attestation_output)
echo -n $JWT | cut -d "." -f 1 | base64 -d 2>/dev/null | jq .
echo -n $JWT | cut -d "." -f 2 | base64 -d 2>/dev/null | jq .