使用服务主体调用New-MgBetaPrivilegedAccessRoleAssignmentRequest遇403错误求助
解决PIM角色分配请求403禁止错误(服务主体)
问题重现
使用PowerShell通过服务主体(Connect-MgGraph -AccessToken $token)连接MS Graph API时,Get-MgBetaPrivilegedAccessResource等简单请求可正常执行,但调用New-MgBetaPrivilegedAccessRoleAssignmentRequest返回403禁止错误:
Status Code: Forbidden
Body:
{
'error': {
'code': 'UnauthorizedAccessException',
'message': 'Attempted to perform an unauthorized operation.',
'innerError': {
'date': '2024-01-26T17:21:09',
'request-id': '96d7652f-4f3e-464b-93c3-699152633546',
'client-request-id': '556a7966-3082-4e9c-ac5a-e12f017f098e'
}
}
}
服务主体已拥有订阅的User Access Admin权限及多项API权限,但相同权限的个人账号执行该命令可成功。
解决方案
- 添加PIM管理员角色:User Access Admin是订阅级权限,但PIM操作需要服务主体在Azure AD PIM中拥有Privileged Role Administrator或Global Administrator角色。在Azure门户的Azure AD Privileged Identity Management中,进入「Azure AD角色」>「角色分配」,给服务主体添加该角色的永久/合格分配。
- 验证Graph API应用权限:确保服务主体的Graph API权限为应用权限(而非委托权限),且包含
PrivilegedAccess.ReadWrite.AzureAD或PrivilegedAccess.ReadWrite.AzureResources(根据操作的是Azure AD角色还是Azure资源角色),并完成管理员同意。 - 检查订阅PIM资源设置:在PIM中进入「Azure资源」>目标订阅>「设置」>「角色设置」,确认目标角色的「分配权限」允许服务主体发起角色分配请求。
- 确认令牌权限范围:执行
Get-MgContext查看当前令牌权限,确保包含所需的PIM权限。若缺失,重新获取令牌时指定scope为https://graph.microsoft.com/.default。 - 尝试GA版本API:Beta API对服务主体可能存在额外限制,若GA版本已支持该操作,切换使用
New-MgPrivilegedAccessRoleAssignmentRequest。
内容的提问来源于stack exchange,提问作者Vincent M
相关产品推荐
相关产品推荐

