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

使用ManagedIdentityCredential访问AzureML模型遇认证失败求助

解决Azure ML中ManagedIdentityCredential的CredentialUnavailableError错误

这个错误的核心原因是ManagedIdentityCredential依赖Azure实例元数据服务(IMDS)获取身份凭证,当代码运行环境未启用托管身份、无法访问IMDS端点时就会触发。以下是针对性的解决步骤:

  • 核对运行环境的托管身份支持情况

    • 若在本地开发环境运行:ManagedIdentityCredential不适用,建议改用DefaultAzureCredential(自动适配CLI登录、环境变量、托管身份等多种认证方式),修改代码如下:
      from azure.ai.ml import MLClient
      from azure.identity import DefaultAzureCredential
      
      credential = DefaultAzureCredential()
      ml_client = MLClient(credential, subscription_id, resource_group, workspace_name)
      print(f'ML Client :', ml_client)
      
      azure = ml_client.models.list()
      for model in azure:
          print(model)
      
    • 若在Azure服务(VM、ACI、App Service等)中运行:
      1. 进入Azure门户对应服务的「标识」页面,确认系统分配身份处于「开启」状态,或已添加用户分配的身份;
      2. 再次核对托管身份的角色分配范围,确保是在目标Azure ML工作区级别授予了「参与者」「机器学习数据科学家」等合适角色。
  • 检查IMDS端点的访问权限
    在Azure服务环境中,执行以下操作排查网络问题:

    • 检查网络安全组(NSG)是否允许出站访问IMDS端点http://169.254.169.254;
    • 若在虚拟网络中,确认私有链接、服务端点配置未拦截IMDS访问;
    • 直接在环境中运行curl http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F,测试是否能正常获取响应,无响应则针对性调整网络配置。
  • 显式指定用户分配的托管身份(若使用)
    如果你采用的是用户分配的托管身份,初始化ManagedIdentityCredential时必须指定其client_id:

    from azure.ai.ml import MLClient
    from azure.identity import ManagedIdentityCredential
    
    # 替换为你的用户分配托管身份的client_id
    credential = ManagedIdentityCredential(client_id="your-managed-identity-client-id")
    ml_client = MLClient(credential, subscription_id, resource_group, workspace_name)
    print(f'ML Client :', ml_client)
    
    azure = ml_client.models.list()
    for model in azure:
        print(model)
    

内容的提问来源于stack exchange,提问作者Nuzli Mohamad Anas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:24:54