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

使用AZ CLI为应用分配Contributor角色时报identifierUris错误如何解决

报错原因

正在将"Terraform-Cloud"调整为服务主体名称要求的有效URI格式"http://Terraform-Cloud",但identifierUris属性的值必须使用组织的已验证域名或其子域名:'http://Terraform-Cloud'

该报错是因为Azure Entra ID(原Azure AD)要求服务主体的identifierUris属性必须使用租户下已完成验证的域名(包含默认的.onmicrosoft.com后缀域名),你执行的命令中-n "Terraform Cloud"参数会被AZ CLI自动转换为http://Terraform-Cloud作为默认identifierUris,该域名未在你的租户下验证,因此触发权限拦截。

解决方案
  • 方案1:直接使用租户已验证域名构造服务主体名称
    将命令中的-n参数值替换为api://<租户已验证域名>/terraform-cloud格式,示例命令如下:
az ad sp create-for-rbac -n "api://<你租户的已验证域名,例如xxx.onmicrosoft.com>/terraform-cloud" --role Contributor --scopes /subscriptions/<订阅ID> --sdk-auth

注:租户默认的xxx.onmicrosoft.com属于已验证域名,可直接使用

  • 方案2:省略自定义名称参数,由系统自动生成合规服务主体
    如果不需要自定义服务主体的标识符URI,可直接去掉-n参数,系统会自动生成符合规则的服务主体,后续可自行修改显示名称:
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<订阅ID> --sdk-auth
  • 方案3:分步骤创建并指定显示名称
    如果需要保留"Terraform Cloud"作为服务主体的显示名称,可分两步执行命令,避开自动生成非法identifierUris的逻辑:
  1. 先创建服务主体并指定显示名称:
az ad sp create-for-rbac --display-name "Terraform Cloud" --sdk-auth

执行后复制输出的appId值
2. 手动分配Contributor角色:

az role assignment create --assignee <上一步获取的appId> --role Contributor --scope /subscriptions/<订阅ID>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:36:03