首页 > 解决方案 > 在 Azure WebApp 中使用环境变量引用时如何解决机密

问题描述

我有一个引用 Azure KeyVault 中的机密的环境变量:

  {
    "name": "SECRET",
    "value": "@Microsoft.KeyVault(SecretUri=https://keyvault_name.vault.azure.net/secrets/secret_name/)",
    "slotSetting": false
  }

这是在我的 web api 解决方案中的 Startup.cs 上加载的:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddOptions<Secret>().Configure(o => o.ClearText = Configuration["SECRET"]);

        services.AddControllers();
    }

秘密是如何解决的?每次期权调用都解决了吗?例如,每次它被注入到我的构造函数中,或者当环境变量被重新加载并加载到Configuration对象中时它是否被解析?

我问的原因是每次调用保险库都会花费一点点,但这一切都加起来了。

更新

我已将此作为问题添加到 github:https ://github.com/MicrosoftDocs/azure-docs/issues/44064#event-2855607916

标签: azureasp.net-coreinversion-of-controlazure-keyvault

解决方案


根据我的测试,Azure Web 应用程序将在两种情况下从 Azure 密钥保管库加载数据:

  1. 你向 Azure 提交了应用程序设置修改请求。
  2. 重新启动 Azure Web 应用程序。

您的机密将缓存在 Azure 应用服务中。您可以尝试这种情况:在 Azure KeyVault 中添加引用机密的环境变量后,在 Azure Key Vault 中创建具有不同值的新版本,您会发现 Azure Web 应用程序中的值不会改变:仍然是旧版本.

在您重新启动 Web 应用程序或再次修改门户上的应用程序设置之前,它不会更改。

我还检查了我的 Azure 密钥保管库的指标,我调用了我的 Azure Web 应用程序来检索我在应用程序设置中配置的秘密大约 10 次,但是我的 Azure 密钥保管库在那个时间点的访问指标是 0。但是当我重新启动时我的 Web 应用程序,Azure 密钥保管库的访问指标将增加。

希望能帮助到你 。


推荐阅读