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

如何不存储凭据连接KeyVault?Web应用安全连接方案问询

使用应用身份集成安全连接KeyVault的方案及凭据保护策略

当然可以用集成安全方式以应用身份连接KeyVault,这也是现在Azure生态里最推荐的做法,能彻底摆脱硬编码或手动管理敏感凭据的麻烦。我结合实际项目经验给你梳理几个可行方案:

一、首选方案:Azure托管标识(Managed Identity)

这是最省心的方式,完全不需要你管理任何凭据(App Id、密钥这类都不用),Azure会自动为你的应用生成并维护身份凭证。

两种托管标识类型

  • 系统分配托管标识:和你的Web应用(比如App Service、Function App)绑定,生命周期和应用一致——删除应用时标识也会被自动删除。适合单个应用独立使用的场景。
  • 用户分配托管标识:是一个独立的Azure资源,可以被多个应用共享。适合需要跨应用统一身份权限的场景。

配置步骤(以App Service为例)

  1. 在Azure门户中找到你的App Service,进入「标识」选项卡,启用系统分配/用户分配标识。
  2. 打开目标KeyVault的「访问策略」,添加新策略:选择刚才创建的托管标识,授予它所需的最小权限(比如Get、List密钥/机密/证书,绝对不要给超出需求的权限)。
  3. 代码中使用Azure.Identity库的DefaultAzureCredential自动获取身份,无需硬编码凭据:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

var keyVaultUrl = "https://your-vault-name.vault.azure.net/";
var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential());
// 读取机密
var secret = await client.GetSecretAsync("your-secret-name");

本地调试适配

DefaultAzureCredential会自动适配本地开发环境,优先使用你本地Azure CLI登录的账户、Visual Studio/VS Code里的Azure账户身份,所以本地调试也不用配置任何敏感信息,非常方便。

二、其他备选凭据保护方案(如果无法使用托管标识)

如果因为环境限制不能用托管标识,也有办法降低凭据泄露风险:

  • 用环境变量存储凭据:绝对不要把App Id和密钥硬编码到代码或配置文件里,而是在部署环境(比如App Service的「配置」-「应用程序设置」)中设置环境变量,代码通过读取环境变量获取凭据。虽然还是要管理凭据,但至少避免了代码泄露带来的风险。
  • 自动化凭据轮换:在Azure AD中为应用注册开启自动凭据轮换,Azure会定期生成新的密钥并废弃旧密钥,同时你可以通过Azure AD Graph或Microsoft Graph API让应用自动获取新凭据,减少长期使用同一密钥的泄露风险。
  • 结合Azure App Configuration:把KeyVault的机密引用到App Configuration中,应用从App Configuration读取配置,而App Configuration通过托管标识访问KeyVault。这样应用完全不用直接和KeyVault交互,进一步隔离敏感操作。

关于你提到的「加密配置元素」

加密配置确实能提升安全性,但你会面临加密密钥的存储难题——如果加密密钥存在代码或配置里,还是会有泄露风险;如果把加密密钥也存在KeyVault,那又绕回了最初的问题:怎么安全访问KeyVault?所以相比之下,托管标识方案从根源上解决了凭据管理的问题,比手动加密配置更可靠。

内容的提问来源于stack exchange,提问作者Chris B. Behrens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:59:22