在 Azure ARM 模板中使用 Key Vault 引用指定函数应用程序配置

Specify Function App Configuration with Key Vault Reference in Azure ARM Template

有没有办法在我的 ARM 模板中的 Function App 配置中指定 KeyVault 引用?

我有一个 ARM 模板,它将为每个环境部署一个具有不同部署参数的 Azure Function App。目前我正在通过参数中的引用检索我环境中的秘密:

{
"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模板中的参数,resources -> properties -> siteConfig -> appSettings

 {
   "name": "AzureWebJobsStorage",
   "value": "[parameters('storageAccountSecret')]"
 },

以上工作正常!然而,我们的团队也会定期轮换我们的密钥,这会改变秘密的基础价值。使用我目前的方法,在我们再次 运行 ARM 模板之前,此功能应用程序配置的秘密不会更新。

我的解决方法是在配置中使用 KeyVault Reference,在配置中使用以下语法。

@Microsoft.KeyVault(SecretUri=https://vault-name-goes-here.vault.azure.net/secrets/super-secret-name-goes-here/)

现在,当底层秘密发生变化时,我的 App 函数仍将获得最新的秘密。然而,这需要我手动完成。我很想单独使用 ARM 模板实现相同的效果,这可能吗?

正是出于这个原因,您应该始终对 Key Vault 中的机密使用完整 URL - 包括版本。参见 here

当您更新 Key Vault 中的机密时,您会得到一个新的 URL。一旦您更新应用程序设置(通过您的 ARM 模板或任何其他方式),该功能将重新启动。这是更新应用程序设置时所需的行为。