Schnellstart: Erstellen einer vertraulichen VM mit der Azure CLI
Gilt für: ✔️ Linux-VMs ✔️ Windows-VMs
In dieser Schnellstartanleitung wird gezeigt, wie Sie mit der Azure-Befehlszeilenschnittstelle (Azure Command-Line Interface, Azure CLI) einen vertraulichen virtuellen Computer (vertrauliche VM) in Azure bereitstellen. Die Azure-Befehlszeilenschnittstelle dient zum Erstellen und Verwalten von Azure-Ressourcen über die Befehlszeile oder mit Skripts.
Voraussetzungen
Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Azure-Konto erstellen, bevor Sie beginnen.
Starten von Azure Cloud Shell
Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel ausführen können. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert.
Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock einfach die Option Ausprobieren. Sie können Cloud Shell auch auf einer separaten Browserregisterkarte öffnen, indem Sie zu https://shell.azure.com/bash navigieren. Wählen Sie Kopieren aus, um die Codeblöcke zu kopieren. Fügen Sie die Blöcke anschließend in Cloud Shell ein, und wählen Sie Eingabe, um sie auszuführen.
Wenn Sie es vorziehen, die CLI lokal zu installieren und zu verwenden, müssen Sie für diesen Schnellstart mindestens Version 2.38.0 der Azure CLI verwenden. Führen Sie az--version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Erstellen einer Ressourcengruppe
Erstellen Sie mithilfe des Befehls az group create eine Ressourcengruppe. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort northeurope:
Hinweis
Vertrauliche VMs sind nicht an allen Standorten verfügbar. Informationen zu den derzeit unterstützten Standorten finden Sie unter Verfügbarkeit von VM-Produkten nach Azure-Region.
az group create --name myResourceGroup --location northeurope
Erstellen eines vertraulichen virtuellen Computers mithilfe eines plattformseitig verwalteten Schlüssels
Erstellen Sie mit dem Befehl az vm create einen virtuellen Computer.
Im folgenden Beispiel wird eine VM mit dem Namen myVM erstellt und ein Benutzerkonto mit dem Namen azureuser hinzugefügt. Der Parameter --generate-ssh-keys
wird genutzt, um automatisch einen SSH-Schlüssel zu generieren und am Speicherort für den Standardschlüssel abzulegen (~/.ssh). Um stattdessen einen bestimmten Satz mit Schlüsseln zu verwenden, können Sie die Option --ssh-key-values
nutzen.
Wählen Sie für size
eine Größe für die vertrauliche VM aus. Weitere Informationen finden Sie unter Unterstützte vertrauliche VM-Familien.
Wählen Sie VMGuestStateOnly
für „keine Verschlüsselung des vertraulichen Betriebssystemdatenträgers“ aus. Oder wählen Sie DiskWithVMGuestState
für „Verschlüsselung des vertraulichen Betriebssystemdatenträgers mit plattformseitig verwaltetem Schlüssel“ aus. Der sichere Start ist standardmäßig aktiviert, ist jedoch für VMGuestStateOnly
optional. Weitere Informationen finden Sie unter Vertrauenswürdiger Start für Azure-VMs. Weitere Informationen zur Datenträgerverschlüsselung und -verschlüsselung auf dem Host finden Sie unter Verschlüsselung vertraulicher Betriebssystemdatenträger und Verschlüsselung auf dem 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
Das Erstellen des virtuellen Computers und der unterstützenden Ressourcen dauert einige Minuten. In der folgenden Beispielausgabe wird angezeigt, dass der Vorgang der VM-Erstellung erfolgreich war.
{
"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": ""
}
Notieren Sie sich die öffentliche IP-Adresse (publicIpAddress
) für später.
Erstellen eines vertraulichen virtuellen Computers mithilfe eines kundenseitig verwalteten Schlüssels
Um einen Datenträgerverschlüsselungssatz für vertrauliche Daten zu erstellen, haben Sie zwei Möglichkeiten: Mit Azure Key Vault oder mit dem von Azure Key Vault verwalteten Hardware-Sicherheitsmodul (HSM). Basierend auf Ihren Sicherheits- und Complianceanforderungen können Sie eine der beiden Optionen auswählen. Beachten Sie jedoch, dass die Standard-SKU nicht unterstützt wird. Im folgenden Beispiel wird Azure Key Vault Premium verwendet.
- Gewähren Sie dem Mandanten den vertraulichen VM-Dienstprinzipal
Confidential VM Orchestrator
. Für diesen Schritt müssen Sie ein globaler Administrator sein, oder Sie benötigen die RBAC-Rolle „Benutzerzugriffsadministrator“. Installieren Sie das Microsoft Graph SDK, um die folgenden Befehle auszuführen.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
- Erstellen Sie mit dem Befehl az keyvault create eine Azure Key Vault-Instanz. Wählen Sie als Preisstufe Premium (bietet Unterstützung für HSM-gestützte Schlüssel) aus. Stellen Sie sicher, dass Sie über eine Besitzerrolle in diesem Schlüsseltresor verfügen.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true --enable-rbac-authorization false
- Erteilen Sie dem Schlüsseltresor
Confidential VM Orchestrator
-Berechtigungen fürget
undrelease
.
$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
- Führen Sie den Befehl az keyvault key create aus, um einen Schlüssel im Schlüsseltresor zu erstellen. Verwenden Sie für den Schlüsseltyp „RSA-HSM“.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
- Erstellen Sie mithilfe von az disk-encryption-set create den Datenträgerverschlüsselungssatz. Legen Sie den Verschlüsselungstyp auf
ConfidentialVmEncryptedWithCustomerKey
fest.
$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
- Gewähren Sie dem Datenträgerverschlüsselungssatz mithilfe von az key vault set-policy Ressourcenzugriff auf den Schlüsseltresor.
$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
- Verwenden Sie die ID des Datenträgerverschlüsselungssatzes, um den virtuellen Computer zu erstellen.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
- Erstellen Sie mit dem Befehl az vm create einen virtuellen Computer. Wählen Sie
DiskWithVMGuestState
für „Verschlüsselung des vertraulichen Betriebssystemdatenträgers mit kundenseitig verwaltetem Schlüssel“ aus. Die Aktivierung des sicheren Starts ist optional, wird jedoch empfohlen. Weitere Informationen finden Sie unter Vertrauenswürdiger Start für Azure-VMs. Weitere Informationen zur Datenträgerverschlüsselung finden Sie unter Vertrauliche VMs der Serien DCasv5 und ECasv5.
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 \
Das Erstellen des virtuellen Computers und der unterstützenden Ressourcen dauert einige Minuten. In der folgenden Beispielausgabe wird angezeigt, dass der Vorgang der VM-Erstellung erfolgreich war.
{
"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": ""
}
Notieren Sie sich die öffentliche IP-Adresse (publicIpAddress
) für später.
Herstellen einer Verbindung und Nachweis für AMD-basierte CVM über die Microsoft Azure Attestation-Beispiel-App
Um eine Beispielanwendung in C++ für die Verwendung mit den Gastnachweis-APIs zu verwenden, führen Sie die folgenden Schritte aus. In diesem Beispiel wird ein vertraulicher virtueller Linux-Computer verwendet. Informationen zu Windows finden Sie unter Buildanweisungen für Windows.
Melden Sie sich mit der öffentlichen IP-Adresse bei Ihrem vertraulichen virtuellen Computer an.
Klonen Sie die Linux-Beispielanwendung.
Installieren Sie das
build-essential
-Paket. Dieses Paket installiert alles, was für die Kompilierung der Beispielanwendung erforderlich ist.
sudo apt-get install build-essential
- Installieren Sie die folgenden Pakete:
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
Laden Sie das Nachweispaket herunter.
Installieren Sie das Nachweispaket. Ersetzen Sie
<version>
unbedingt durch die von Ihnen heruntergeladene Version.
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
- Nachdem die oben genannten Pakete installiert wurden, führen Sie die folgenden Schritte aus, um die App zu erstellen und auszuführen:
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
- Führen Sie die folgenden Schritte aus, um das Webtoken in JSON-Code zu konvertieren.
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 .