【问题标题】:Azure functions key vault app settings not workingAzure 功能密钥保管库应用程序设置不起作用
【发布时间】:2019-01-11 12:22:27
【问题描述】:

尝试在我的 Functions v2 应用设置中设置以下内容时我做错了什么。

@Microsoft.KeyVault(SecretUri=<uri>)

在函数内部读取这个,我得到了完整的字符串,而不是我预期的密钥库中的连接字符串。

var config = new ConfigurationBuilder()
                .SetBasePath(context.FunctionAppDirectory)
                .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();

var value = config["cstring"];
var connectionString = Environment.GetEnvironmentVariable("cstring");

log.Info(value); // Prints "@Microsoft.KeyVault(SecretUri=<uri>)"
log.Info(connectionString); // Prints "@Microsoft.KeyVault(SecretUri=<uri>)"

我需要采取更多步骤吗?

作为有权访问密钥库的 MSI 的功能。

多个在线教程使这看起来如此简单且开箱即用。

【问题讨论】:

标签: azure azure-functions azure-keyvault


【解决方案1】:

为 Azure Function 启用 MSI 后,我进入我的密钥保管库并添加了访问策略,以便我的 Azure Function 应用程序有权读取机密。该功能应该适用于 Azure 中托管的所有版本的 Azure Functions。它不会在本地工作。

因此,转到您的 azure Key Vault 并将 MSI 原则添加到其中并授予 Get 机密权限。

更多详情可以参考articleissue

【讨论】:

  • 我还添加了列表权限。然后我不得不等一会儿。今天早上上班,我的天蓝色功能突然起作用了。与星期五相同的部署,但它不起作用。
  • 是的,正如SO thread 所说,这是一个新功能,并且不稳定。我在我的网站上测试并等待几分钟,它也可以工作。
  • 哇,我也遇到了同样的情况。我等了大约半个小时,然后它开始显示价值。谢谢!
  • 嗨,又是我,我犯了和 2 个月前一样的错误。我等了几分钟......然后它开始正常工作。 :D
  • 很高兴为您提供帮助:)
【解决方案2】:

让我补充一下 Joey Cai's answer,这真的很有帮助,上次拯救了我的一天。

在应用程序设置中,我使用了以下设置:

{
    "name": "asset_name",
    "value": "@Microsoft.KeyVault(SecretUri=[KEY_VAULT_URL])",
    "slotSetting": false
}

几个月前启用 MSI 和等待选项后我的工作正常,但今天我需要在几个小时后重新启动 Azure 功能 - 大约半天 - 这有助于解决以下设置的值:

@Microsoft.KeyVault(SecretUri=[KEY_VAULT_URL])

毕竟所有配置都可以正常工作,以便从创建的密钥库中获取值。

在已开发的 Azure Function 中启用 MSI:

  1. 转到平台功能的网络部分身份:

  2. 然后打开系统或分配身份的状态:

我希望这对下次遇到同样问题的人有所帮助,就像我一样。 :)

【讨论】:

  • 在设置策略时,我发现门户网站有点命中注定 - 如果您发现它让您感到悲伤,请尝试命令行 az keyvault set-policy ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2020-12-28
  • 2021-04-02
  • 1970-01-01
相关资源
最近更新 更多