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
.
size
Selecteer 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
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.
- Ververleent vertrouwelijke VM-service-principal
Confidential VM Orchestrator
aan tenant. Voor deze stap moet u een globale beheerder zijn of moet u de rol Beheerder voor gebruikerstoegang 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"
- 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 --enable-rbac-authorization false
- Geef
Confidential VM Orchestrator
machtigingen aanget
enrelease
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
- 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
- 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
- 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
- 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)
- 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.
Connect and attest the AMD-based CVM through Microsoft Azure Attestation Sample App
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.
Meld u aan bij uw vertrouwelijke VM met behulp van het openbare IP-adres.
Kloon de Linux-voorbeeldtoepassing.
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
- 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
Download het attestation-pakket.
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
- 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
- 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 .