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

Azure容器实例中WebApi通过托管身份访问Key Vault失败求助

解决Azure容器实例中WebApi通过托管身份访问Key Vault的问题

问题根源

DefaultIdentityNotDefined错误表明容器实例的托管身份未被正确识别或配置,导致DefaultAzureCredential无法找到可用的身份进行认证。

排查与修复步骤

  • 确认容器实例已启用托管身份
    创建容器实例时必须明确启用系统分配或用户分配的托管身份。可通过Azure CLI验证配置:

    az container show --resource-group <你的资源组名> --name <容器实例名称> --query identity
    

    正常输出应包含principalId(系统分配身份)或userAssignedIdentities(用户分配身份)字段,若为空则说明身份未启用,需重新创建或更新容器实例开启身份。

  • 适配DefaultAzureCredential配置
    若使用用户分配的托管身份,需在代码中指定该身份的客户端ID,否则DefaultAzureCredential会默认查找系统分配身份,导致匹配失败。示例代码:

    var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions
    {
        ManagedIdentityClientId = "<用户分配身份的客户端ID>"
    });
    var secretClient = new SecretClient(new Uri("<你的Key Vault URI>"), credential);
    
  • 验证角色分配的目标身份
    确保Key Vault的Key Vault Reader和Key Vault Secrets User角色是分配给容器实例的托管身份(系统分配的主体ID,或用户分配身份的资源ID/客户端ID),而非容器实例资源本身或其他无关身份。

  • 检查网络访问权限
    若Key Vault启用了防火墙,需将容器实例所在的虚拟网络或公网IP加入允许列表;同时确保容器实例能访问Azure实例元数据服务(IMDS),网络策略不能阻止对169.254.169.254的访问——这是托管身份获取令牌的核心路径。

  • 重启容器实例
    完成身份启用、角色分配等配置变更后,重启容器实例确保配置完全生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:58:13