Aracılığıyla paylaş


Öğ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.

Resource Manager şablonunun anahtar kasasıyla tümleştirmesini gösteren diyagram

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:

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

Şablonun adlı keyVaultIdbir çı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 $keyVaultNamekullandığı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.

  1. Visual Studio Code'da DosyaAç Dosya'yı> seçin.

  2. 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
    
  3. Dosyayı açmak için ’ı 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:

    Şablonu özelleştirmeden önce temel bilgilere sahip olmanız yararlı olur.

  4. Dosya>Farklı Kaydet'i seçin ve dosyanın bir kopyasını yerel bilgisayarınıza azuredeploy.json adıyla kaydedin.

  5. 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.

  1. Visual Studio Code açık değilse azuredeploy.parameters.json dosyasını açın.

  2. 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.

    Anahtar kasası ve Resource Manager şablonu sanal makine dağıtım parametreleri dosyasını tümleştirme

  3. Aşağıdaki değerleri güncelleştirin:

    • adminUsername: Sanal makine yönetici hesabının adı.
    • dnsLabelPrefix: Değeri adlandırın dnsLabelPrefix .

    Ad örnekleri için önceki resme bakın.

  4. Değişiklikleri kaydedin.

Şablonu dağıtma

  1. Cloud Shell oturum açın.

  2. 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.

    dosyayı karşıya Azure portal Cloud Shell

  3. 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.

  4. Ş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.

  1. Azure portalını açın.

  2. Kaynak grupları><YourResourceGroupName>>simpleWinVM'yi seçin.

  3. Üst kısımdaki Bağlan'ı seçin.

  4. 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: