Hızlı Başlangıç: ARM şablonu kullanarak Azure Key Vault'tan gizli ayarlama ve alma

Azure Key Vault anahtarlar, parolalar, sertifikalar ve diğer gizli diziler gibi gizli diziler için güvenli bir depo sağlayan bir bulut hizmetidir. Bu hızlı başlangıçta, anahtar kasası ve gizli dizi oluşturmak için bir Azure Resource Manager şablonu (ARM şablonu) dağıtma işlemine odaklanılır.

Azure Resource Manager şablonu projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Şablon deklaratif sözdizimi kullanır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.

Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanmayı biliyorsanız Deploy to Azure düğmesini seçin. Şablon Azure portalında açılır.

Azure'a Resource Manager şablonunu dağıtmak için düğme.

Önkoşullar

Bu makaleyi tamamlamak için:

  • Azure aboneliğiniz yoksa başlamadan önce free hesabı oluşturun.

Şablonu gözden geçir

Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonları...

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "10998800669048245550"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretsObject": {
      "type": "secureObject",
      "metadata": {
        "description": "Specifies all secrets {\"secretName\":\"\",\"secretValue\":\"\"} wrapped in a secure object."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enableRbacAuthorization": true,
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "copy": {
        "name": "secrets",
        "count": "[length(parameters('secretsObject').secrets)]"
      },
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretsObject').secrets[copyIndex()].secretName)]",
      "properties": {
        "value": "[parameters('secretsObject').secrets[copyIndex()].secretValue]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

Şablonda iki Azure kaynağı tanımlanır:

  • Microsoft. KeyVault/vaults: Azure RBAC yetkilendirmesi etkinleştirilmiş (enableRbacAuthorization: true), geçici silme ve temizleme koruması etkinleştirilmiş bir Azure anahtar kasası oluşturun.
  • Microsoft.KeyVault/vaults/secrets: şablona geçirilen secretsObject.secrets dizisi üzerinde yineleme yaparak bir veya daha fazla anahtar kasası gizli anahtarı oluşturma.

Kasa, veri düzlemi yetkilendirmesi için Azure RBAC kullandığından, gizli anahtarlara erişimi erişim ilkelerini yapılandırmak yerine bir Azure rolü atayarak verirsiniz.

daha fazla Azure Key Vault şablon örneği Azure Hızlı Başlangıç Şablonları bulunabilir.

Şablonu dağıt

  1. Azure oturum açmak ve bir şablon açmak için aşağıdaki görüntüyü seçin. Şablon bir anahtar kasası ve bir gizli dizi oluşturur.

    Azure'a Resource Manager şablonunu dağıtmak için düğme.

  2. Aşağıdaki değerleri seçin veya girin. Belirtilmediği sürece varsayılan değeri kullanın.

    • Ubscription: bir Azure aboneliği seçin.

    • Kaynak grubu: Yeni oluştur'u seçin, kaynak grubu için benzersiz bir ad girin ve tamam'ı seçin.

    • Bölge: bir konum seçin. Örneğin Orta ABD.

    • Key Vault Name: key vault için vault.azure.net ad alanında genel olarak benzersiz olması gereken bir ad girin. Dağıtımı bir sonraki bölümde doğrularken bu ada ihtiyacınız olacak.

    • Sku Adı: standart veya premium'ı seçin. Varsayılan değer standarttır.

    • Gizli Bilgiler Nesnesi: oluşturulacak gizli bilgi(leri), secrets dizisini içeren bir JSON nesnesi olarak sağlayın. Örneğin:

      {
        "secrets": [
          {
            "secretName": "adminpassword",
            "secretValue": "<your-secret-value>"
          }
        ]
      }
      

      Gizli Dizi Nesnesi bir secureObject parametre olduğundan, değeri dağıtımdan sonra günlüğe kaydedilmez veya geri döndürülemez.

  3. Gözden geçir + oluştur'u seçin, ardından oluştur'u seçin. Anahtar kasası ve gizli anahtar başarıyla dağıtıldıktan sonra bir bildirim alırsınız.

Şablonu dağıtmak için Azure PowerShell, Azure CLI veya REST API'yi de kullanabilirsiniz. Diğer dağıtım yöntemlerini öğrenmek için bkz . Şablonları dağıtma.

Key Vault RBAC rolü atayın

Bu şablon tarafından oluşturulan anahtar kasası yetkilendirme için Azure RBAC kullanır. Gizli dizilere veri düzlemi üzerinden erişmek için (örneğin, Azure CLI veya Azure PowerShell kullanarak), kendinize uygun bir rol atamanız gerekir.

  1. Microsoft Entra kullanıcı nesne kimliğinizi alın:

    az ad signed-in-user show --query id -o tsv
    
  2. Anahtar kasasında Key Vault Secrets Officer rolünü kendinize atayın:

    echo "Enter your key vault name:" &&
    read keyVaultName &&
    az role assignment create --role "Key Vault Secrets Officer" \
        --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
        --scope $(az keyvault show --name $keyVaultName --query id -o tsv)
    

    Note

    Rol atamalarının yayılması bir veya iki dakika sürebilir.

Dağıtılmış kaynakları gözden geçir.

Anahtar kasasını ve gizli diziyi denetlemek için Azure portalını kullanabilir veya oluşturulan gizli diziyi listelemek için aşağıdaki Azure CLI veya Azure PowerShell betiğini kullanabilirsiniz.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault secret list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

Kaynakları temizle

Key Vault ile ilgili diğer hızlı başlangıç kılavuzları ve öğreticiler bu hızlı başlangıç kılavuzuna dayanır. Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmeyi planlıyorsanız, bu kaynakları yerinde bırakmayı tercih edebilirsiniz. Artık gerekmediğinde, Key Vault ve ilgili kaynakları silen kaynak grubunu silin. Azure CLI veya Azure PowerShell kullanarak kaynak grubunu silmek için:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Note

Kaynak grubu silindiğinde anahtar kasası da silinir, ancak kasa geçici olarak silinmiş bir duruma girer ve saklama süresi (varsayılan olarak 90 gün) için kurtarılabilir durumda kalır. Bu süre boyunca kasa adı küresel olarak rezerve edilir ve temizleme koruması etkin olduğundan kasa süresi dolmadan temizlenemez. Standart anahtar kasalarında geçici olarak silinen kasalar için ücret uygulanmaz. Daha fazla bilgi için, Key Vault geçici silme özelliğine genel bakış bölümüne bakın.

Sonraki Adımlar

Bu hızlı başlangıçta, ARM şablonu kullanarak bir anahtar kasası ve sır oluşturdunuz ve dağıtımı doğruladınız. Key Vault ve Azure Resource Manager hakkında daha fazla bilgi edinmek için aşağıdaki makalelere geçin.