首页 > 解决方案 > Azure 功能密钥保管库应用程序设置不起作用

问题描述

尝试在我的 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 的功能。

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

标签: azureazure-functionsazure-keyvault

解决方案


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

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

在此处输入图像描述

更多详细信息,您可以参考这篇文章和这个问题


推荐阅读