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

AKS集群托管身份访问Azure SQL数据库认证失败求助

解决AKS托管身份访问Azure SQL的身份未分配问题

错误分析

ManagedIdentityCredential authentication unavailable. The requested identity has not been assigned to this resource.

该错误表明运行Python应用的AKS Pod无法获取指定托管身份(MI)的权限,或身份的分配配置存在疏漏,以下是针对性的排查与解决步骤:

排查与解决步骤

1. 确认托管身份的分配对象与范围

  • 若使用用户分配的托管身份:需确保该身份被直接分配到目标Azure SQL服务器/数据库(而非AKS集群本身),且已授予SQL DB Contributor(或更细粒度的db_datareader/db_datawriter等)角色。
  • 若使用系统分配的AKS集群身份:需确认AKS节点池已关联该身份,且该身份同样被分配到SQL资源的对应权限角色。

2. 验证Pod能否获取托管身份令牌

在运行Python应用的Pod内执行以下命令,测试身份可用性:

curl -H "Metadata: true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F"
  • 若返回包含access_token的JSON,说明身份可正常获取;若返回错误,需检查Pod是否关联了正确的托管身份。

3. 核对Python代码中的Client ID

  • 若使用用户分配的MI:确保代码中传入的client_id是该身份的正确客户端ID(可在Azure门户的托管身份详情页查看)。
  • 若使用系统分配的MI:无需传入client_id,直接使用ManagedIdentityCredential()即可,传入错误ID会导致身份无法匹配。

4. 确认SQL用户与托管身份名称完全匹配

SQL中创建用户的名称必须与Azure AD中托管身份的显示名称完全一致(区分大小写):

-- 替换为你的托管身份真实名称
CREATE USER [Your-Managed-Identity-Name] FROM EXTERNAL PROVIDER;

可在Azure门户的托管身份页面确认名称,避免拼写或大小写错误。

5. 等待RBAC角色分配生效

Azure RBAC角色分配通常需要5-15分钟才能完全生效,若刚完成配置,建议等待一段时间后再测试。

6. 检查AKS工作负载身份配置(推荐方案)

若使用AKS工作负载身份(而非节点池托管身份),需确保:

  • Pod的YAML中添加了正确的注解:
    annotations:
      azure.workload.identity/client-id: "<你的托管身份Client ID>"
    
  • 已创建Federated Identity Credential,将AKS的服务账户与托管身份关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:55:18