通过MS Graph向AAD Group添加用户的权限问题咨询
可行实现方案
不需要授予全局的GroupMember.ReadWrite.All应用权限,用Microsoft Graph的资源特定同意(RSC)能力就能实现需求,完全符合最小权限原则,不会出现应用可操作租户内任意组的安全风险。
推荐方案:使用组级RSC权限
组级RSC应用权限Member.ReadWrite.Group仅允许应用对单个被授权的组执行成员读写操作,对租户内其他组没有任何访问权限。你当前使用的应用已经是目标组的所有者,不需要全局租户管理员介入即可完成配置:
- 提前准备3个关键标识
- 应用注册对应的服务主体对象ID:在Azure AD「企业应用」页面找到对应应用即可查看
- 目标AAD组的对象ID
- Microsoft Graph固定应用ID:
00000003-0000-0000-c000-000000000000
- 给应用绑定目标组的RSC权限
调用Graph接口创建权限授权,请求示例:POST https://graph.microsoft.com/v1.0/groups/{目标组对象ID}/permissionGrants Content-Type: application/json { "clientAppId": "你的应用注册的客户端ID", "clientId": "你的应用服务主体对象ID", "permission": "Member.ReadWrite.Group", "permissionType": "Application", "resourceAppId": "00000003-0000-0000-c000-000000000000" } - 正常通过客户端凭证流获取access token,调用添加成员接口即可
添加成员的请求示例:POST https://graph.microsoft.com/v1.0/groups/{目标组对象ID}/members/$ref Content-Type: application/json { "@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/{待添加用户的对象ID}" }
权限安全验证
配置完成后可做两项校验,确认安全边界生效:
- 对目标组的成员增、删、查、改操作可正常返回2xx状态码,功能正常
- 尝试操作租户内其他组的成员信息,接口会返回403无权限错误,说明权限严格限定在目标组范围内,不存在全局越权风险
注意事项
组所有者身份不会默认给应用开放组成员的应用级操作权限:默认情况下,组所有者权限仅对带用户登录上下文的委托权限场景生效,纯应用凭证调用的场景下,必须显式授权对应范围的权限,否则接口会直接返回403。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

