Share via


Quickstart: Een vertrouwelijke VM maken met de Azure CLI

Van toepassing op: ✔️ Virtuele Linux-machines ✔️ van Windows

In deze quickstart ziet u hoe u de Azure-opdrachtregelinterface (Azure CLI) gebruikt om een vertrouwelijke virtuele machine (vertrouwelijke VM) te implementeren in Azure. De Azure CLI wordt gebruikt om Azure-resources te maken en te beheren via de opdrachtregel of scripts.

Vereisten

Als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account voordat u begint.

Azure Cloud Shell starten

Azure Cloud Shell is een gratis interactieve shell waarmee u de stappen in dit artikel kunt uitvoeren. In deze shell zijn algemene Azure-hulpprogramma's vooraf geïnstalleerd en geconfigureerd voor gebruik met uw account.

Als u Cloud Shell wilt openen, selecteert u Proberen in de rechterbovenhoek van een codeblok. Als u naar https://shell.azure.com/bash gaat, kunt u Cloud Shell ook openen in een afzonderlijk browsertabblad. Selecteer Kopiëren om de codeblokken te kopiëren, plak deze in Cloud Shell en selecteer vervolgens Enter om de code uit te voeren.

Als u de CLI liever lokaal installeert en gebruikt, is voor deze quickstart Versie 2.38.0 of hoger van Azure CLI vereist. Voer az--version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Een brongroep maken

Een resourcegroep maken met de opdracht az group create. Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de northeurope-locatie :

Notitie

Vertrouwelijke VM's zijn niet beschikbaar op alle locaties. Voor momenteel ondersteunde locaties kunt u zien welke VM-producten beschikbaar zijn per Azure-regio.

az group create --name myResourceGroup --location northeurope

Een vertrouwelijke virtuele machine maken met behulp van een door het platform beheerde sleutel

Maak een VM met de opdracht az vm create.

In het volgende voorbeeld wordt een virtuele machine met de naam myVM gemaakt en voegt u een gebruikersaccount met de naam azureuser toe. De --generate-ssh-keys parameter wordt gebruikt om automatisch een SSH-sleutel te genereren en deze in de standaardsleutellocatie (~/.ssh) te plaatsen. Als u een specifieke set sleutels wilt gebruiken, gebruikt u de optie --ssh-key-values. sizeSelecteer een vertrouwelijke VM-grootte. Zie ondersteunde vertrouwelijke VM-families voor meer informatie.

Kies VMGuestStateOnly voor geen vertrouwelijke versleuteling van besturingssysteemschijven. Of kies DiskWithVMGuestState voor vertrouwelijke versleuteling van besturingssysteemschijven met een door het platform beheerde sleutel. Beveiligd opstarten is standaard ingeschakeld, maar is optioneel voor VMGuestStateOnly. Zie beveiligd opstarten en vTPM voor meer informatie. Zie voor meer informatie over schijfversleuteling en -versleuteling op host vertrouwelijke besturingssysteemschijfversleuteling en -versleuteling op de host.

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 \
  --encryption-at-host \

Het maken van de VM en de ondersteunende resources duurt enkele minuten. In het volgende voorbeeld van uitvoer ziet u dat het maken van de virtuele machine is geslaagd.

{
  "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": ""
}

Noteer de publicIpAddress gegevens die u later wilt gebruiken.

Een vertrouwelijke virtuele machine maken met een door de klant beheerde sleutel

Als u een vertrouwelijke schijfversleutelingsset wilt maken, hebt u twee opties: Azure Key Vault of azure Key Vault managed Hardware Security Module (HSM) gebruiken. Op basis van uw beveiligings- en nalevingsbehoeften kunt u een van beide opties kiezen. Het is echter belangrijk te weten dat de standaard-SKU niet wordt ondersteund. In het volgende voorbeeld wordt Azure Key Vault Premium gebruikt.

  1. Ververleent vertrouwelijke VM-service-principal Confidential VM Orchestrator aan tenant. Voor deze stap moet u een globale Beheer zijn of moet u de rol Gebruikerstoegang Beheer istrator RBAC hebben. Installeer Microsoft Graph SDK om de onderstaande opdrachten uit te voeren.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
  1. Maak een Azure Key Vault met behulp van de opdracht az keyvault create . Voor de prijscategorie selecteert u Premium (inclusief ondersteuning voor door HSM ondersteunde sleutels). Zorg ervoor dat u de rol van eigenaar in deze sleutelkluis hebt.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true
  1. Geef Confidential VM Orchestrator machtigingen aan get en release de sleutelkluis.
$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
  1. Maak een sleutel in de sleutelkluis met behulp van az keyvault key create. Gebruik RSA-HSM voor het sleuteltype.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
  1. Maak de schijfversleutelingsset met az disk-encryption-set create. Stel het versleutelingstype in op 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
  1. Versleutelingssetresource toegang verlenen tot de sleutelkluis met behulp van 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
  1. Gebruik de id van de schijfversleutelingsset om de virtuele machine te maken.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
  1. Maak een VM met de opdracht az vm create. Kies DiskWithVMGuestState voor vertrouwelijke versleuteling van besturingssysteemschijven met een door de klant beheerde sleutel. Het inschakelen van beveiligd opstarten is optioneel, maar wordt aanbevolen. Zie beveiligd opstarten en vTPM voor meer informatie. Zie vertrouwelijke besturingssysteemschijfversleuteling voor meer informatie over schijfversleuteling.
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 \

Het maken van de VM en de ondersteunende resources duurt enkele minuten. In het volgende voorbeeld van uitvoer ziet u dat het maken van de virtuele machine is geslaagd.

{
  "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": ""
}

Noteer de publicIpAddress gegevens die u later wilt gebruiken.

Verbinding maken en attest de CVM op basis van AMD via de Voorbeeld-app van Microsoft Azure Attestation

Als u een voorbeeldtoepassing in C++ wilt gebruiken voor gebruik met de gastverklaring-API's, gebruikt u de volgende stappen. In dit voorbeeld wordt een vertrouwelijke virtuele Linux-machine gebruikt. Zie de build-instructies voor Windows voor Windows.

  1. Meld u aan bij uw vertrouwelijke VM met behulp van het openbare IP-adres.

  2. Kloon de Linux-voorbeeldtoepassing.

  3. Installeer het build-essential-pakket. Met dit pakket wordt alles geïnstalleerd dat nodig is voor het compileren van de voorbeeldtoepassing.

sudo apt-get install build-essential
  1. Installeer de onderstaande pakketten.
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
  1. Download het attestation-pakket.

  2. Installeer het Attestation-pakket. Zorg ervoor dat u vervangt door <version> de versie die u hebt gedownload.

sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
  1. Zodra de bovenstaande pakketten zijn geïnstalleerd, gebruikt u de onderstaande stappen om de app te bouwen en uit te voeren.
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
  1. Gebruik de onderstaande stappen om het webtoken te converteren naar een 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 .

Volgende stappen