是否可以在ARM模板中的Function App配置中指定KeyVault引用?
我有一个ARM模板,它将为每个环境部署具有不同部署参数的Azure Function应用。目前,我正在通过参数中的引用来检索环境中的秘密:
{
"storageAccountSecret": {
"reference": {
"keyVault": {
"id": "/subscriptions/plan-id-goes-here/resourceGroups/group-name-goes-here/providers/Microsoft.KeyVault/vaults/vault-name-goes-here"
},
"secretName": "super-secret-name-goes-here"
}
}
然后我在ARM模板中引用该参数,即资源->属性-> siteConfig-> appSettings
{
"name": "AzureWebJobsStorage",
"value": "[parameters('storageAccountSecret')]"
},
以上工作正常!但是,我们的团队还会定期旋转我们的密钥,从而更改秘密的基本价值。使用我目前的方法,直到再次运行ARM模板,此功能应用程序配置上的秘密才会更新。
我的解决方法是在配置中使用KeyVault参考,并在配置中使用以下语法。
@Microsoft.KeyVault(SecretUri=https://vault-name-goes-here.vault.azure.net/secrets/super-secret-name-goes-here/)
现在,当基础机密更改时,我的功能App仍将获取最新机密。但是,这需要我手动执行。我希望仅使用ARM模板即可达到相同的效果,这可能吗? ?
答案 0 :(得分:1)
正是出于这个原因,您应该始终在Key Vault中使用完整的URL来访问您的机密-包括版本。参见here。
在Key Vault中更新机密时,您将获得一个新URL。一旦更新了应用程序设置(通过您的ARM模板或任何其他方式),该功能将重新启动。这是更新应用程序设置时的理想行为。