アプリ同意ポリシーは、アプリが組織内のデータにアクセスするために必要なアクセス許可を管理する方法です。 ユーザーが同意できるアプリを制御し、ユーザーがデータにアクセスする前にアプリが特定の条件を満たしていることを確認するために使用されます。 これらのポリシーは、組織がデータの制御を維持し、信頼できるアプリにのみアクセス権を付与するのに役立ちます。 Microsoft Graph と Microsoft Graph PowerShell を使用すると、アプリ同意ポリシーを表示および管理できます。
この記事では、組み込みおよびカスタムのアプリ同意ポリシーを管理して、どのような場合に同意を許可できるかを制御する方法について説明します。 アプリの同意ポリシーは、カスタム ロールを使用して特定のユーザーまたはグループに割り当てることも、組織内のエンド ユーザーに既定のアプリ同意ポリシーを設定することもできます。
アプリの同意ポリシー セグメント
アプリ同意ポリシーは、1 つ以上の "包含" 条件セットと、0 個以上の "除外" 条件セットで構成されます。 イベントがアプリ同意ポリシーにおいて考慮されるには、"いずれか" の "除外" 条件セットにではなく、"少なくとも" 1 つの "包含" 条件セットに一致している必要があります。 除外と包含は、特定のポリシーの影響を受けるアクターが同意を付与できるかどうかを判断するために使用されます。
アプリの同意ポリシーには、主に次の 3 つの部分があります。
- メタデータ: アプリの同意ポリシーのプロパティは、ID、説明、同意ポリシーの表示名などの情報を保持します。
- 含まれる条件セット: 特定のアプリの同意要求がポリシーを通過させるために 少なくとも 1 つと 一致する必要がある条件セットのコレクション。 このコレクションには、少なくとも 1 つの 条件が設定されている必要があります。 各条件セットには、検証済みの発行元の状態、要求されたアクセス許可など、アプリの同意要求の特性を記述する規則が含まれています。
- 除外された条件セット: 特定のアプリの同意要求が、 渡す条件 と一致しないようにする条件セットのコレクション。 このコレクションは空にすることができます (除外された条件セットを 0 個含めることができます)。 各条件セットには、検証済みの発行元の状態、要求されたアクセス許可など、アプリの同意要求の特性を記述する規則が含まれています。
サポートされている条件
各条件セットは、いくつかの条件で構成されます。 イベントが条件セットに一致するためには、条件セット内の "すべての" 条件が満たされる必要があります。 たとえば、条件セットでは、発行元が検証され、このテナントで作成され、Microsoft Graph の委任された Mail.Read を要求するクライアント アプリケーションが、発行元が検証され、テナントで作成され、openid スコープとプロファイル スコープを要求するクライアント アプリケーションに対する同意要求と一致しない可能性があります。
条件セットには、要求されたアプリまたはアクセス許可の特性を定義するために使用される 1 つ以上のプロパティが含まれます。 プロパティの完全な一覧はこちら にあります。
組み込みの同意ポリシー
すべてのテナントには、すべてのテナントで同じアプリ同意ポリシーのセットが付属しています。 これらの組み込みポリシーの一部は、既存の組み込みディレクトリ ロールで使用されます。 たとえば、microsoft-application-admin
というアプリ同意ポリシーには、アプリケーション管理者とクラウド アプリケーション管理者のロールが、テナント全体にわたる管理者の同意を許可される条件が記述されています。 組み込みポリシーは、カスタム ディレクトリ ロールで使用することも、組織の既定の同意ポリシーを構成することもできます。 これらのポリシーは編集できません。 組み込みポリシーの一覧は次のとおりです。
- microsoft-user-default-low: 既定では、メンバータイプのユーザーが同意できるリスクの低いアクセス許可。
- microsoft-user-default-recommended: Microsoft の現在の推奨事項に基づいて同意できるアクセス許可。
- microsoft-all-application-permissions: すべてのクライアント アプリケーションのすべての API に対するすべてのアプリケーションアクセス許可 (アプリ ロール) が含まれます。
- microsoft-dynamically-managed-permissions-for-chat: チャット リソース固有の同意に許可される動的に管理されたアクセス許可が含まれます。
- microsoft-all-application-permissions-for-chat: すべてのクライアント アプリケーションについて、すべての API に対するすべてのチャットリソース固有のアプリケーションアクセス許可が含まれます。
- microsoft-dynamically-managed-permissions-for-team: チーム リソース固有の同意に対して許可される動的に管理されたアクセス許可が含まれます。
- microsoft-pre-approval-apps-for-chat: チャット リソース固有の同意に対する承認前ポリシーの許可によって事前に承認されたアプリが含まれます。
- microsoft-pre-approval-apps-for-team: チーム リソース固有の同意に対する承認前の許可ポリシーによって事前に承認されたアプリが含まれます。
- microsoft-all-application-permissions-verified: すべての API、検証済み発行元のクライアント アプリケーション、またはこの組織に登録されたクライアント アプリケーションのすべてのアプリケーションアクセス許可 (アプリ ロール) が含まれます。
- microsoft-application-admin: アプリケーション管理者が同意できるアクセス許可。
- microsoft-company-admin: 会社の管理者が同意できるアクセス許可。
警告
Microsoft-user-default-recommended は Microsoft マネージド ポリシーです。 ポリシーに含まれる条件は、エンド ユーザーの同意に関する Microsoft の最新のセキュリティに関する推奨事項に基づいて自動的に更新されます。
Microsoft 推奨の現在の設定
"Microsoft が同意設定を管理できるようにする" というラベルの付いた設定は、Microsoft の管理ポリシーで、Microsoft の推奨される最新の既定の同意設定で更新されます。 これは、新しいテナントの既定値でもあります。 現在、設定の規則は次のとおりです。エンド ユーザーは、Files.Read.All、Files.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All を除き、ユーザーが同意できる委任されたアクセス許可に同意できます。
この同意ポリシーの更新には、少なくとも 30 日間の通知が含まれます。
複数のポリシー
ユーザーは、同意を許可する複数のポリシーを持つことができます。 各ポリシーは個別に評価され (1 つのポリシーからの除外は別のポリシーの包含には影響しません)、ユーザーは特定のイベントに対する同意を許可するために承認するポリシーを 1 つだけ必要とします。 たとえば、アプリケーション管理者は、(すべてのユーザーに適用される既定のポリシーのおかげで) 通常のユーザーができることすべてに同意できます。また、microsoft-application-admin ポリシーを通じてより広範なアクセス許可を持ちます。これにより、Microsoft Graph アプリロールを除く任意の API アクセス許可の要求を承認できます。
前提条件
- 次のいずれかのロールを持つユーザーまたはサービス:
- 特権ロール管理者ディレクトリ ロール
- アプリへの同意ポリシーを管理するために必要なアクセス許可を持つカスタム ディレクトリ ロール
- Microsoft Graph アプリ ロール (アプリケーションのアクセス許可)
Policy.ReadWrite.PermissionGrant
(アプリまたはサービスとして接続する場合)
- (アクセス許可付与条件セット)[/graph/api/resources/permissiongrantconditionset?view=graph-rest-1.0] について理解する
Microsoft Graph PowerShell を使用してアプリケーションのアプリ同意ポリシーを管理するには、Microsoft Graph PowerShell に接続します。
Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant"
既存のアプリ同意ポリシーを一覧表示する
まず、組織内の既存のアプリ同意ポリシーについて理解しておくことをお勧めします。
すべてのアプリの同意ポリシーを一覧表示します。 これには、組織が作成したすべての組み込みポリシーとカスタム ポリシーが表示されます。
Get-MgPolicyPermissionGrantPolicy | ft Id, DisplayName, Description
ポリシーの "包含" 条件セットを表示します。
Get-MgPolicyPermissionGrantPolicyInclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
"除外" 条件セットを表示します。
Get-MgPolicyPermissionGrantPolicyExclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
PowerShell を使用してカスタム アプリ同意ポリシーを作成する
カスタムのアプリ同意ポリシーを作成するには、次の手順に従います。
新しい空のアプリ同意ポリシーを作成します。
New-MgPolicyPermissionGrantPolicy ` -Id "my-custom-policy" ` -DisplayName "My first custom consent policy" ` -Description "This is a sample custom app consent policy."
"包含" 条件セットを追加します。
# Include delegated permissions classified "low", for apps from verified publishers New-MgPolicyPermissionGrantPolicyInclude ` -PermissionGrantPolicyId "my-custom-policy" ` -PermissionType "delegated" ` -PermissionClassification "low" ` -ClientApplicationsFromVerifiedPublisherOnly
この手順を繰り返して、さらに "包含" 条件セットを追加します。
必要に応じて、"除外" 条件セットを追加します。
# Retrieve the service principal for the Azure Management API $azureApi = Get-MgServicePrincipal -Filter "servicePrincipalNames/any(n:n eq 'https://management.azure.com/')" # Exclude delegated permissions for the Azure Management API New-MgPolicyPermissionGrantPolicyExclude ` -PermissionGrantPolicyId "my-custom-policy" ` -PermissionType "delegated" ` -ResourceApplication $azureApi.AppId
この手順を繰り返して、さらに "除外" 条件セットを追加します。
アプリ同意ポリシーを作成したら、それを Microsoft Entra ID でカスタム役割に割り当てる必要があります。 その後、作成したアプリ同意ポリシーにアタッチされているそのカスタム役割にユーザーを割り当てる必要があります。 アプリ同意ポリシーをカスタム役割に割り当てる方法の詳細については、「カスタム役割に対するアプリ同意のアクセス許可」を参照してください。
PowerShell を使用してカスタム アプリ同意ポリシーを削除する
次のコマンドレットは、カスタムのアプリ同意ポリシーを削除する方法を示しています。
Remove-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId "my-custom-policy"
アプリの同意ポリシーを管理するには、前提条件セクションに記載されているいずれかのロールで Graph エクスプローラーにサインインします。
Policy.ReadWrite.PermissionGrant
アクセス許可に同意する必要があります。
Microsoft Graph を使用して既存のアプリ同意ポリシーを一覧表示する
まず、組織内の既存のアプリ同意ポリシーについて理解しておくことをお勧めします。
すべてのアプリの同意ポリシーを一覧表示します。 これには、組織が作成したすべての組み込みポリシーとカスタム ポリシーが表示されます。
GET /policies/permissionGrantPolicies?$select=id,displayName,description
ポリシーの "包含" 条件セットを表示します。
GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/includes
"除外" 条件セットを表示します。
GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/excludes
Microsoft Graph を使用してカスタム アプリ同意ポリシーを作成する
カスタムのアプリ同意ポリシーを作成するには、次の手順に従います。
新しい空のアプリ同意ポリシーを作成します。
POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies Content-Type: application/json { "id": "my-custom-policy", "displayName": "My first custom consent policy", "description": "This is a sample custom app consent policy" }
"包含" 条件セットを追加します。
検証済みの発行元からのアプリに対して、"低" に分類されている委任されたアクセス許可を含める
POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-policy }/includes Content-Type: application/json { "permissionType": "delegated", "PermissionClassification": "low", "clientApplicationsFromVerifiedPublisherOnly": true }
この手順を繰り返して、さらに "包含" 条件セットを追加します。
必要に応じて、"除外" 条件セットを追加します。 Azure Management API の委任されたアクセス許可を除外する (appId 00001111-aaaa-2222-bbbb-3333cccc4444)
POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/my-custom-policy /excludes Content-Type: application/json { "permissionType": "delegated", "resourceApplication": "00001111-aaaa-2222-bbbb-3333cccc4444 " }
この手順を繰り返して、さらに "除外" 条件セットを追加します。
アプリ同意ポリシーを作成したら、それを Microsoft Entra ID でカスタム役割に割り当てる必要があります。 その後、作成したアプリ同意ポリシーにアタッチされているそのカスタム役割にユーザーを割り当てる必要があります。 アプリ同意ポリシーをカスタム役割に割り当てる方法の詳細については、「カスタム役割に対するアプリ同意のアクセス許可」を参照してください。
Microsoft Graph を使用してカスタム アプリ同意ポリシーを削除する
カスタムのアプリ同意ポリシーを削除する方法を次に示します。
DELETE https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/ my-custom-policy
警告
削除されたアプリの同意ポリシーを復元することはできません。 カスタム アプリの同意ポリシーを誤って削除した場合は、ポリシーを再作成する必要があります。
次のステップ
ヘルプを表示したり、質問に対する回答を検索したりするには、以下を参照してください。