将应用程序权限限制为特定 Exchange Online 邮箱

想要限制对特定邮箱的应用访问权限的管理员可以使用 New-ApplicationAccessPolicy PowerShell cmdlet 创建应用程序访问策略。 本文介绍配置访问控制的基本步骤。 这些步骤特定于Exchange Online资源,不适用于其他 Microsoft Graph 工作负载。

背景

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

重要

默认情况下,已向以下数据集授予 应用程序权限的应用 可以访问组织中的所有邮箱:

  • 日历
  • 联系人
  • 邮件
  • 邮箱设置

管理员可以配置应用程序访问策略,以限制对特定邮箱的应用访问。

在某些情况下,管理员可能希望将应用限制为仅特定邮箱,而不是组织中所有Exchange Online邮箱。 管理员可以通过将邮箱放入启用邮件的安全组来标识允许访问的邮箱集。 然后,管理员可以通过创建应用程序访问策略来访问该组,将第三方应用访问权限限制为仅这组邮箱。

支持的权限和其他资源 部分中所述,应用程序访问策略限制已授予策略支持的任何 Microsoft Graph 或 Exchange Web Services 权限范围的应用的邮箱访问。

配置应用程序访问策略

若要配置应用程序访问策略并限制应用程序权限的范围:

  1. 连接到 Exchange Online PowerShell。 有关详细信息,请参阅连接到 Exchange Online PowerShell

  2. 标识应用的客户端 ID 和启用邮件的安全组,以限制应用的访问。

    • 在“Microsoft Entra 管理中心应用注册”页中标识应用的应用程序 (客户端 ) >ID。
    • 创建新的启用邮件的安全组,或使用现有安全组并标识改组的电子邮件地址。
  3. 创建应用程序访问策略。

    运行以下命令,替换 AppIdPolicyScopeGroupIdDescription的参数。

    New-ApplicationAccessPolicy -AppId e7e4dbfc-046f-4074-9b3b-2ae8f144f59b -PolicyScopeGroupId EvenUsers@contoso.com -AccessRight RestrictAccess -Description "Restrict this app to members of distribution group EvenUsers."
    
  4. 测试新建的应用程序访问策略。

    运行以下命令,替换 Identity 的参数,并 AppId

    Test-ApplicationAccessPolicy -Identity user1@contoso.com -AppId e7e4dbfc-046-4074-9b3b-2ae8f144f59b
    

    此命令的输出指示应用是否有权访问 User1 的邮箱。

注意

对应用程序访问策略的更改可能需要超过 1 小时才能在 Microsoft Graph REST API 调用中生效,即使 Test-ApplicationAccessPolicy 显示正面结果也是如此。

支持的权限和其他资源

管理员可以使用 ApplicationAccessPolicy cmdlet 来控制授予以下任一Microsoft Graph 应用程序权限或 Exchange Web Services 权限的应用的邮箱访问。

Microsoft Graph应用程序权限:

  • Mail.Read
  • Mail.ReadBasic
  • Mail.ReadBasic.All
  • Mail.ReadWrite
  • Mail.Send
  • MailboxSettings.Read
  • MailboxSettings.ReadWrite
  • Calendars.Read
  • Calendars.ReadWrite
  • Contacts.Read
  • Contacts.ReadWrite

Exchange Web 服务权限范围: full_access_as_app

有关配置应用程序访问策略的详细信息,请参阅适合于 New-ApplicationAccessPolicy 的 PowerShell cmdlet 参考

处理 API 错误

当 API 调用访问因所配置的应用程序访问策略而遭拒时,你可能会遇到以下错误。

{
    "error": {
        "code": "ErrorAccessDenied",
        "message": "Access to OData is disabled.",
        "innerError": {
            "request-id": "2f038156-cf40-403d-8e46-831fe42a8229",
            "date": "2019-05-24T10:16:21"
        }
    }
}

如果应用Microsoft Graph API 调用返回此错误,请与组织的 Exchange Online 管理员协作,确保应用有权访问邮箱资源。