如何限制MS Graph API Files.ReadWrite.All应用权限至指定共享文件夹?
核心逻辑:把应用当作虚拟用户处理
Azure AD中使用应用权限的应用,本质是一个服务主体(Service Principal),完全可以类比你在Box里用的服务账号——只要把指定共享文件夹共享给这个服务主体,应用就只能访问该文件夹,和普通用户的权限逻辑一致。
具体实现步骤
1. 定位应用的服务主体
- 登录Azure AD门户,进入「企业应用」,找到你注册的应用对应的条目(注意:这里不是「应用注册」里的条目,而是自动创建的企业应用实例)
- 记录下这个企业应用的显示名称,后续共享文件夹时会用到
2. 共享目标文件夹给服务主体
- 打开OneDrive或SharePoint的目标共享文件夹
- 点击「共享」,在输入框中输入刚才记录的企业应用名称,找到对应的服务主体
- 分配需要的权限(比如「编辑」或「查看」),完成共享操作
3. 可选:用安全组批量管理(推荐)
如果需要给多个应用或多个文件夹批量配置权限,可以用安全组中转:
- 创建一个Azure AD安全组
- 把应用的服务主体添加到这个安全组中
- 把目标共享文件夹共享给该安全组,设置对应权限
- 后续调整权限时,只需修改安全组的成员或共享设置即可
关键注意事项
- 应用权限只需申请
Files.ReadWrite.All(或对应所需的权限)即可,实际访问范围由文件夹的共享权限控制,不用找额外的权限限制策略 - 调用Graph API时,确保使用应用权限的令牌(通过客户端凭据流获取),访问文件夹时直接指定该文件夹的ID或路径即可
- 测试时尝试访问未共享的文件夹,会返回「权限不足」的错误,验证限制生效
邮件权限补充
邮件部分你已经找到的访问策略限制方法,和文件权限控制逻辑完全独立,各自配置即可。
内容的提问来源于stack exchange,提问作者Qiuzman
相关产品推荐
相关产品推荐

