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

Azure Function Python时间触发器访问Key Vault认证错误求解

问题成因

DefaultAzureCredential 会按固定顺序尝试从当前环境的多个凭证源获取认证令牌,本地运行时你本地已登录Azure CLI/VS Code Azure插件/本地Azure PowerShell,所以可以正常拿到凭证。部署到Azure Function后自动认证生效的前提是你为Function开启了托管标识,未开启的情况下托管标识凭证源不可用,同时Function运行环境默认没有配置其他凭证源(比如环境变量、CLI登录信息等),所有凭证源尝试全部失败就会抛出你遇到的报错。

解决方案
  • 步骤1:为Function App开启系统分配托管标识
    进入Azure门户找到你的Function App实例,左侧菜单栏选择「身份验证」,切换到「系统分配」标签页,将状态调整为「开启」后保存,Azure会自动为该Function创建专属的托管身份实体。
  • 步骤2:为托管标识授予Key Vault访问权限
    打开你要访问的Key Vault实例,根据Key Vault的权限配置模式选择对应操作:
    1. 访问策略模式:左侧菜单选择「访问策略」→ 点击「创建」→ 机密权限栏勾选「获取」权限 → 下一步到主体配置页,搜索你刚才开启托管标识的Function App名称,选中对应主体 → 完成创建并保存访问策略。
    2. Azure RBAC模式:左侧菜单选择「访问控制(IAM)」→ 点击「添加角色分配」→ 选择「Key Vault 机密用户」角色 → 下一步到主体配置页,搜索并选中Function的托管标识 → 完成分配。

如果你需要多个资源共用同一个身份,也可以使用用户分配托管标识:提前创建用户分配托管标识后,在Function的「身份验证」页「用户分配」标签页绑定该标识,代码初始化凭证时指定对应客户端ID即可:

credential = DefaultAzureCredential(managed_identity_client_id="你的用户分配托管标识客户端ID")
  • 步骤3:重新部署你的Function代码即可正常运行,原有代码逻辑无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:15:00