Hızlı Başlangıç: ARM şablonuyla gizli VM dağıtma
Azure gizli VM'sini hızla oluşturmak için Azure Resource Manager şablonu (ARM şablonu) kullanabilirsiniz. Gizli VM'ler, VM bellek şifrelemesi ve yalıtımı elde etmek için HEM AMD SEV-SNP tarafından yedeklenen AMD işlemcilerde hem de Intel TDX tarafından yedeklenen 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 login
Azure aboneliğinizi ayarlayın. değerini abonelik tanımlayıcınızla değiştirin
<subscription-id>
. Ö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 ($region
belirtin. Ö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ölgesi tarafından hangi VM ürünlerinin kullanılabilir olduğu.
$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 gizli şifrelemesi olmamasını seçinVMGuestStateOnly
. İ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
.NonPersistedTPM
Güvenlik türü için şablon dosyasında altında en az "apiVersion" kullanın: "2023-09-01"Microsoft.Compute/virtualMachines
.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 login
Azure aboneliğinizi ayarlayın. değerini abonelik tanımlayıcınızla değiştirin
<subscription-id>
. Önkoşulları karşılayan bir abonelik kullandığınızdan emin olun.az account set --subscription <subscription-id>
Kiracıya gizli VM Hizmet Sorumlusu
Confidential VM Orchestrator
vermeBu 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 anahtar kasanızı 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 $region
Premium SKU ile bir anahtar kasası örneği 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-protection
Bu anahtar kasasında sahip rolünüz olduğundan emin olun.
ve
release
anahtar kasasınaget
izin verinConfidential VM Orchestrator
.$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 anahtar kasası kullanmak istemiyorsanız bunun yerine Azure Key Vault Yönetilen HSM oluşturabilirsiniz.
Azure Key Vault Yönetilen HSM'yi sağlamak ve etkinleştirmek için Azure Key Vault Yönetilen HSM oluşturmak için hızlı başlangıcı izleyin.
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 true
Yönetilen HSM'ye izin verin
Confidential VM Orchestrator
.$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.
Ana sürüm ilkesini hazırlayın ve yerel diskinize indirin.
Yeni bir anahtar oluşturun.
$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 --policy "@.\skr-policy.json"
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.kid
DES ARM şablonu () kullanarak Disk Şifreleme Kümesi (
deployDES.json
DES) 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=$region
DES 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.
Ana sürüm ilkesini hazırlayın ve yerel diskinize indirin.
Yeni anahtarı oluşturun.
$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 --policy "@.\skr-policy.json"
Oluşturduğunuz anahtar hakkında bilgi edinin.
$encryptionKeyURL = ((az keyvault key show --hsm-name $hsm --name $KeyName) | ConvertFrom-Json).key.kid
DES dağıtma.
$desName = <name of DES> az disk-encryption-set create -n $desName ` -g $resourceGroup ` --key-url $encryptionKeyURL
DES'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.