You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure WebApp从Azure Key Vault拉取环境变量/配置值

.Net Core 3.1 WebApp 接入Azure Key Vault拉取配置操作步骤

1. 为WebApp开启系统分配托管标识

  • 进入Azure门户中你的WebApp管理页,左侧菜单栏找到「标识」选项
  • 切换到「系统分配」标签页,将状态切换为开启后点击保存,Azure会自动为该WebApp生成一个可在Azure AD中识别的服务主体,后续给Key Vault授权就用这个主体。

2. 配置Key Vault访问权限与存储敏感配置

  • 找到你用来存储凭据的Key Vault实例(没有则新建,建议和WebApp部署在同一区域降低网络延迟)
  • 先在Key Vault左侧菜单找到「访问配置」,权限模型选择「Vault访问策略」即可(新手操作更直观,熟悉RBAC也可以选Azure角色控制模式)
  • 进入「访问策略」页,点击「添加访问策略」:
    • 机密权限只需要勾选获取、列出两个最小权限即可,不要给修改、删除等多余权限
    • 选择主体时,搜索你刚才开启托管标识的WebApp名称,选中后保存访问策略
  • 将之前存在WebApp应用设置里的敏感值,逐个作为机密上传到Key Vault:

    注意:Key Vault不支持机密名称中包含冒号,你的配置层级分隔符:要替换为--作为机密名,比如原配置路径AzureAd:ClientId对应机密名必须设为AzureAd--ClientId,AzureAd:TenantId对应AzureAd--TenantId,ApplicationInsights:InstrumentationKey对应ApplicationInsights--InstrumentationKey,否则配置提供程序无法正确映射到原有配置结构,你代码里读配置的逻辑完全不需要改。

3. 修改项目代码接入Key Vault配置源

  • 首先给你的.Net Core 3.1项目安装两个必需的NuGet包:
Install-Package Azure.Extensions.AspNetCore.Configuration.Secrets
Install-Package Azure.Identity
  • 打开项目根目录的Program.cs,修改CreateHostBuilder方法,在原有配置加载逻辑后追加Key Vault配置源,参考代码如下:
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            // 先加载默认的appsettings、环境变量等配置
            var builtConfig = config.Build();
            // Key Vault地址不是敏感信息,可以直接存在WebApp的应用设置里,配置项Key设为KeyVault:VaultUri,值格式为https://<你的Key Vault名称>.vault.azure.net/
            var keyVaultEndpoint = builtConfig["KeyVault:VaultUri"];
            if (!string.IsNullOrEmpty(keyVaultEndpoint))
            {
                // DefaultAzureCredential会自动识别环境:部署到WebApp时用托管标识鉴权,本地调试时自动读取你本地VS/Azure CLI的登录凭据,不需要硬编码任何访问密钥
                config.AddAzureKeyVault(new Uri(keyVaultEndpoint), new DefaultAzureCredential());
            }
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });
  • 回到WebApp的应用设置页,添加配置项KeyVault:VaultUri,值填你自己的Key Vault地址即可,这个值不是敏感信息,不需要存在Key Vault里。

4. 发布验证

  • 代码修改完成后,重新打包发布到Azure WebApp
  • 发布成功后,把之前存在WebApp应用设置里的敏感配置项(ClientId、TenantId、InstrumentationKey等)全部删除,重启WebApp
  • 调用原有依赖这些配置的接口,如果服务正常运行说明配置生效。如果启动报错,直接去WebApp的日志流排查即可,常见问题基本是两类:一是Key Vault访问策略没配对,WebApp没有机密的读取权限;二是Key Vault里的机密名称没按--分隔的规则命名,导致配置映射失败。

内容的提问来源于stack exchange,提问作者One Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 07:15:32