是否可以将来自客户 Azure 门户的 Microsoft Graph API 的某些路由列入黑名单?

问题描述

Microsoft Graph API 中的某些资源范围过于敏感,例如 Mail.Send,无法通过整个公司作为应用程序权限授予。

  • 发送邮件%include 'parameters.sas'; data ... set ...; where date >= "&cycle_start_date"D; *resolve parameter as part of date literal; ... title "Cycle starts: &cycle_start_date"; proc print data=...; * title in output shows human readable part of date literal; run; 允许您冒充某人发送电子邮件(非常敏感)
  • 发送消息:POST /users/{id | userPrincipalName}/sendMail 允许您发送订单发送电子邮件,而无权修改它(不太敏感)

是否有办法通过 Azure 门户中的企业应用程序中的策略 来强制向 Microsoft Graph API 发出的某些请求发送 403(或其他任何内容),以确保敏感路由无法通过被外部服务使用?或者可以简单地安装在客户的 Azure 中的一种 Microsoft Graph API 代理?或者 Azure 中的一个简单的应用服务可以处理简单的检索令牌并在 Microsoft Graph API 上使用它?

解决方法

参见图表文档中的 Scoping application permissions to specific Exchange Online mailboxes

某些应用使用自己的身份而不是代表用户调用 Microsoft Graph。这些通常是在没有登录用户存在的情况下在服务器上运行的后台服务或守护程序应用程序。这些应用程序使用 OAuth 2.0 客户端凭据授予流进行身份验证并配置了应用程序权限,从而使此类应用程序能够访问 Exchange Online 上组织中的所有邮箱。例如,Mail.Read 应用程序权限允许应用程序在没有登录用户的情况下读取所有邮箱中的邮件。

想要限制应用程序访问一组特定邮箱的管理员可以使用 New-ApplicationAccessPolicy PowerShell cmdlet 来配置访问控制。本文介绍了配置应用访问策略的基本步骤。

例如:

New-ApplicationAccessPolicy 
  -AppId e7e4dbfc-046f-4074-9b3b-2ae8f144f59b 
  -PolicyScopeGroupId EvenUsers@contoso.com 
  -AccessRight RestrictAccess 
  -Description "Restrict this app to members of distribution group EvenUsers."