Mulai cepat: Membuat VM rahasia dengan Azure CLI

Berlaku untuk: ✔️ VM Linux ✔️ VM Windows

Mulai cepat ini menunjukkan kepada Anda cara menggunakan Azure Command-Line Interface (Azure CLI) untuk menyebarkan komputer virtual rahasia (confidential VM) di Azure. Azure CLI digunakan untuk membuat dan mengelola sumber daya Azure melalui baris perintah atau skrip.

Prasyarat

Jika tidak memiliki langganan Azure, buat akun Azure gratis sebelum Anda memulai.

Meluncurkan Azure Cloud Shell

Azure Cloud Shell adalah shell interaktif gratis yang dapat Anda gunakan untuk menjalankan langkah dalam artikel ini. Shell ini memiliki alat Azure umum yang telah dipasang sebelumnya dan dikonfigurasi untuk digunakan dengan akun Anda.

Untuk membuka Cloud Shell, cukup pilih Cobalah dari sudut kanan atas blok kode. Anda juga dapat membuka Cloud Shell di tab browser terpisah dengan membuka https://shell.azure.com/bash. Pilih Salin untuk menyalin blok kode, tempelkan ke Cloud Shell, lalu pilih Masukkan untuk menjalankannya.

Jika Anda lebih suka menginstal dan menggunakan CLI secara lokal, mulai cepat ini memerlukan Azure CLI versi 2.38.0 atau yang lebih baru. Jalankan az--version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Buat grup sumber daya

Buat grup sumber daya dengan perintah az group create. Grup sumber daya Azure adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola. Contoh berikut membuat grup sumber daya bernama myResourceGroup di lokasi northeurope :

Catatan

VM rahasia tidak tersedia di semua lokasi. Untuk lokasi yang saat ini didukung, lihat produk VM mana yang tersedia oleh wilayah Azure.

az group create --name myResourceGroup --location northeurope

Membuat komputer virtual Rahasia menggunakan kunci yang dikelola platform

Buat VM dengan perintah az vm create.

Contoh berikut membuat VM bernama myVM dan menambahkan akun pengguna bernama azureuser. Parameter --generate-ssh-keys digunakan untuk secara otomatis menghasilkan kunci SSH, dan meletakkannya di lokasi kunci default(~/.ssh). Untuk menggunakan kumpulan kunci tertentu, gunakan opsi --ssh-key-values. Untuk size, pilih ukuran VM rahasia. Untuk informasi selengkapnya, lihat keluarga VM rahasia yang didukung.

Pilih VMGuestStateOnly untuk tidak ada enkripsi rahasia disk OS. Atau, pilih DiskWithVMGuestState untuk enkripsi rahasia disk OS dengan kunci yang dikelola platform. Boot Aman diaktifkan secara default, tetapi bersifat opsional untuk VMGuestStateOnly. Untuk informasi selengkapnya, lihat boot aman dan vTPM. Untuk informasi selengkapnya tentang enkripsi dan enkripsi disk di host, lihat enkripsi dan enkripsi disk OS rahasia di 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 \

Dibutuhkan beberapa menit untuk membuat komputer virtual dan sumber daya pendukung. Contoh output berikut menunjukkan operasi pembuatan komputer virtual berhasil.

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

Buat catatan publicIpAddress untuk digunakan nanti.

Membuat komputer virtual Rahasia menggunakan Kunci yang Dikelola Pelanggan

Untuk membuat set enkripsi disk rahasia, Anda memiliki dua opsi: Menggunakan Azure Key Vault atau Modul Keamanan Perangkat Keras (HSM) terkelola Azure Key Vault. Berdasarkan kebutuhan keamanan dan kepatuhan Anda, Anda dapat memilih salah satu opsi. Namun, penting untuk dicatat bahwa SKU standar tidak didukung. Contoh berikut menggunakan Azure Key Vault Premium.

  1. Berikan Perwakilan Confidential VM Orchestrator Layanan VM rahasia kepada penyewa. Untuk langkah ini, Anda harus menjadi Admin Global atau Anda harus memiliki peran RBAC Administrator Akses Pengguna. Instal Microsoft Graph SDK untuk menjalankan perintah di bawah ini.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
  1. Buat Azure Key Vault menggunakan perintah az keyvault create . Untuk tingkat harga, pilih Premium (termasuk dukungan untuk kunci yang didukung HSM). Pastikan Anda memiliki peran pemilik dalam brankas kunci ini.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true
  1. Berikan Confidential VM Orchestrator izin ke get dan release brankas kunci.
$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. Buat kunci di brankas kunci menggunakan az keyvault key create. Untuk jenis kunci, gunakan RSA-HSM.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
  1. Buat set enkripsi disk menggunakan az disk-encryption-set create. Atur jenis enkripsi ke 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. Berikan akses sumber daya set enkripsi disk ke brankas kunci menggunakan 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. Gunakan ID set enkripsi disk untuk membuat VM.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
  1. Buat VM dengan perintah az vm create. Pilih DiskWithVMGuestState untuk enkripsi rahasia disk OS dengan kunci yang dikelola pelanggan. Mengaktifkan boot aman bersifat opsional, tetapi disarankan. Untuk informasi selengkapnya, lihat boot aman dan vTPM. Untuk informasi selengkapnya tentang enkripsi disk, lihat enkripsi disk OS rahasia.
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 \

Dibutuhkan beberapa menit untuk membuat komputer virtual dan sumber daya pendukung. Contoh output berikut menunjukkan operasi pembuatan komputer virtual berhasil.

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

Buat catatan publicIpAddress untuk digunakan nanti.

Koneksi dan membuktikan CVM berbasis AMD melalui Aplikasi Sampel Microsoft Azure Attestation

Untuk menggunakan aplikasi sampel di C++ untuk digunakan dengan API pengesahan tamu, gunakan langkah-langkah berikut. Contoh ini menggunakan komputer virtual rahasia Linux. Untuk Windows, lihat instruksi build untuk Windows.

  1. Masuk ke VM rahasia Anda menggunakan alamat IP publiknya.

  2. Kloning aplikasi Linux sampel.

  3. Pasang paket build-essential. Paket ini menginstal semua yang diperlukan untuk mengkompilasi aplikasi sampel.

sudo apt-get install build-essential
  1. Instal paket di bawah ini.
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. Unduh paket pengesahan.

  2. Instal paket pengesahan. Pastikan untuk mengganti <version> dengan versi yang Anda unduh.

sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
  1. Setelah paket di atas diinstal, gunakan langkah-langkah di bawah ini untuk membangun dan menjalankan aplikasi.
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
  1. Untuk mengonversi token web ke JSON, gunakan langkah-langkah di bawah ini.
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 .

Langkah berikutnya