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

如何在C#项目中无敏感配置访问Azure密钥保管库或Web应用配置?

实用解决方案建议

先厘清敏感信息的边界

  • TenantId:这是Azure AD租户的公开标识,不属于敏感信息,公开它不会有安全风险
  • ClientId(应用注册ID):同样是公开信息,Azure AD应用的ClientId可公开查询,不算敏感数据
  • ClientSecret、证书Thumbprint:这两类是真正的敏感信息,绝对不能提交到源码控制,必须妥善保管

不用在appsettings.json存敏感数据的实现方案

方案1:Azure Web Apps + 托管标识(首推)

直接利用Azure Web Apps自带的系统托管标识,完全不用配置ClientSecret或证书:

  1. 在Azure Portal中给你的Web App开启系统托管标识
  2. 给这个托管标识分配Azure Key Vault的对应访问权限(比如机密读取权限)
  3. 在C#项目中通过Azure.Extensions.AspNetCore.Configuration.Secrets包,直接从Key Vault加载配置,代码示例:
var builder = WebApplication.CreateBuilder(args);
// 自动使用托管标识认证,从Key Vault加载配置
builder.Configuration.AddAzureKeyVault(
    new Uri("https://你的密钥保管库名称.vault.azure.net/"),
    new DefaultAzureCredential());

本地开发时,用Visual Studio登录你的Azure账号,或者通过Azure CLI执行az login,DefaultAzureCredential会自动使用你的开发身份访问Key Vault,本地无需存储任何敏感信息。

方案2:直接使用Azure Web Apps应用配置

如果不需要Key Vault,可直接用Web Apps的内置配置:

  1. 在Azure Portal的Web App配置页面,添加所有敏感配置项(比如数据库连接串、API密钥等)
  2. 项目中直接通过IConfiguration读取这些配置,和读取appsettings.json的方式完全一致
  3. 本地开发时用secrets.json保存敏感项,发布到Azure后,Web Apps的配置会自动覆盖本地配置,源码控制中无需提交任何敏感内容

方案3:本地开发优化技巧

本地开发时,除了secrets.json,还可以这么操作:

  • 使用Visual Studio的用户机密管理器:右键项目→管理用户机密,自动生成secrets.json,该文件默认不会被提交到源码控制
  • 利用环境变量:本地设置好环境变量,IConfiguration会自动读取,且优先级高于appsettings.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:50:34