使用 VSTS 设置 Azure Function 应用程序设置而不在 Azure 门户中公开

Setting Azure Function app settings with VSTS without exposing in the Azure Portal

我们正在使用 VSTS 构建各种 Azure Web 应用程序并将它们部署到不同的环境。在发布过程中,我们正在对 Web.config 文件执行转换,使用存储在 VSTS 中的变量来处理每个环境的连接字符串等内容。

我们想对 Azure Functions 做类似的事情,但我们遇到了问题。我们发现对 appsettings.json 文件执行转换不起作用。添加的新 key/value 对在 Azure 中不起作用,对现有对的更改未加载到 Azure 中。

我查阅了无数文档,只找到说明 Azure Functions 的应用程序设置必须使用 Azure 门户存储,或在发布过程中使用 PowerShell 脚本设置的文档。然而,这些解决方案随后会向有权访问 Azure 门户的任何人公开连接字符串和其他机密,这不是我们想要的。

如何向 Azure Functions 提供应用程序设置,例如 AzureWebJobsStorage 和 AzureWebJobsDashboard 值,而不在 Azure 门户上公开它们?

However, these solutions then expose connection strings and other secrets to anyone who has access to the Azure Portal, which is not what we want.

这不是一个正确的假设。只有作为该 Function App 的贡献者或管理员的用户才能看到应用程序设置。这些相同的用户可以看到所有已部署的文件,因此如果您在已部署的文件中有秘密,它们同样可见。

与将您的秘密保存在文件中相比,使用应用程序设置的好处是:

  • 应用程序设置秘密和静态加密
  • 您不太可能通过下载已部署的文件而没有意识到它们有秘密而意外泄露秘密。