azure - 在 Azure WebApp 中使用环境变量引用时如何解析 secret

标签 azure asp.net-core inversion-of-control azure-keyvault

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

  {
    "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();
    }

这个 secret 是如何解决的?每次期权调用都会解决这个问题吗?例如,每次它被注入(inject)到我的构造函数中,或者当环境变量被解析并加载到 Configuration 对象中时它是否被解析?

我问这个问题的原因是每次调用金库都会花费一点点,但加起来就会增加。

更新

我已将其添加为 github 上的问题:https://github.com/MicrosoftDocs/azure-docs/issues/44064#event-2855607916

最佳答案

根据我的测试,Azure Web 应用程序将在两种情况下从 Azure Key Vault 加载数据:

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

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

除非您重新启动网络应用程序或再次修改门户上的应用程序设置,否则它不会更改。

我还检查了我的 Azure key 保管库的指标,我调用我的 Azure Web 应用程序来检索我在应用程序设置中配置的 key 大约 10 次,但当时我的 Azure key 保管库的访问指标为 0。但是当我重新启动 Web 应用程序时,Azure Key Vault 的访问指标将会增加。

希望有帮助。

关于azure - 在 Azure WebApp 中使用环境变量引用时如何解析 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59163074/

相关文章:

c# - 尝试诊断 Azure ASP.NET Core WebAPI 应用程序中的内存泄漏

asp.net-mvc - 您可以使用 IOC 容器将依赖项注入(inject)自定义 WebViewPage 的构造函数吗?

c# - 在不使用任何类型的情况下加载许多托管 DLL 是否不好?

azure - 视频索引器 [更新与 Azure 媒体服务的连接]

azure - HDInsight 和 Azure 表存储

c# - .NET Core HttpClient - 避免自动重定向?

c# - 在 MVC 程序中调用 Web API

c# - CaSTLe Windsor - 获取正在解析的根组件类型

mysql - 在Azure下哪里可以运行mysql命令行来修复 "The used command is not allowed with this MySQL version (1148)"

asp.net-core - CoreWCF 基本身份验证 - .NET 6