如何移除Security Administrator角色?报错无法删除自身全局管理员角色
问题:如何移除Security Administrator角色?
我通过Java API分配Security Administrator角色的代码如下,该操作可正常执行:
final DirectoryObject dirObjectCreated = Objects.requireNonNull(graphClient .directoryRoles(ROLE_TEMPLATE_ID + "=" + SECURITY_ADMIN_TEMPLATE_ID) .members() .references()) .buildRequest() .post(directoryObject);
但尝试移除该角色时,收到错误提示:
Removing self from Global Administrator built-in role is not allowed.
我使用的移除请求信息:
- 请求方法:DELETE
- 请求URL:
https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/y-RKG-FULL-ID
查阅官方文档说明:
为避免租户出现无全局管理员的情况,系统禁止用户删除自己的全局管理员角色,但允许移除自身的其他角色。
我的访问令牌包含以下权限:
"roles": [ "Mail.ReadWrite", "Domain.ReadWrite.All", "Group.Read.All", "Directory.Read.All", "User.Read.All", "Domain.Read.All", "RoleManagement.ReadWrite.Directory", "Application.Read.All" ]
解决建议
- 验证目标分配ID:先调用
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/{id}接口,确认你要删除的y-RKG-FULL-ID对应的角色模板ID是否为Security Administrator的(模板ID:62e90394-69f5-4237-9190-012177145e10),避免误删全局管理员的角色分配记录。 - 切换操作账号:如果当前操作的是你自己的账号,且该账号同时拥有全局管理员权限,换另一个全局管理员账号来执行移除操作,绕过系统对“删除自身全局管理员角色”的限制。
- 排查角色关联:检查你的账号是否通过组继承或其他方式获得了全局管理员权限,导致系统误判你要删除的是全局管理员角色。
内容的提问来源于stack exchange,提问作者nav
相关产品推荐
相关产品推荐

