Share via


Hızlı Başlangıç: Azure CLI ile gizli vm oluşturma

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri

Bu hızlı başlangıçta, Azure'da gizli bir sanal makine (gizli VM) dağıtmak için Azure Komut Satırı Arabirimi'ni (Azure CLI) nasıl kullanacağınız gösterilmektedir. Azure CLI, komut satırı veya betikler aracılığıyla Azure kaynakları oluşturmak ve yönetmek için kullanılır.

Önkoşullar

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.

Azure Cloud Shell'i başlatma

Azure Cloud Shell, bu makaledeki adımları çalıştırmak için kullanabileceğiniz ücretsiz bir etkileşimli kabukdur. Yaygın Azure araçları, kabuğa önceden yüklenmiştir ve kabuk, hesabınızla birlikte kullanılacak şekilde yapılandırılmıştır.

Cloud Shell'i açmak için kod bloğunun sağ üst köşesinden Deneyin'i seçmeniz yeterlidir. Cloud Shell'i adresine giderek https://shell.azure.com/bashayrı bir tarayıcı sekmesinde de açabilirsiniz. Kod bloklarını kopyalamak için Kopyala'yı seçin, Cloud Shell'e yapıştırın ve çalıştırmak için Enter tuşuna basın.

CLI'yi yerel olarak yükleyip kullanmayı tercih ediyorsanız, bu hızlı başlangıç için Azure CLI 2.38.0 veya sonraki bir sürümü gerekir. Sürümü bulmak için az--version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Kaynak grubu oluşturma

az group create komutuyla bir kaynak grubu oluşturun. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Aşağıdaki örnek northeurope konumunda myResourceGroup adlı bir kaynak grubu oluşturur:

Not

Gizli VM'ler tüm konumlarda kullanılamaz. Şu anda desteklenen konumlar için bkz. Azure bölgesi tarafından hangi VM ürünlerinin kullanılabilir olduğu.

az group create --name myResourceGroup --location northeurope

Platform tarafından yönetilen anahtar kullanarak Gizli sanal makine oluşturma

az vm create komutuyla bir sanal makine oluşturun.

Aşağıdaki örnek, myVM adlı bir VM oluşturur ve azureuser adlı bir kullanıcı hesabı ekler. --generate-ssh-keys parametresi otomatik olarak bir SSH anahtarı oluşturmak ve bunu varsayılan anahtar konumuna (~/.ssh) yerleştirmek için kullanılır. Bunun yerine belirli bir anahtar kümesini kullanmak için --ssh-key-values seçeneğini kullanın. için sizegizli bir VM boyutu seçin. Daha fazla bilgi için bkz . Desteklenen gizli VM aileleri.

İşletim sistemi diski gizli şifrelemesi olmamasını seçin VMGuestStateOnly . İsterseniz, platform tarafından yönetilen bir anahtarla işletim sistemi diski gizli şifrelemesi de seçebilirsiniz DiskWithVMGuestState . Güvenli Önyükleme varsayılan olarak etkindir, ancak için VMGuestStateOnlyisteğe bağlıdır. Daha fazla bilgi için bkz . güvenli önyükleme ve vTPM. Konakta disk şifreleme ve şifreleme hakkında daha fazla bilgi için bkz. Konakta gizli işletim sistemi disk şifrelemesi ve şifrelemesi.

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 \

VM’yi ve destekleyici kaynakları oluşturmak birkaç dakika sürer. Aşağıdaki örnekte VM oluşturma işleminin başarılı olduğu gösterilmektedir.

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

Daha sonra kullanmak için öğesini not publicIpAddress edin.

Müşteri Tarafından Yönetilen Anahtar kullanarak Gizli sanal makine oluşturma

Gizli bir disk şifreleme kümesi oluşturmak için iki seçeneğiniz vardır: Azure Key Vault veya Azure Key Vault yönetilen Donanım Güvenlik Modülü(HSM) kullanma. Güvenlik ve uyumluluk gereksinimlerinize bağlı olarak iki seçeneği de seçebilirsiniz. Ancak, standart SKU'nun desteklenmediğini unutmayın. Aşağıdaki örnekte Azure Key Vault Premium kullanılır.

  1. Kiracıya gizli VM Hizmet Sorumlusu Confidential VM Orchestrator verin. Bu adım için Genel Yönetici olmanız veya Kullanıcı Erişimi Yönetici istrator RBAC rolüne sahip olmanız gerekir. Aşağıdaki komutları yürütmek için Microsoft Graph SDK'sını yükleyin.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
  1. az keyvault create komutunu kullanarak bir Azure Key Vault oluşturun . Fiyatlandırma katmanı için Premium (HSM destekli anahtarlar için destek içerir) seçeneğini belirleyin. Bu anahtar kasasında sahip rolünüz olduğundan emin olun.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true
  1. ve release anahtar kasasına get izin verinConfidential VM Orchestrator.
$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. az keyvault key create komutunu kullanarak anahtar kasasında bir anahtar oluşturun. Anahtar türü için RSA-HSM kullanın.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
  1. az disk-encryption-set create komutunu kullanarak disk şifreleme kümesini oluşturun. Şifreleme türünü olarak ConfidentialVmEncryptedWithCustomerKeyayarlayın.
$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. az key vault set-policy kullanarak disk şifreleme kümesine anahtar kasasına kaynak erişimi verin.
$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. VM'yi oluşturmak için disk şifreleme kümesi kimliğini kullanın.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
  1. az vm create komutuyla bir sanal makine oluşturun. Müşteri tarafından yönetilen anahtarla işletim sistemi diski gizli şifrelemesi için seçin DiskWithVMGuestState . Güvenli önyüklemenin etkinleştirilmesi isteğe bağlıdır ancak önerilir. Daha fazla bilgi için bkz . güvenli önyükleme ve vTPM. Disk şifrelemesi hakkında daha fazla bilgi için bkz . gizli işletim sistemi disk şifrelemesi.
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 \

VM’yi ve destekleyici kaynakları oluşturmak birkaç dakika sürer. Aşağıdaki örnekte VM oluşturma işleminin başarılı olduğu gösterilmektedir.

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

Daha sonra kullanmak için öğesini not publicIpAddress edin.

Microsoft Azure Doğrulama Örnek Uygulaması aracılığıyla AMD tabanlı CVM'yi Bağlan ve onaylar

Konuk kanıtlama API'leriyle kullanmak üzere C++ dilinde örnek bir uygulama kullanmak için aşağıdaki adımları kullanın. Bu örnekte Linux gizli sanal makinesi kullanılmaktadır. Windows için bkz . Windows için derleme yönergeleri.

  1. Genel IP adresini kullanarak gizli VM'nizde oturum açın.

  2. Örnek Linux uygulamasını kopyalayın.

  3. build-essential paketini yükleyin. Bu paket, örnek uygulamayı derlemek için gereken her şeyi yükler.

sudo apt-get install build-essential
  1. Aşağıdaki paketleri yükleyin.
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. Kanıtlama paketini indirin.

  2. Kanıtlama paketini yükleyin. değerini indirdiğiniz sürümle değiştirdiğinizden <version> emin olun.

sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
  1. Yukarıdaki paketler yüklendikten sonra uygulamayı derlemek ve çalıştırmak için aşağıdaki adımları kullanın.
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
  1. Web belirtecini JSON'a dönüştürmek için aşağıdaki adımları kullanın.
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 .

Sonraki adımlar