拥有API权限的Service Principal无法通过Terraform创建azuread_application
解决Terraform创建Azure AD应用时的403权限不足问题
问题原因
当前使用的服务主体(Service Principal)仅被授予了Directory.Read.All(只读类应用权限)和User.Read(委派权限),这类权限无法支持创建Azure AD应用程序的操作,必须具备对应的写入类权限。
所需权限配置
要让服务主体成功创建Azure AD应用,需为其添加以下任一Microsoft Graph应用权限:
- Application.ReadWrite.All:允许管理所有应用程序注册(权限范围较广,适合需要批量管理应用的场景)
- Application.ReadWrite.OwnedBy:允许创建应用程序,且自动成为该应用的所有者(权限更精细,符合最小权限原则,推荐使用)
操作步骤
- 登录Azure门户,进入Azure Active Directory -> 应用注册,找到目标服务主体
- 切换到API权限页面,点击添加权限
- 选择Microsoft Graph -> 应用权限
- 在权限列表中搜索并勾选所需权限(如
Application.ReadWrite.OwnedBy) - 点击添加权限后,点击授予管理员同意(操作需全局管理员或应用程序管理员权限)
- 等待权限生效(通常1-5分钟)后,重新运行
terraform apply --auto-approve tfplan命令
翻译后的错误信息
已将计划保存至: tfplan 要执行这些操作,请运行以下命令: terraform apply "tfplan" $ terraform apply --auto-approve tfplan > terraform_output.json ╷ │ 错误: 创建 {}: ApplicationsClient.BaseClient.Post(): 意外状态码403,伴随OData错误: Authorization_RequestDenied: 权限不足,无法完成操作。 │ │ 涉及资源 azuread_application_registration.app-test, │ 在 main.tf 第15行,资源 "azuread_application" "app-test" 块中: │ 15: resource "azuread_application" "app-test" { │ │ 创建 {}: ApplicationsClient.BaseClient.Post(): 意外状态码403 │ 伴随OData错误: Authorization_RequestDenied: 权限不足,无法完成操作。 ╵ 清理项目目录和基于文件的变量 00:01 错误: 任务失败: 退出码1
内容的提问来源于stack exchange,提问作者HelmBurger
相关产品推荐
相关产品推荐

