Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure gizli VM'sini hızla oluşturmak için Azure Resource Manager şablonu (ARM şablonu) kullanabilirsiniz. Confidential VM'ler, VM bellek şifrelemesi ve yalıtımı sağlamak için hem AMD SEV-SNP tarafından desteklenen AMD işlemcilerde hem de Intel TDX tarafından desteklenen Intel işlemcilerde çalışır. Daha fazla bilgi için bkz . Gizli VM'ye Genel Bakış.
Bu öğretici, özel bir yapılandırmayla gizli bir VM'nin dağıtımını kapsar.
Önkoşullar
- Azure aboneliği. Ücretsiz deneme hesaplarının bu öğreticide kullanılan VM'lere erişimi yoktur. Seçeneklerden biri kullandıkça öde aboneliği kullanmaktır.
- Azure CLI'dan dağıtmak istiyorsanız PowerShell'i yükleyin ve Azure CLI'yı yükleyin.
Azure CLI ile gizli VM şablonu dağıtma
platform tarafından yönetilen bir anahtar aracılığıyla isteğe bağlı işletim sistemi diski gizli şifrelemesi olan gizli bir VM şablonu dağıtabilirsiniz.
Azure CLI aracılığıyla arm şablonu kullanarak gizli VM'nizi oluşturmak ve dağıtmak için:
Azure CLI'da Azure hesabınızda oturum açın.
az loginAzure aboneliğinizi ayarlayın.
<subscription-id>öğesini abonelik tanımlayıcınızla değiştirin. Önkoşulları karşılayan bir abonelik kullandığınızdan emin olun.az account set --subscription <subscription-id>Gizli VM'nizin değişkenlerini ayarlayın. Dağıtım adını (
$deployName), kaynak grubunu ($resourceGroup), VM adını ($vmName) ve Azure bölgesini ($regionbelirtin. Örnek değerleri kendi bilgilerinizle değiştirin.Not
Gizli VM'ler tüm konumlarda kullanılamaz. Şu anda desteklenen konumlar için bkz. Azure bölgesine göre hangi VM ürünlerinin kullanılabildiği.
$deployName="<deployment-name>" $resourceGroup="<resource-group-name>" $vmName= "<confidential-vm-name>" $region="<region-name>"Belirttiğiniz kaynak grubu yoksa, bu ada sahip bir kaynak grubu oluşturun.
az group create -n $resourceGroup -l $regionÖzel parametre dosyası ve şablon dosyası içeren bir ARM şablonu kullanarak VM'nizi Azure'a dağıtın.
az deployment group create ` -g $resourceGroup ` -n $deployName ` -u "<json-template-file-path>" ` -p "<json-parameter-file-path>" ` -p vmLocation=$region ` vmName=$vmName
Özel parametre dosyası tanımlama
Azure Komut Satırı Arabirimi (Azure CLI) aracılığıyla gizli bir VM oluşturduğunuzda, özel bir parametre dosyası tanımlamanız gerekir. Özel bir JSON parametre dosyası oluşturmak için:
Azure CLI aracılığıyla Azure hesabınızda oturum açın.
Bir JSON parametre dosyası oluşturun. Örneğin,
azuredeploy.parameters.json.Kullandığınız işletim sistemi görüntüsüne bağlı olarak, örnek Windows parametre dosyasını veya örnek Linux parametre dosyasını parametre dosyanıza kopyalayın.
Parametre dosyasındaki JSON kodunu gerektiği gibi düzenleyin. Örneğin, işletim sistemi görüntü adını (
osImageName) veya yönetici kullanıcı adını (adminUsername) güncelleştirin.Güvenlik türü ayarınızı (
securityType) yapılandırın. İşletim sistemi diski için gizli şifreleme olmaması adınaVMGuestStateOnlyseçin. İsterseniz, platform tarafından yönetilen bir anahtarla işletim sistemi diski gizli şifrelemesi de seçebilirsinizDiskWithVMGuestState. Yalnızca Intel TDX SKU'ları ve Linux tabanlı görüntüler için müşteriler kısa ömürlü vTPM ile dağıtılacak güvenlik türünü seçebilirNonPersistedTPM.NonPersistedTPMgüvenlik türü için, şablon dosyasındaMicrosoft.Compute/virtualMachinesaltında en düşük "apiVersion" olarak "2023-09-01" kullanın.Parametre dosyanızı kaydedin.
Örnek Windows parametre dosyası
Windows tabanlı gizli vm için özel parametre dosyası oluşturmak için bu örneği kullanın.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Windows Server 2022 Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"adminPasswordOrKey": {
"value": "<your password>"
}
}
}
Örnek Linux parametre dosyası
Linux tabanlı gizli vm için özel parametre dosyası oluşturmak için bu örneği kullanın.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmSize": {
"value": "Standard_DC2as_v5"
},
"osImageName": {
"value": "Ubuntu 20.04 LTS Gen 2"
},
"securityType": {
"value": "DiskWithVMGuestState"
},
"adminUsername": {
"value": "testuser"
},
"authenticationType": {
"value": "sshPublicKey"
},
"adminPasswordOrKey": {
"value": <your SSH public key>
}
}
}
Not
osImageName değerini uygun şekilde değiştirin.
Müşteri tarafından yönetilen anahtar aracılığıyla işletim sistemi diski gizli şifrelemesi ile gizli VM şablonu dağıtma
Azure CLI aracılığıyla Azure hesabınızda oturum açın.
az loginAzure aboneliğinizi ayarlayın.
<subscription-id>öğesini abonelik tanımlayıcınızla değiştirin. Önkoşulları karşılayan bir abonelik kullandığınızdan emin olun.az account set --subscription <subscription-id>Kiracıya gizli VM Hizmet Sorumlusunu
Confidential VM OrchestratorverinBu adım için Genel Yönetici olmanız veya Kullanıcı Erişimi Yöneticisi 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"Azure Key Vault'unuzu ayarlayın. Bunun yerine Azure Key Vault Yönetilen HSM'sini kullanma hakkında bilgi için sonraki adıma bakın.
Anahtar kasanız için bir kaynak grubu oluşturun. Anahtar kasası örneğiniz ve gizli VM'niz aynı Azure bölgesinde olmalıdır.
$resourceGroup = <key vault resource group> $region = <Azure region> az group create --name $resourceGroup --location $regionPremium SKU'ya sahip bir anahtar kasası oluşturun ve tercih ettiğiniz bölgeyi seçin. Standart SKU desteklenmez.
$KeyVault = <name of key vault> az keyvault create --name $KeyVault --resource-group $resourceGroup --location $region --sku Premium --enable-purge-protectionBu anahtar kasasında Sahip rolüne sahip olduğunuzdan emin olun.
Confidential VM Orchestratorvegetanahtar kasasınareleaseiçin izin verin.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault set-policy --name $KeyVault --object-id $cvmAgent.Id --key-permissions get release
(İsteğe bağlı) Azure Key Vault kullanmak istemiyorsanız bunun yerine Azure Key Vault Yönetilen HSM oluşturabilirsiniz.
Azure Key Vault Yönetilen HSM’yi oluşturmak için hızlı başlangıç kılavuzunu izleyerek Azure Key Vault Yönetilen HSM’yi oluşturun ve etkinleştirin.
Azure Yönetilen HSM'de temizleme korumasını etkinleştirin. Bu adım, anahtar yayınını etkinleştirmek için gereklidir.
az keyvault update-hsm --subscription $subscriptionId -g $resourceGroup --hsm-name $hsm --enable-purge-protection trueConfidential VM Orchestratoröğesine yönetilen HSM için izinler verin.$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json az keyvault role assignment create --hsm-name $hsm --assignee $cvmAgent.Id --role "Managed HSM Crypto Service Release User" --scope /keys/$KeyName
Azure Key Vault'u kullanarak yeni bir anahtar oluşturun. Bunun yerine Azure Yönetilen HSM'yi kullanma hakkında bilgi için sonraki adıma bakın.
az keyvault key create ile yeni anahtar oluşturma
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --vault-name $KeyVault --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --default-cvm-policyNot
Yeni dağıtımların yapıldığı bölgelerde,
--default-cvm-policybayrağı kullanıldığında MAA (Microsoft Azure Doğrulama) uç noktaları erişilebilir olmayabilir. Geçici bir çözüm olarak, bölgesel MAA uç noktası URL'sini almak için aşağıdaki PowerShell betiğini kullanabilirsiniz:$sub = "<subscription-id>" az account set --subscription $sub $token = Get-AzAccessToken $region = "<region-name>" $url = "https://management.azure.com/subscriptions/$sub/providers/Microsoft.Attestation/Locations/$region/defaultProvider?api-version=2021-06-01" $r = Invoke-WebRequest -Uri $url -Method Get -Headers @{'Authorization' = 'Bearer ' + $token.Token} $d = $r.content | ConvertFrom-Json $d.properties.attestUri<subscription-id>ifadesini Azure abonelik kimliğiniz ile,<region-name>ifadesini de hedef dağıtım bölgesi ile değiştirin.Oluşturduğunuz anahtar hakkında bilgi edinin.
$encryptionKeyVaultId = ((az keyvault show -n $KeyVault -g $resourceGroup) | ConvertFrom-Json).id $encryptionKeyURL= ((az keyvault key show --vault-name $KeyVault --name $KeyName) | ConvertFrom-Json).key.kidDES ARM şablonu () kullanarak Disk Şifreleme Kümesi (
deployDES.jsonDES) dağıtma.$desName = <name of DES> $deployName = <name of deployment> $desArmTemplate = <name of DES ARM template file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $desArmTemplate ` -p desName=$desName ` -p encryptionKeyURL=$encryptionKeyURL ` -p encryptionKeyVaultId=$encryptionKeyVaultId ` -p region=$regionDES dosyasına anahtar erişimi atayın.
$desIdentity= (az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $KeyVault ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
(İsteğe bağlı) Azure Yönetilen HSM'den yeni bir anahtar oluşturun.
az keyvault key create ile yeni anahtar oluşturma
$KeyName = <name of key> $KeySize = 3072 az keyvault key create --hsm-name $hsm --name $KeyName --ops wrapKey unwrapkey --kty RSA-HSM --size $KeySize --exportable true --default-cvm-policyOluşturduğunuz anahtar hakkında bilgi edinin.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kidDES dağıtın.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURLDES'e anahtar erişimi atayın.
$desIdentity=$(az disk-encryption-set show -n $desName -g $resourceGroup --query [identity.principalId] -o tsv) az keyvault set-policy -n $hsm ` -g $resourceGroup ` --object-id $desIdentity ` --key-permissions wrapkey unwrapkey get
Gizli VM'nizi müşteri tarafından yönetilen anahtarla dağıtın.
DES için kaynak kimliğini alın.
$desID = (az disk-encryption-set show -n $desName -g $resourceGroup --query [id] -o tsv)Gizli VM'nizi Intel TDX için bir gizli VM ARM şablonu ve müşteri tarafından yönetilen anahtarla bir dağıtım parametresi dosyası (örneğin,
azuredeploy.parameters.win2022.json) kullanarak dağıtın.$deployName = <name of deployment> $vmName = <name of confidential VM> $cvmArmTemplate = <name of confidential VM ARM template file> $cvmParameterFile = <name of confidential VM parameter file> az deployment group create ` -g $resourceGroup ` -n $deployName ` -f $cvmArmTemplate ` -p $cvmParameterFile ` -p diskEncryptionSetId=$desID ` -p vmName=$vmName
Oluşturma işleminin başarılı olduğundan emin olmak için gizli VM'nize bağlanın.