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

读取Azure默认凭据失败,请求协助排查解决

问题:Azure DefaultAzureCredential 凭据获取失败

错误信息

DefaultAzureCredential failed to retrieve a token from the included credentials.
04:54:12.161
lrr-data-service-perf-green-x
Attempted credentials:
   EnvironmentCredential: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
   ManagedIdentityCredential: ManagedIdentityCredential authentication unavailable. The requested identity has not been assigned to this resource.
   SharedTokenCacheCredential: Shared token cache unavailable
   VisualStudioCodeCredential: Failed to get Azure user details from Visual Studio Code.
   AzureCliCredential: Azure CLI not found on path
   AzurePowerShellCredential: PowerShell is not installed

相关代码

数据库URL生成逻辑

def __prepare_postgre_db_url(cfg):
    postgres_server_resource_id = cfg["postgres_server_resource_id"]
    db = Vault.get_postgres_creds(postgres_server_resource_id)
    return (
        f"postgresql://{db['username']}:{db['password']}@{db['hostname']}:5432/postgres"
    )

Vault凭据获取逻辑

__vault = DefaultAzureCredential() 
@staticmethod 
def get_postgres_creds(postgres_server_resource_id): 
 client = SecretClient( vault_url=f"https://{postgres_server_resource_id}.vault.azure.net", credential=Vault.__vault)

解决方案

1. 本地开发快速验证

  • 安装Azure CLI,执行 az login 完成账号登录,AzureCliCredential会自动复用该登录会话。
  • 或安装Azure PowerShell,执行 Connect-AzAccount 登录,让AzurePowerShellCredential生效。

2. Azure部署环境(如App Service、VM)

  • 给应用所在的Azure资源分配系统分配/用户分配托管标识。
  • 在Azure Key Vault的访问策略中,添加该托管标识的「机密读取」权限。

3. 非Azure环境/CI/CD场景

  • 设置以下环境变量:
    • AZURE_CLIENT_ID:服务主体的客户端ID
    • AZURE_CLIENT_SECRET:服务主体的密钥
    • AZURE_TENANT_ID:服务主体所属租户ID
  • 确保该服务主体已被授予Key Vault的机密读取权限。

4. Visual Studio Code开发场景

  • 安装Azure Account扩展,打开命令面板(Ctrl+Shift+P)执行Azure: Sign In,登录到目标Azure租户。

代码优化建议

  • 开启日志便于排查凭据获取细节:
from azure.identity import DefaultAzureCredential
import logging

logging.basicConfig(level=logging.DEBUG)
__vault = DefaultAzureCredential(logging_enable=True)
  • 本地开发时可指定仅使用特定凭据(如AzureCliCredential),缩小排查范围:
from azure.identity import AzureCliCredential

__vault = AzureCliCredential()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:05:01