Şablonlardaki gizli dizileri yönetme

Tamamlandı

Dağıtım sırasında parametre olarak güvenli bir değer (parola gibi) geçirirken, değeri bir Azure Key Vault'tan alabilirsiniz.

Parametre dosyanızda Key Vault'a ve gizli diziye başvurun.

Yalnızca anahtar kasası kimliğine başvurduğunuz için değer asla açığa çıkmaz.

Key Vault, dağıttığınız kaynak grubundan farklı bir abonelikte bulunabilir.

Key Vault ve gizli dizi dağıtma

Key Vault ve gizli dizi oluşturmak için Azure CLI veya PowerShell kullanın.

Resource Manager dağıtımından bu Key Vault içindeki gizli dizilere erişmek için, EnabledForTemplateDeployment Key Vault özelliğinin true olması gerekir.

Azure CLI’yı kullanma

Aşağıdaki kod parçacığı, Azure CLI kullanarak Key Vault ve gizli diziyi nasıl dağıtabileceğinize ilişkin bir örnektir:

keyVaultName='{your-unique-vault-name}'
resourceGroupName='{your-resource-group-name}'
location='centralus'
userPrincipalName='{your-email-address-associated-with-your-subscription}'

# Create a resource group
az group create --name $resourceGroupName --location $location

# Create a Key Vault
az keyvault create \
  --name $keyVaultName \
  --resource-group $resourceGroupName \
  --location $location \
  --enabled-for-template-deployment true
az keyvault set-policy --upn $userPrincipalName --name $keyVaultName --secret-permissions set delete get list

# Create a secret with the name, vmAdminPassword
password=$(openssl rand -base64 32)
echo $password
az keyvault secret set --vault-name $keyVaultName --name 'vmAdminPassword' --value $password

Gizli diziye erişimi etkinleştirme

EnabledForTemplateDeployment Key Vault özelliğini true olarak ayarlamak dışında, şablonu dağıtan kullanıcının Key Vault kapsamı için izni olmalıdırMicrosoft.KeyVault/vaults/deploy/action.

Kaynak grubu ve Key Vault da dahil. Sahip ve Katkıda Bulunan rolleri bu erişimi verir.

Key Vault'u oluşturursanız sahibi siz olursunuz, dolayısıyla doğal olarak izniniz olur.

Ancak, Key Vault farklı bir abonelik altındaysa, Key Vault'un sahibi erişim vermelidir.

Statik kimlikli bir gizli diziye başvurma

Anahtar Kasasına şablonda değil parametre dosyasında başvurulur.

Aşağıdaki görüntüde parametre dosyasının gizli diziye nasıl başvurduğunu ve bu değeri şablona nasıl geçirdiği gösterilmektedir.

Diagram showing the illustration of the flow of a secret during template deployment. The parameter file references the secret from the template and passes that value to the template.

Aşağıdaki şablon, yönetici parolası içeren bir SQL veritabanı dağıtır.

Parola parametresi güvenli bir dizeye ayarlanır. Ancak şablon, bu değerin nereden geldiğini belirtmez:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "adminLogin": {
      "type": "string"
    },
    "adminPassword": {
      "type": "securestring"
    },
    "sqlServerName": {
      "type": "string"
    }
  },
  "resources": [
    {
      "name": "[parameters('sqlServerName')]",
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2015-05-01-preview",
      "location": "[resourceGroup().location]",
      "tags": {},
      "properties": {
        "administratorLogin": "[parameters('adminLogin')]",
        "administratorLoginPassword": "[parameters('adminPassword')]",
        "version": "12.0"
      }
    }
  ],
  "outputs": {
  }
}

Artık önceki şablon için bir parametre dosyası oluşturabilirsiniz. Parametre dosyasında, şablondaki parametrenin adıyla eşleşen bir parametre belirtin.

Parametre değeri için Key Vault'tan gizli diziye başvurun. Anahtar Kasası'nın kaynak tanımlayıcısını ve gizli anahtarın adını geçirerek gizli diziye başvurursunuz.

Key Vault gizli dizisinin aşağıdaki parametre dosyasında zaten bulunması gerekir ve kaynak kimliği için statik bir değer sağlarsınız.

Bu dosyayı yerel olarak kopyalayın ve abonelik kimliğini, kasa adını ve SQL sunucusu adını ayarlayın:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "adminLogin": {
            "value": "exampleadmin"
        },
        "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "/subscriptions/<subscription-id>/resourceGroups/examplegroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
              },
              "secretName": "examplesecret"
            }
        },
        "sqlServerName": {
            "value": "<your-server-name>"
        }
    }
}

Şablonu dağıtmanız ve parametre dosyasını şablona geçirmeniz gerekir.

Daha fazla bilgi için Azure Key Vault'un dağıtım sırasında güvenli parametre değerlerini geçirmesini sağlayın.

Bu web sayfasında dinamik kimliğe sahip bir gizli diziye başvuru için ayrıntılar da vardır.