Да, вы можете использовать ключевые секретные хранилища в шаблонах ARM, но это можно сделать только двумя способами.Секреты хранилища ключей упоминаются в шаблонах ARM следующим образом:
"sslCertData": {
"reference": {
"keyVault": {
"id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
},
"secretName": "[parameters('keyVaultSslCertDataSecretName')]"
}
}
Однако эту ссылку можно использовать только в файле parameters.json
.
Первый способ использования хранилища ключей включает создание шаблона с параметром для секретных данных:
"sslCertData": {
"type": "securestring"
}
Затем создание файла parameters.json
, содержащего указанное хранилище ключей и секретное имяссылка и развертывание шаблона с файлом параметров из командной строки:
New-AzResourceGroupDeployment `
-ResourceGroupName $resourceGroupName `
-TemplateUri <The Template File URI> `
-TemplateParameterFile <The Parameter File>
Второй способ - использовать родительский шаблон или шаблон «оболочки», который развертывает дочерний шаблон там, где вы хотите использовать секрет.
В родительском шаблоне вы должны развернуть этот ресурс:
{
"type": "Microsoft.Resources/deployments",
"name": "childTemplate",
"apiVersion": "2017-06-01",
"properties": {
"mode": "incremental",
"templateLink": {
"uri": "[variables('child-template-url')]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"sslCertData": {
"reference": {
"keyVault": {
"id": "[resourceId(parameters('keyVaultSubscriptionId'), parameters('keyVaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
},
"secretName": "[parameters('keyVaultSslCertDataSecretName')]"
}
}
}
}
}
Параметры, передаваемые в дочерний шаблон, используются для создания файла параметров.Так же, как и в первом методе, мы используем файл шаблона и файл параметров, чтобы иметь доступ к секретам хранилища ключей, но мы можем развернуть его из портала, а не из командной строки.