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

Azure AD应用注册执行角色分配脚本一成功一失败求助

问题分析与解决方案

核心问题

失败的根源是应用注册2通过az ad sp list --display-name $MANAGED_ID_DISPLAY_NAME无法获取到托管标识的Object ID,导致后续角色分配时传入了无效的Principal ID,触发InvalidPrincipalId错误。

排查与修复步骤

1. 补充Azure AD Graph权限

az ad sp list命令依赖Azure AD Graph的Directory.Read.All(Application类型权限),你的两个应用注册当前配置的权限中缺少该权限。应用注册1可能因隐式权限继承能正常执行,但应用注册2无此权限导致读取失败。

  • 给应用注册2添加Directory.Read.All应用权限,并完成管理员同意。

2. 替换更可靠的Object ID获取方式

托管标识属于Azure资源,使用资源层面的命令az identity show替代az ad sp list,无需额外Azure AD权限,仅需订阅/资源组的读取权限即可:

# 替换原有的$objectid获取行
$objectid=$(az identity show --name $MANAGED_ID_DISPLAY_NAME --resource-group $currentEnv.AZ_RESOURCE_GROUP_NAME --query objectId --output tsv)

该命令直接从Azure资源管理器读取托管标识的Object ID,比通过Azure AD服务主体列表查询更精准,也规避了Azure AD权限限制。

3. 验证权限生效状态

  • 确认应用注册2的所有已添加权限都完成了管理员同意(权限列表显示"已授予"状态)。
  • 手动执行az identity list --resource-group $currentEnv.AZ_RESOURCE_GROUP_NAME,验证应用注册2能正常读取资源组内的托管标识列表。

4. 检查托管标识命名准确性

确认$MANAGED_ID_DISPLAY_NAME拼接的名称与实际托管标识的显示名称完全一致,避免因大小写、后缀差异导致查询失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:55:41