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

Terraform Apply遇Authorization_RequestDenied:AzureAD应用创建失败

问题根因

Azure订阅的Owner权限仅针对Azure资源管理器(ARM)层面的资源(比如VM、存储账户等),而azuread_application属于Azure Active Directory(Azure AD)租户层面的资源,订阅Owner默认没有Azure AD内的应用创建权限。本地运行正常大概率是因为你本地使用的是个人用户身份(比如全局管理员),而非服务主体。

解决步骤
  • 给服务主体分配Azure AD角色
    最简单的方式是给服务主体分配Application Developer角色,该角色允许创建、管理自己的Azure AD应用:

    1. 登录Azure门户,进入「Azure Active Directory」
    2. 左侧菜单选择「角色和管理员」,搜索并进入「Application Developer」角色页面
    3. 点击「添加成员」,选择你的服务主体完成添加
  • 或直接授予应用权限(更精细控制)
    如果不需要完整的开发者角色,可以给服务主体授予Application.ReadWrite.All的应用权限:

    # 给服务主体添加权限
    az ad app permission add --id <你的服务主体ID> --api 00000003-0000-0000-c000-000000000000 --api-permissions 1bfefb4e-e0b5-418b-a88f-73c46d2cc8e9=Role
    # 执行管理员同意(需全局管理员权限操作)
    az ad app permission admin-consent --id <你的服务主体ID>
    
  • 验证CI环境凭证
    确认GitLab CI中配置的服务主体凭证(ARM_CLIENT_ID、ARM_CLIENT_SECRET、ARM_TENANT_ID)和本地测试用的完全一致,避免用错了服务主体。

  • 模拟CI环境验证
    用Azure CLI模拟CI环境的服务主体身份,测试是否能创建AD应用:

    # 以服务主体身份登录
    az login --service-principal -u <client-id> -p <client-secret> --tenant <tenant-id>
    # 尝试创建测试应用
    az ad app create --display-name tf-test-app
    

    如果这个命令报错,说明权限还没配置到位;如果成功,再回到GitLab CI重新执行流水线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:07:40