将服务主体添加为企业应用所有者的权限差异及配置问题
同配置下用户与服务主体权限差异原因
- 权限判定逻辑不同:Azure AD对用户身份和应用服务主体的授权规则有差异。用户被设为企业应用所有者后,所有者身份会直接生效,叠加Directory Reader的读权限后,自然获得该企业应用的全量管理权限,无论是门户操作还是调用API都会认可该所有者权限。而服务主体调用Microsoft Graph API时,默认优先校验你预先分配的API权限,所有者身份不会自动作为管理类操作的授权依据,仅读取类操作会结合Directory Reader角色和所有者身份放行,所以你没配API权限的情况下只能查不能改。
- Directory Reader角色权限边界限制:该角色本身仅具备目录对象的读取权限,用户能实现管理操作完全是叠加了所有者身份的权限,而服务主体的所有者权限无法绕过API权限校验的要求,因此没有对应API权限的情况下无法执行管理操作。
限定应用仅管理指定企业应用的可行性与实现方案
该需求完全可以实现,具体操作如下:
- 给你的应用服务主体分配Microsoft Graph的
Application.ReadWrite.OwnedBy应用权限(不要选委托权限),并为该权限授予租户级管理员同意。该权限的作用范围就是允许应用仅读取、修改它被设为所有者的应用和服务主体对象,没有权限操作租户内其他任何未关联的企业应用,完全符合最小权限要求。 - 确认你已经将目标企业应用的所有者设置为该服务主体,不需要额外分配其他更高权限的目录角色或者Graph API权限,配置完成后该服务主体就只能管理你指定的这一个企业应用。
- 注意不要分配
Application.ReadWrite.All这类全局应用权限,这类权限会允许服务主体管理租户内所有企业应用,不符合你的限定要求。
内容的提问来源于stack exchange,提问作者alfianabdi
相关产品推荐
相关产品推荐

