アプリケーションのアクセス許可を Exchange Online の特定のメールボックスに制限する

管理者は、アプリのアクセスを特定のメールボックスに制限するために、PowerShell コマンドレット New-ApplicationAccessPolicy を使用して、アプリケーション アクセス ポリシーを作成できます。 この記事では、アクセス制御の基本的な構成手順について説明します。 この手順は Exchange Online のリソースに固有のものであり、その他の Microsoft Graph のワークロードには適用できません。

背景

一部のアプリは、ユーザーの代理としてではなく、独自の ID を使用して Microsoft Graph を呼び出します。 通常、これに該当するものは、サーバーで実行される、サインインしているユーザーが存在しないバックグラウンド サービスやデーモン アプリです。 こうしたアプリは、認証のために OAuth 2.0 クライアント資格情報付与フローを使用し、アプリケーションのアクセス許可によって構成されています。これにより、そうしたアプリは既定で Exchange Online の組織内の すべて のメールボックスにアクセスできるようになります。 たとえば、アプリケーションのアクセス許可 Mail.Read により、サインインしているユーザーなしで、すべてのメールボックスのメールをアプリで読み取れるようになります。

重要

既定では、次のデータ セットに対するアプリケーションアクセス許可が付与されているアプリは、organization内のすべてのメールボックスにアクセスできます。

  • 予定表
  • 連絡先
  • メール
  • メールボックス設定

管理者はアプリケーション アクセス ポリシーを構成して、アプリのアクセスを特定のメールボックスに制限することができます。

管理者がアプリを特定のメールボックスだけに制限し、組織内の Exchange Online メールボックスを すべて制限するわけではない シナリオもあります。 管理者は、メールが有効になっているセキュリティ グループに入れて、アクセスを許可するメールボックスのセットを識別できます。 その後、管理者は、そのグループにアクセスするためのアプリケーション アクセス ポリシーを作成することで、サード パーティ製アプリのアクセスを、そのメールボックスのセットのみに制限できます。

以下の サポートされているアクセス許可と追加リソース セクションで詳しく説明されますが、アプリケーション アクセス ポリシーでは、ポリシーでサポートされている Microsoft Graph のアクセス許可のスコープまたは Exchange Web サービスのアクセス許可のスコープのいづれかが付与されているアプリのメールボックスへのアクセスを制限します。

アプリケーション アクセス ポリシーの構成

アプリケーション アクセス ポリシーを構成して、アプリケーションのアクセス許可のスコープを制限するには、次の操作を実行します。

  1. Exchange Online PowerShell に接続します。 詳細については、「Exchange Online PowerShell への接続」を参照してください。

  2. アプリのアクセスを制限するアプリのクライアント ID とメールが有効なセキュリティ グループを特定します。

    • [Microsoft Entra 管理センター >アプリの登録] ページでアプリのアプリケーション (クライアント) ID を特定します。
    • メールが有効な新しいセキュリティ グループを作成するか既存のグループを使用して、そのグループの電子メール アドレスを特定します。
  3. アプリケーション アクセス ポリシーを作成します。

    次のコマンドを実行します。ただし、AppId の引数、PolicyScopeGroupId の引数、および Description の引数は置き換えてください。

    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. 新しく作成したアプリケーション アクセス ポリシーをテストします。

    次のコマンドを実行します。ただし、AppId の引数および Identity の引数は置き換えてください。

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

    このコマンドの出力は、アプリが User1 のメールボックスにアクセスできるかどうかを示します。

注:

アプリケーション アクセス ポリシーの変更は、正の結果が表示された場合 Test-ApplicationAccessPolicy でも、Microsoft Graph REST API 呼び出しで有効にされるまでに 1 時間以上かかることがあります。

サポートされるアクセス許可と追加のリソース

管理者は、ApplicationAccessPolicy コマンドレットを使用して、次の Microsoft Graph のアプリケーションのアクセス許可または Exchange Web サービスのアクセス許可のいずれかが付与されているアプリによるメールボックスへのアクセスを制御できます。

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

アプリケーション アクセス ポリシーの構成の詳細については、PowerShell コマンドレット リファレンスの New-ApplicationAccessPolicyの項目を参照してください。

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 管理者と協力して、メールボックス リソースにアクセスするためのアクセス許可をアプリに付与してください。