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

Azure托管标识场景:本地.NET应用能否使用用户托管标识访问Key Vault

结论

本地运行的虚拟机上的应用无法直接使用用户托管标识访问Azure Key Vault

原因说明

用户托管标识是Azure平台为Azure原生资源提供的专属身份能力,它的令牌获取逻辑依赖仅Azure内部资源可访问的Azure实例元数据服务(IMDS),你当前的虚拟机部署在本地环境,无法访问该服务,自然没法通过用户托管标识完成认证。

适配你当前场景的替代方案

你已经将所有应用注册到了Azure AD,直接使用应用注册对应的服务主体身份访问Key Vault即可,操作流程如下:

  • 为每个应用的Azure AD应用注册分配Key Vault访问权限,按需二选一即可:
    • 配置Key Vault访问策略:给对应服务主体授予机密/密钥/证书的读、写等必要操作权限
    • 配置Azure RBAC权限:给对应服务主体分配Key Vault Secrets User、Key Vault Crypto User等适配业务需求的内置角色
  • 在.NET应用中集成Azure.IdentitySDK,使用服务主体身份完成认证,参考代码如下:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

// 初始化Key Vault机密客户端
var secretClient = new SecretClient(
    vaultUri: new Uri("https://<你的Key Vault名称>.vault.azure.net/"), // 中国区Azure后缀为.vault.azure.cn
    credential: new ClientSecretCredential(
        tenantId: "<Azure AD租户ID>",
        clientId: "<应用注册的客户端ID>",
        clientSecret: "<应用注册中生成的客户端密钥>"
    )
);

// 读取机密示例
var targetSecret = secretClient.GetSecret("<待读取的机密名称>");
Console.WriteLine(targetSecret.Value.Value);
补充说明

如果后续你将本地虚拟机迁移到Azure IaaS VM中,可直接为Azure VM绑定用户托管标识,无需再维护应用注册的密钥/证书,认证安全性更高,代码层面只需要将ClientSecretCredential替换为DefaultAzureCredential即可,不需要做其他大幅调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:36:04