Öğretici: Azure Key Vault'u ARM şablonunuzun dağıtımıyla tümleştirme
Azure anahtar kasasından gizli dizileri almayı ve Azure Resource Manager şablonu (ARM şablonu) dağıtırken gizli dizileri parametre olarak geçirmeyi öğrenin. Parametre değeri hiçbir zaman gösterilmez çünkü yalnızca anahtar kasası kimliğine başvurursunuz. Anahtar kasası gizli dizisine statik kimlik veya dinamik kimlik kullanarak başvurabilirsiniz. Bu öğreticide statik kimlik kullanılır. Statik kimlik yaklaşımıyla şablon dosyasında değil şablon parametre dosyasında anahtar kasasına başvurursunuz. Her iki yaklaşım hakkında daha fazla bilgi için bkz. Dağıtım sırasında güvenli parametre değeri geçirmek için Azure Key Vault kullanma.
Kaynak dağıtım sırasını ayarlama öğreticisinde bir sanal makine (VM) oluşturursunuz. VM yöneticisi kullanıcı adını ve parolasını sağlamanız gerekir. Parolayı sağlamak yerine, parolayı bir Azure anahtar kasasında önceden depolayabilir ve ardından şablonu özelleştirerek dağıtım sırasında parolayı anahtar kasasından alabilirsiniz.
Bu öğretici aşağıdaki görevleri kapsar:
- Anahtar kasası hazırlama
- Hızlı başlangıç şablonunu açma
- Parametre dosyasını düzenleme
- Şablonu dağıtma
- Dağıtımı doğrulama
- Kaynakları temizleme
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Bir anahtar kasasından güvenli değer kullanan bir Learn modülü için bkz. Gelişmiş ARM şablonu özelliklerini kullanarak karmaşık bulut dağıtımlarını yönetme.
Önkoşullar
Bu makaleyi tamamlamak için gerekenler:
Visual Studio Code ve Resource Manager Araçları uzantısı. Bkz. Hızlı Başlangıç: Visual Studio Code ile ARM şablonları oluşturma.
Güvenliği artırmak için VM yönetici hesabı için oluşturulan bir parola kullanın. PowerShell veya Bash'te aşağıdaki komutu çalıştırmak için Azure Cloud Shell kullanabilirsiniz:
openssl rand -base64 32
Daha fazla bilgi edinmek için komutunu çalıştırarak
man openssl rand
el ile açılan sayfayı açın.Oluşturulan parolanın VM parola gereksinimlerini karşıladığını doğrulayın. Her Azure hizmetinin parola gereksinimleri farklıdır. VM parola gereksinimleri için bkz. VM oluştururken parola gereksinimleri nelerdir?.
Anahtar kasası hazırlama
Bu bölümde, şablonunuzu dağıtırken gizli diziyi alabilmeniz için bir anahtar kasası oluşturup gizli dizi eklersiniz. Anahtar kasası oluşturmanın birçok yolu vardır. Bu öğreticide arm şablonu dağıtmak için Azure PowerShell kullanacaksınız. Bu şablon iki işlem yapar:
- özelliği etkinleştirilmiş bir anahtar kasası
enabledForTemplateDeployment
oluşturur. Şablon dağıtım işleminin anahtar kasasında tanımlanan gizli dizilere erişebilmesi için önce bu özelliğin true olması gerekir. - Anahtar kasasına bir gizli dizi ekler. Gizli dizi, VM yönetici parolasını depolar.
Not
Sanal makine şablonunu dağıtan kullanıcı olarak, anahtar kasasının Sahibi veya Katkıda Bulunanı değilseniz, Sahip veya Katkıda Bulunan size anahtar kasası izni vermelidir Microsoft.KeyVault/vaults/deploy/action
. Daha fazla bilgi için bkz. Dağıtım sırasında güvenli bir parametre değeri geçirmek için Azure Key Vault kullanma.
Aşağıdaki Azure PowerShell betiği çalıştırmak için Deneyin'i seçerek Cloud Shell açın. Betiği yapıştırmak için kabuk bölmesine sağ tıklayın ve yapıştır'ı seçin.
$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$upn = Read-Host -Prompt "Enter your user principal name (email address) used to sign in to Azure"
$secretValue = Read-Host -Prompt "Enter the virtual machine administrator password" -AsSecureString
$resourceGroupName = "${projectName}rg"
$keyVaultName = $projectName
$adUserId = (Get-AzADUser -UserPrincipalName $upn).Id
$templateUri = "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorials-use-key-vault/CreateKeyVault.json"
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -keyVaultName $keyVaultName -adUserId $adUserId -secretValue $secretValue
Write-Host "Press [ENTER] to continue ..."
Önemli
- Kaynak grubu adı proje adıdır, ancak sonuna rg eklenmiştir. Bu öğreticide oluşturduğunuz kaynakları temizlemeyi kolaylaştırmak için, sonraki şablonu dağıtırken aynı proje adını ve kaynak grubu adını kullanın.
- Gizli dizinin varsayılan adı vmAdminPassword'dür. Şablonda sabit kodlanmıştır.
- Şablonun gizli diziyi almasını sağlamak için anahtar kasası için şablon dağıtımı için Azure Resource Manager erişimini etkinleştir adlı bir erişim ilkesini etkinleştirmeniz gerekir. Bu ilke şablonda etkindir. Erişim ilkesi hakkında daha fazla bilgi için bkz. Anahtar kasalarını ve gizli dizileri dağıtma.
Şablonun adlı keyVaultId
bir çıkış değeri vardır. Öğreticinin devamında gizli dizi değerini almak için gizli dizi adıyla birlikte bu kimliği kullanacaksınız. Kaynak kimliği biçimi:
/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>
Kimliği kopyalayıp yapıştırdığınızda, kimlik birden çok satıra bölünebilir. Çizgileri birleştirin ve fazladan boşlukları kırpın.
Dağıtımı doğrulamak için aynı kabuk bölmesinde aşağıdaki PowerShell komutunu çalıştırarak gizli diziyi düz metin olarak alın. Komut, önceki PowerShell betiğinde tanımlanan değişkenini $keyVaultName
kullandığından yalnızca aynı kabuk oturumunda çalışır.
$secret = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name "vmAdminPassword"
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
$secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
} finally {
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Write-Output $secretValueText
Şimdi bir anahtar kasası ve bir gizli dizi hazırladınız. Aşağıdaki bölümlerde, dağıtım sırasında gizli diziyi almak için var olan bir şablonu nasıl özelleştirebileceğiniz gösterilmektedir.
Hızlı başlangıç şablonunu açma
Azure Hızlı Başlangıç Şablonları, ARM şablonları için bir depodur. Sıfırdan bir şablon oluşturmak yerine örnek bir şablon bulabilir ve bunu özelleştirebilirsiniz. Bu öğreticide kullanılan şablona Basit bir Windows VM dağıtma adı verilir.
Visual Studio Code'da DosyaAç Dosya'yı> seçin.
Dosya adı kutusuna aşağıdaki URL'yi yapıştırın:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Dosyayı açmak için Aç’ı seçin. Senaryo, Öğretici: Bağımlı kaynaklarla ARM şablonları oluşturma bölümünde kullanılan senaryoyla aynıdır. Şablon altı kaynak tanımlar:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
Şablonu özelleştirmeden önce temel bilgilere sahip olmanız yararlı olur.
Dosya>Farklı Kaydet'i seçin ve dosyanın bir kopyasını yerel bilgisayarınıza azuredeploy.json adıyla kaydedin.
Aşağıdaki URL'yi açmak için 1-3 arası adımları yineleyin ve dosyayı azuredeploy.parameters.json olarak kaydedin.
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json
Parametre dosyasını düzenleme
Statik kimlik yöntemini kullanarak şablon dosyasında herhangi bir değişiklik yapmanız gerekmez. Gizli dizi değeri alınırken şablon parametre dosyası yapılandırılır.
Visual Studio Code açık değilse azuredeploy.parameters.json dosyasını açın.
parametresini şu şekilde güncelleştirin
adminPassword
:"adminPassword": { "reference": { "keyVault": { "id": "/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>" }, "secretName": "vmAdminPassword" } },
Önemli
değerini
id
, önceki yordamda oluşturduğunuz anahtar kasasının kaynak kimliğiyle değiştirin.secretName
, vmAdminPassword olarak sabit kodlanmıştır. Bkz . Anahtar kasası hazırlama.Aşağıdaki değerleri güncelleştirin:
adminUsername
: Sanal makine yönetici hesabının adı.dnsLabelPrefix
: Değeri adlandırındnsLabelPrefix
.
Ad örnekleri için önceki resme bakın.
Değişiklikleri kaydedin.
Şablonu dağıtma
Cloud Shell oturum açın.
Sol üst köşedeki PowerShell'i veya Bash'i (CLI için) seçerek tercih ettiğiniz ortamı seçin. Geçiş yaptığınızda kabuğun yeniden başlatılması gerekir.
Dosyaları karşıya yükle/indir'i seçin ve sonra da Karşıya Yükle'yi seçin. hem azuredeploy.json hem de azuredeploy.parameters.json dosyasını Cloud Shell yükleyin. Dosyayı karşıya yükledikten sonra, dosyanın başarıyla karşıya yüklendiğini doğrulamak için komutunu ve
cat
komutunu kullanabilirsinizls
.Şablonu dağıtmak için aşağıdaki PowerShell betiğini çalıştırın.
$projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault" $location = Read-Host -Prompt "Enter the same location that is used for creating the key vault (i.e. centralus)" $resourceGroupName = "${projectName}rg" New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -TemplateFile "$HOME/azuredeploy.json" ` -TemplateParameterFile "$HOME/azuredeploy.parameters.json" Write-Host "Press [ENTER] to continue ..."
Şablonu dağıtırken, anahtar kasasında kullandığınız kaynak grubunu kullanın. Bu yaklaşım, kaynakları temizlemenizi kolaylaştırır çünkü iki yerine yalnızca bir kaynak grubunu silmeniz gerekir.
Dağıtımı doğrulama
Sanal makineyi başarıyla dağıttıktan sonra, anahtar kasasında depolanan parolayı kullanarak oturum açma kimlik bilgilerini test edin.
Azure portalını açın.
Kaynak grupları><YourResourceGroupName>>simpleWinVM'yi seçin.
Üst kısımdaki Bağlan'ı seçin.
RDP Dosyasını İndir'i seçin ve ardından anahtar kasasında depolanan parolayı kullanarak sanal makinede oturum açmak için yönergeleri izleyin.
Kaynakları temizleme
Azure kaynaklarınıza artık ihtiyacınız kalmadığında, kaynak grubunu silerek dağıttığınız kaynakları temizleyin.
$projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
Sonraki adımlar
Bu öğreticide, Azure anahtar kasanızdan bir gizli dizi aldı. Ardından şablon dağıtımınızda gizli diziyi kullandınız. Dağıtım sonrası görevleri gerçekleştirmek için sanal makine uzantılarını kullanmayı öğrenmek için bkz: