Şablonlardaki gizli dizileri yönetme
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.
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.