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

Azure中如何保护连接字符串?已启用MSI,如何配置App Service连接字符串

在Azure中使用托管标识从Key Vault管理App Service连接字符串

嘿,我来一步步帮你搞定这个事儿——用托管标识从Key Vault拉取密码,配置到App Service的连接字符串里,全程不用暴露明文密码,安全又省心。先确认下你已经搞定的前置条件没问题:

  • 你的App Service已经启用了系统分配或用户分配的托管标识
  • 该托管标识已经被授予Key Vault的Secret Get权限(不管是通过Access Policies还是RBAC的Key Vault Secrets User角色都可以)
  • 你需要的密码已经作为Secret存储在Key Vault中

方法一:通过Azure Portal配置

这是最直观的操作方式,适合手动配置:

  1. 打开你的App Service资源,在左侧导航栏找到配置 > 应用程序设置
  2. 滚动到连接字符串区域,点击新建连接字符串
  3. 填写连接字符串的名称(比如MyDbConnection,和你代码里要读取的名称对应)
  4. 在值的输入框里,使用Key Vault引用格式,二选一即可:
    • 完整URI格式:@Microsoft.KeyVault(SecretUri=https://<你的KeyVault名称>.vault.azure.net/secrets/<Secret名称>)
    • 简化格式(同订阅/资源组下更方便):@Microsoft.KeyVault(VaultName=<KeyVault名称>;SecretName=<Secret名称>)

    小贴士:如果需要固定使用某个版本的Secret,可以加上;SecretVersion=<版本号>,不过一般建议不加,这样会自动获取最新版本

  5. 根据你的连接字符串类型选择对应的类型(比如SQL Server、Custom等)
  6. 点击确定,再点击页面顶部的保存,App Service会自动重启加载新配置

方法二:用Azure CLI自动化配置

如果需要批量操作或者集成到脚本里,用CLI更高效:
运行下面的命令,替换掉括号里的参数:

az webapp config connection-string set \
  --name <你的App Service名称> \
  --resource-group <资源组名称> \
  --connection-string-type Custom \
  --settings MyDbConnection="@Microsoft.KeyVault(SecretUri=https://<你的KeyVault名称>.vault.azure.net/secrets/<Secret名称>)"

注意:--connection-string-type要根据实际情况修改,比如SQL Azure数据库用SQLAzure,自定义连接字符串用Custom


验证配置是否生效

配置完后可以快速验证下:

  1. 打开App Service的高级工具,点击Go进入Kudu控制台
  2. 在Kudu里选择环境,找到Connection Strings区域,会看到你的连接字符串条目,App Service会在运行时自动解析Key Vault的Secret值(Kudu里不会显示明文,只会显示引用标识,但应用运行时能拿到实际值)
  3. 也可以在Kudu的控制台里测试:
    • Windows应用:运行 echo %CONNECTIONSTRINGS_MyDbConnection%
    • Linux应用:运行 echo $CONNECTIONSTRINGS_MyDbConnection
      (测试用即可,生产环境不要打印敏感信息)

一些关键注意事项

  • Key Vault防火墙设置:如果你的Key Vault启用了网络防火墙,一定要在Key Vault的网络设置里,开启信任的Microsoft服务选项,这样App Service才能通过托管标识访问Key Vault;或者也可以添加App Service的出站IP地址,但前者更灵活
  • 权限排查:如果遇到访问被拒绝的错误,先检查托管标识的权限:要么在Key Vault的Access Policies里确认给了Get权限,要么在RBAC角色里确认分配了Key Vault Secrets User
  • 代码读取方式:和普通连接字符串完全一样!比如.NET里用Configuration.GetConnectionString("MyDbConnection"),Java里用System.getenv("CONNECTIONSTRINGS_MyDbConnection"),不需要额外写Key Vault访问代码,App Service会自动帮你解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:13:01