拥有Azure订阅Contributor权限无法创建Service Principal的权限咨询
创建Azure服务主体(Service Principal)所需权限说明
你遇到的报错:
ServicePrincipalsClient.BaseClient.Post(): unexpected status 403 with OData error: Authorization_RequestDenied: When using this permission, the backing application of the service principal being created must in the local tenant
核心原因是订阅的Contributor权限仅针对Azure资源管理,不覆盖Azure AD目录层面的操作,而创建服务主体属于Azure AD范畴的操作,所以会触发403权限拒绝。
一、所需权限分类
目录角色(直接赋予用户的AD角色)
- 应用程序管理员:拥有Azure AD中应用注册、服务主体的完全管理权限,适合需要全面管控的场景。
- 云应用程序管理员:权限范围略小于前者,仅管理云应用相关的注册和服务主体。
Microsoft Graph权限(API层面权限)
Application.ReadWrite.All:这是Microsoft Graph的权限,并非Azure订阅角色——你找不到它是因为混淆了Azure订阅资源角色和Azure AD目录权限。要配置这个权限,需在Azure AD的「应用注册」或「企业应用」中操作,或通过Microsoft Graph API授予。Application.ReadWrite.OwnedBy:如果只需要管理自己创建的应用注册和服务主体,这个权限足够,限制更小,无需全局级别的AD权限。
二、报错额外说明
报错里的backing application of the service principal being created must in the local tenant提示,还可能是因为你尝试创建关联到其他租户应用的服务主体,这种跨租户操作需要特殊权限,默认本地租户的Contributor没有该权限。请确保你是在当前租户内创建新的应用注册(创建应用注册时会自动生成对应的服务主体),而非引用外部租户的应用。
三、权限获取方式
要获得上述权限,需要Azure AD的全局管理员或特权角色管理员协助:
- 分配目录角色:登录Azure门户进入「Azure Active Directory」→「角色和管理员」,搜索并分配「应用程序管理员」或「云应用程序管理员」角色给你。
- 授予Graph权限:在「Azure Active Directory」→「应用注册」中找到对应应用,添加
Application.ReadWrite.All或Application.ReadWrite.OwnedBy权限,并完成管理员同意流程。
内容的提问来源于stack exchange,提问作者Metro
相关产品推荐
相关产品推荐

