Öğretici: Azure Key Vault'u ARM şablonunuzun dağıtımıyla tümleştirme
Azure Key Vault'tan gizli dizileri almayı ve Bir 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.
Anahtar kasasından güvenli bir değer kullanan 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:
Resource Manager Araçları uzantısı içeren Visual Studio Code. 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. Azure Cloud Shell'i kullanarak PowerShell veya Bash'te aşağıdaki komutu çalıştırabilirsiniz:
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 etkin 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ı için erişim Microsoft.KeyVault/vaults/deploy/action
izni vermelidir. 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.
Aşağıdaki Azure PowerShell betiğini çalıştırmak için Cloud Shell'i açmak için Deneyin'i seçin. 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 buna 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 dizi için varsayılan ad vmAdminPassword'dür. Şablonda sabit kodlanmış.
- Şablonun gizli diziyi almasını sağlamak için anahtar kasası için şablon dağıtımı için Azure Resource Manager'a erişimi etkinleştirme adlı bir erişim ilkesini etkinleştirmeniz gerekir. Bu ilke şablonda etkinleştirilir. 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ünmüş olabilir. Çizgileri birleştirin ve ek 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 Dosya Aç 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 ardından dosyanın bir kopyasını azuredeploy.json adlı yerel bilgisayarınıza 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ğerini alma işlemi şablon parametre dosyası yapılandırılarak yapılır.
Visual Studio Code'da, henüz açık değilse azuredeploy.parameters.json 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
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. Cloud Shell'e hem azuredeploy.json hem de azuredeploy.parameters.json 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ıysanız. Ardından gizli diziyi şablon dağıtımınızda kullandınız. Dağıtım sonrası görevleri gerçekleştirmek için sanal makine uzantılarını kullanmayı öğrenmek için bkz: