Alıştırma - ARM şablonunuzdaki gizli dizileri yönetme

Tamamlandı

Önceki alıştırmada bir Linux sanal makinesi sağlayan temel bir Azure Resource Manager (ARM) şablonu çalıştırdınız. Bu bölümde de benzer bir süreç izleyeceksiniz.

Ancak bu kez parolayı bir parametre olarak geçirmek yerine Azure Key Vault hizmetinde depolayacaksınız. ARM şablonunun parolaya erişmesini sağlamak için aboneliğinizdeki anahtar kasası gizli dizisine başvuran bir parametre dosyası oluşturacaksınız.

Azure Key Vault’u dağıtma

Dekont

Korumalı alanla ilgili sınırlamalar nedeniyle burada Azure Key Vault’ta anahtar kasasını Azure portalından oluşturacaksınız. Normalde anahtar kasasını için Azure PowerShell’den New-AzKeyVault cmdlet’ini kullanabilirsiniz.

Bir anahtar kasası oluşturun ve dağıtım zamanında erişim izni verin. Yapmak için:

  1. Anahtar kasasının adını tutan bir PowerShell değişkeni oluşturun:

    $KVNAME="tailwind-secrets" + (Get-Random -Count 1 -Maximum 9999999)
    
  2. $KVNAME komutunu çalıştırarak değerini yazdırın:

    $KVNAME
    

    Çıkışınız buna benzer olacaktır (farklı bir rakam görünecektir):

    tailwind-secrets5978564
    

    Bir sonraki adımda kullanacağınız için değeri uygun bir yere kopyalayın.

  3. Korumalı alanı etkinleştirmek için kullandığınız hesapla Azure portalında oturum açın.

  4. Azure portalı menüsünde veya Giriş sayfasında Kaynak oluştur’u seçin.

  5. Arama kutusuna Key Vault yazın.

  6. Listeden Key Vault’u seçin ve anahtar kasasını yapılandırmaya başlamak için Oluştur seçeneğini belirleyin.

  7. Oluşturma bölmesinde şu değerleri belirtin:

    1. Kaynak grubu: Kaynak grubunun adı.
    2. Anahtar kasası adı: değeriniz$KVNAME, örneğin tailwind-secrets5978564.
  8. Gözden geçir ve oluştur’u seçin.

  9. Oluştur’u seçin. Bu işlem bir dakika kadar sürer. Kaynak oluşturulduktan sonra Kaynağa git’i seçin.

  10. Ayarlar altında Erişim Yapılandırması'nı seçin. Şablon dağıtımı için Azure Resource Manager seçeneğini etkinleştirin ve Uygula'yı seçin.

  11. PowerShell oturumunda ConvertTo-SecureString cmdlet'ini çalıştırarak sonucu secretSecureString değişkenine atayın:

    $secretSecureString = ConvertTo-SecureString 'insecurepassword123!' -AsPlainText -Force
    
  12. Anahtar kasasında gizli dizi oluşturmak için aşağıdaki Set-AzKeyVaultSecret komutunu çalıştırın. Gizli dizi insecurepassword123! değeri ile vmPassword olarak adlandırılır:

    $secret = Set-AzKeyVaultSecret -VaultName $KVNAME -Name vmPassword -SecretValue $secretSecureString
    

Parametre dosyasını oluşturma

Bu adımda sanal makinenin adını, yönetici kullanıcı adını ve Key Vault örneği içindeki sanal makine parolasına bir başvuru içeren parametre dosyasını oluşturacaksınız.

Parametreleri şablonlara geçirmek için komut satırını kullanabilirsiniz. Daha önce de belirttiğimiz gibi parametre dosyası, dağıtım sırasında ARM şablonunuza parametre geçirmek için kullanabileceğiniz alternatif bir yöntemdir. Parametre dosyası, Key Vault içindeki gizli dizilere şablonunuzdan erişmenizi sağlar.

  1. Key Vault örneğinin kimliği yazdırmak için aşağıdaki Get-AzKeyVault komutunu çalıştırın:

    Get-AzKeyVault -VaultName $KVNAME | Select-Object -ExpandProperty ResourceId
    

    Çıkış aşağıdakine benzer:

    /subscriptions/7c7df858-93a0-4f38-8990-304c836a4e8d/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
    

    Çıkışı bir sonraki adımda kullanmak üzere not edin.

  2. Visual Studio Code'da azuredeploy.json dosyasının bulunduğu dizinde azuredeploy.parameters.json adlı bir dosya oluşturun.

  3. Aşağıdaki içeriği azuredeploy.parameters.json dosyasına ekleyin:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUsername": {
          "value": "azureuser"
        },
        "vmName": {
          "value": "vm2"
        },
        "adminPasswordOrKey": {
          "reference": {
             "keyVault": {
             "id": ""
             },
             "secretName": "vmPassword"
          }
        }
      }
    }
    
  4. id değerinin (boş dize) yerine bir önceki adımda kopyaladığınız değeri yapıştırın. Ardından dosyayı kaydedin.

Bir Linux sanal makinesi dağıtma

Burada bir önceki alıştırmada dağıttığınız ARM şablonunu dağıtacaksınız. Ancak bu kez Key Vault örneğindeki sanal makine parolasına başvuran parametre dosyasını sağlayacaksınız.

  1. Aşağıdaki New-AzResourceGroupDeployment komutunu çalıştırın:

    New-AzResourceGroupDeployment `
      -TemplateFile "./azuredeploy.json" `
      -TemplateParameterFile "./azuredeploy.parameters.json" `
      -dnsLabelPrefix ("vm2-" + (Get-Random -Count 1 -Maximum 9999999))
    

    Önceki alıştırmada anahtar-değer çiftlerini doğrudan komut satırından belirtmiştiniz. Burada parametre dosyanızı sağlamak için "./azuredeploy.parameters.json" ifadesini kullanacaksınız.

    dnsLabelPrefix, vm2- ve bundan sonra gelen rastgele bir sayı olarak ayarlanır. Bu ifade, DNS adının önceki alıştırmada kullandığınızdan farklı olmasını sağlar.

Dağıtımı doğrulama

Sanal makinenin sağlandığını ve SSH üzerinden bağlantı kurulabildiğini doğrulayın. Yapmak için:

  1. SSH aracılığıyla sanal makineye bağlanmak için Invoke-Expression komutunu çalıştırın:

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    İstendiğinde bağlanmaya devam etmek için girin yes . Ardından yönetici parolasını insecurepassword123!girin.

    Önemli

    Normal kullanımda parolaları güvenli bir şekilde saklamanız gerekir. Parolalardan daha güvenli olan ortak anahtar kimlik doğrulamasını da kullanabilirsiniz.

  2. Sanal makineye SSH bağlantısı kurmak için hostname komutunu çalıştırarak sanal makinenin ana bilgisayar adını yazdırın:

    hostname
    

    VM'nin iç ana bilgisayar adını görürsünüz: vm1

    vm2
    
  3. exit komutunu çalıştırarak SSH oturumunu kapatın.

    exit
    

İyi iş çıkardınız! Dağıtımınızı, Key Vault örneğindeki gizli dizi bilgilerini okuyan bir parametre dosyasını dahil edecek şekilde genişlettiniz.

Azure Key Vault’u dağıtma

Azure Key Vault’ta bir anahtar kasası oluşturun ve sanal makinenin parolasını güvenli gizli dizi olarak ekleyin. Yapmak için:

  1. Anahtar kasası örneğinin adını tutan bir Bash değişkeni oluşturun.

    KVNAME=tailwind-secrets$RANDOM
    

    Anahtar kasası adları benzersiz olmalıdır. $RANDOM bölümü, anahtar kasasının adının sonuna rastgele bir sayı eklenmesini sağlar.

  2. Anahtar kasasını oluşturmak için aşağıdaki az keyvault create komutunu çalıştırın:

    az keyvault create \
      --name $KVNAME \
      --enabled-for-template-deployment true
    

    --enabled-for-template-deployment bağımsız değişkeni, Azure Resource Manager (ARM) şablonunun Key Vault örneğindeki gizli dizileri almasını sağlar.

  3. Anahtar kasasında gizli dizi oluşturmak için aşağıdaki az keyvault secret set komutunu çalıştırın. Gizli dizi insecurepassword123! değeri ile vmPassword olarak adlandırılır:

    az keyvault secret set \
      --vault-name $KVNAME \
      --name vmPassword \
      --value 'insecurepassword123!'
    

Parametre dosyasını oluşturma

Bu adımda sanal makinenin adını, yönetici kullanıcı adını ve Key Vault örneği içindeki sanal makine parolasına bir başvuru içeren parametre dosyasını oluşturacaksınız.

Parametreleri şablonlara geçirmek için komut satırını kullanabilirsiniz. Daha önce de belirttiğimiz gibi parametre dosyası, dağıtım sırasında ARM şablonunuza parametre geçirmek için kullanabileceğiniz alternatif bir yöntemdir. Parametre dosyası, Key Vault içindeki gizli dizilere şablonunuzdan erişmenizi sağlar.

  1. Key Vault örneğinin kimliği yazdırmak için aşağıdaki az keyvault show komutunu çalıştırın:

    az keyvault show \
      --name $KVNAME \
      --query id \
      --output tsv
    

    Çıkış aşağıdakine benzer:

    /subscriptions/7c7df858-93a0-4f38-8990-304c836a4e8d/resourceGroups/<rgn>[resource group name]</rgn>/providers/Microsoft.KeyVault/vaults/tailwind-secrets3020
    

    Çıkışı bir sonraki adımda kullanmak üzere not edin.

  2. Visual Studio Code'da azuredeploy.json dosyasının bulunduğu dizinde azuredeploy.parameters.json adlı bir dosya oluşturun.

  3. Aşağıdaki içeriği azuredeploy.parameters.json dosyasına ekleyin:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "adminUsername": {
          "value": "azureuser"
        },
        "vmName": {
          "value": "vm2"
        },
        "adminPasswordOrKey": {
          "reference": {
             "keyVault": {
             "id": ""
             },
             "secretName": "vmPassword"
          }
        }
      }
    }
    
  4. id değerinin (boş dize) yerine bir önceki adımda kopyaladığınız değeri yapıştırın. Ardından dosyayı kaydedin.

Bir Linux sanal makinesi dağıtma

Burada bir önceki alıştırmada dağıttığınız ARM şablonunu dağıtacaksınız. Ancak bu kez Key Vault örneğindeki sanal makine parolasına başvuran parametre dosyasını sağlayacaksınız.

Şablonu dağıtmak için aşağıdaki az deployment group create komutunu çalıştırın:

az deployment group create \
  --template-file azuredeploy.json \
  --parameters @azuredeploy.parameters.json dnsLabelPrefix="vm2-$RANDOM"

Önceki alıştırmada anahtar-değer çiftlerini --parameters bağımsız değişkeniyle geçirmiştiniz. Burada parametre dosyanızı sağlamak için @azuredeploy.parameters.json ifadesini kullanacaksınız.

dnsLabelPrefix, vm2- ve bundan sonra gelen rastgele bir sayı olarak ayarlanır. Bu ifade, DNS adının önceki alıştırmada kullandığınızdan farklı olmasını sağlar.

Dağıtımı doğrulama

Önceki alıştırmada yaptığınız gibi sanal makinenin sağlandığını ve SSH üzerinden bağlantı kurulabildiğini doğrulayın. Konuyu kısa tutmak için ara adımların bazılarını atlayacağız.

  1. Sanal makinenize SSH ile bağlanmak için aşağıdaki komutu çalıştırın:

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    İstendiğinde bağlanmaya devam etmek için girin yes . Ardından yönetici parolasını insecurepassword123!girin.

  2. Sanal makineye SSH bağlantısı kurmak için hostname komutunu çalıştırarak sanal makinenin ana bilgisayar adını yazdırın:

    hostname
    

    VM'nin iç ana bilgisayar adını görürsünüz: vm2

    vm2
    
  3. exit komutunu çalıştırarak SSH oturumunu kapatın.

    exit
    

İyi iş çıkardınız! Dağıtımınızı, Key Vault örneğindeki gizli dizi bilgilerini okuyan bir parametre dosyasını dahil edecek şekilde genişlettiniz.