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

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.

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ı 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ü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 $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 Dosya Aç 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 ardından dosyanın bir kopyasını azuredeploy.json adlı yerel bilgisayarınıza 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ğerini alma işlemi şablon parametre dosyası yapılandırılarak yapılır.

  1. Visual Studio Code'da, henüz açık değilse azuredeploy.parameters.json 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'de 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.

    Azure portalı Cloud Shell karşıya yükleme dosyası

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

  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ı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: