この記事では、Microsoft Entra ID でユーザーの同意設定を構成して、ユーザーがアプリケーションにアクセス許可を付与するタイミングと方法を制御する方法について説明します。 このガイダンスは、IT 管理者がユーザーの同意を制限または無効にすることで、セキュリティ リスクを軽減するのに役立ちます。
アプリケーションが組織のデータにアクセスできるようにするには、そのためのアプリケーションのアクセス許可をユーザーに付与する必要があります。 異なるアクセス許可によって、さまざまなレベルのアクセスが可能になります。 既定では、すべてのユーザーが、管理者の同意を必要としないアクセス許可のアプリケーションに同意することが許可されています。 たとえば、既定では、ユーザーはアプリが自分のメールボックスにアクセスすることを許可することができますが、組織内のすべてのファイルを自由に読み取りと書き込みできるアクセスをアプリに許可することに同意することはできません。
悪意のあるアプリケーションがユーザーをだまして組織のデータへのアクセスを許可しようとするリスクを軽減するには、 検証済みの発行元によって発行されたアプリケーションに対してのみユーザーの同意を許可することをお勧めします。
メモ
ユーザーをアプリケーションに割り当てる必要があるアプリケーションでは、ディレクトリのユーザー同意ポリシーでユーザーが自分の代わりに同意できる場合でも、管理者がアクセス許可を付与する必要があります。
前提条件
ユーザーの同意を構成するには、次のものが必要です。
- ユーザー アカウント。 アカウントをまだお持ちでない場合は、 無料でアカウントを作成できます。
- A 特権ロール管理者ロール。
- グローバル管理者ロールは、Microsoft Entra 管理センターを使用する場合にのみ必要です。
ユーザーの同意設定を構成する
Microsoft Entra 管理センター、Microsoft Graph PowerShell、または Microsoft Graph API を使用して、Microsoft Entra ID でユーザーの同意設定を構成できます。 構成する設定は、組織内のすべてのユーザーに適用されます。
Microsoft Entra 管理センターでユーザーの同意を構成する
Microsoft Entra 管理センターを使用してユーザーの同意設定を構成するには:
Microsoft Entra 管理センターにグローバル管理者としてサインインします。
Entra ID>Enterprise アプリケーション>同意とアクセス許可>ユーザーの同意設定に移動します。
[ アプリケーションのユーザーの同意] で、すべてのユーザーに対して構成する同意設定を選択します。
[ 保存] を 選択して設定を保存します。
Microsoft Graph PowerShell での承認とアクセス許可の付与ポリシーについて
Microsoft Graph PowerShell を使用してプログラムでユーザーの同意設定を構成するには、テナント全体の 承認ポリシー と個々の アクセス許可付与ポリシーの違いを理解することが重要です。 authorizationPolicy
を使用して取得されたは、ユーザーがアプリに同意できるかどうか、既定のユーザー ロールに割り当てられるアクセス許可付与ポリシーなど、グローバル設定を管理します。 たとえば、ManagePermissionGrantsForOwnedResource.DeveloperConsent
コレクション内のpermissionGrantPoliciesAssigned
のみを割り当てることで、開発者が自分が所有するアプリのアクセス許可を管理できるようにしながら、ユーザーの同意を無効にすることができます。
一方、 permissionGrantPolicies エンドポイントには、現在のアクセス許可付与ポリシーが一覧表示されます。 これらのポリシーは、アプリケーションに付与できるアクセス許可と、どのような状況で付与できるかを決定します。 各ポリシーには特定の条件が含まれますが、他の条件は "除外" されます。 ユーザーがアプリケーションに同意しようとすると、システムはアクセス許可付与ポリシーをチェックして、ユーザーの要求に該当するかどうかを確認します。 たとえば、リスクの低いポリシーを使用すると、ユーザーは "低リスク" として構成されたアクセス許可に同意できます。 これには、(GUID として) これらのリスクの低いポリシーが含まれています。 別のシナリオでは、ユーザーが "AdminOnly" ポリシーに一致するコンテキストで同意しようとすると、ユーザーは同意できません。
メモ
Update-MgPolicyPermissionGrantPolicy
コマンドを使用して同意設定を更新する前に、常に現在のauthorizationPolicy
を取得して、既に割り当てられているアクセス許可付与ポリシーを特定します。 これにより、開発者が所有するアプリの同意を管理できるようにするなど、必要なアクセス許可を確実に保持し、既存の機能を意図せずに削除しないようにすることができます。
アプリケーションのユーザーの同意を管理するアプリの同意ポリシーを選択するには、 Microsoft Graph PowerShell モジュールを使用します。 ここで使用するコマンドレットは、 Microsoft.Graph.Identity.SignIns モジュールに含まれています。
必要な最小限の特権を使用して、Microsoft Graph PowerShell に接続します。 現在のユーザーの同意設定を読み取る場合は、 Policy.Read.All を使用します。 ユーザーの同意設定を読み取って変更するには、 Policy.ReadWrite.Authorization を使用します。 特権ロール管理者としてサインインする必要があります。
Connect-MgGraph -Scopes "Policy.ReadWrite.Authorization"
Microsoft Graph PowerShell を使用してユーザーの同意を無効にする
ユーザーの同意を無効にするには、コレクションの更新中に同意ポリシー (PermissionGrantPoliciesAssigned
) に他の現在の ManagePermissionGrantsForOwnedResource.*
ポリシー (存在する場合) が含まれることを確認します。 これにより、ユーザーの同意設定と他のリソースの同意設定の現在の構成を維持できます。
# only exclude user consent policy
$body = @{
"permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
"managePermissionGrantsForOwnedResource.{other-current-policies}"
)
}
Update-MgPolicyAuthorizationPolicy -BodyParameter $body
PowerShell を使ってアプリの同意ポリシーに従ってユーザーの同意を許可する
ユーザーの同意を許可するには、アプリに同意を付与するユーザーの認可を管理するアプリの同意ポリシーを選択します。 コレクションの更新中に同意ポリシー (PermissionGrantPoliciesAssigned
) に他の現在の ManagePermissionGrantsForOwnedResource.*
ポリシー (存在する場合) が含まれることを確認します。 これにより、ユーザーの同意設定と他のリソースの同意設定の現在の構成を維持できます。
$body = @{
"permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
"managePermissionGrantsForSelf.{consent-policy-id}",
"managePermissionGrantsForOwnedResource.{other-current-policies}"
)
}
Update-MgPolicyAuthorizationPolicy -BodyParameter $body
{consent-policy-id}
を、適用するポリシーの ID に置き換えます。 作成した カスタム アプリの同意ポリシー を選択することも、次の組み込みポリシーから選択することもできます。
身分証明書 | 説明 |
---|---|
microsoft-user-default-low | 選択したアクセス許可に対して、検証済みの発行元からのアプリに対するユーザーの同意を許可する 制限付きユーザーの同意は、検証済みの発行元のアプリとテナントに登録されているアプリに対してのみ許可し、 影響の少ないアクセス許可として分類する場合にのみ許可します。 (ユーザーが同意できる アクセス許可 を選択するには、必ずアクセス許可を分類してください)。 |
マイクロソフト・ユーザー・デフォルト・レガシー | アプリのユーザーの同意を許可する このオプションを使用すると、すべてのユーザーが、すべてのアプリケーションに対し、管理者の同意を必要としないすべてのアクセス許可に同意することができます |
たとえば、組み込みのポリシー microsoft-user-default-low
に従ってユーザーの同意を有効にするには、次のコマンドを実行します。
$body = @{
"permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
"managePermissionGrantsForSelf.managePermissionGrantsForSelf.microsoft-user-default-low",
"managePermissionGrantsForOwnedResource.{other-current-policies}"
)
}
Microsoft Graph の承認ポリシーとアクセス許可付与ポリシーについて
Microsoft Graph を使用してプログラムでユーザーの同意設定を構成するには、テナント全体の 承認ポリシー と個々の アクセス許可付与ポリシーの違いを理解することが重要です。 authorizationPolicy
(GET https://graph.microsoft.com/v1.0/policies/authorizationPolicy/authorizationPolicy
を使用して取得) は、ユーザーがアプリに同意できるかどうか、既定のユーザー ロールに割り当てられるアクセス許可付与ポリシーなど、グローバル設定を制御します。 たとえば、ManagePermissionGrantsForOwnedResource.DeveloperConsent
コレクション内のpermissionGrantPoliciesAssigned
のみを割り当てることで、開発者が自分が所有するアプリのアクセス許可を管理できるようにしながら、ユーザーの同意を無効にすることができます。
一方、 permissionGrantPolicies
エンドポイント (GET https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies
) には、現在のアクセス許可付与ポリシーが一覧表示されます。 これらのポリシーは、アプリケーションに付与できるアクセス許可と、どのような状況で付与できるかを決定します。 各ポリシーには特定の条件が含まれますが、他の条件は "除外" されます。 ユーザーがアプリケーションに同意しようとすると、システムはアクセス許可付与ポリシーをチェックして、ユーザーの要求に該当するかどうかを確認します。 たとえば、リスクの低いポリシーを使用すると、ユーザーは "低リスク" として構成されたアクセス許可に同意できます。 これには、(GUID として) これらのリスクの低いポリシーが含まれています。 別のシナリオでは、ユーザーが "AdminOnly" ポリシーに一致するコンテキストで同意しようとすると、ユーザーは同意できません。
メモ
同意設定を PATCH
要求で更新する前に、常に現在の authorizationPolicy
を取得して、既に割り当てられているアクセス許可付与ポリシーを特定します。 これにより、開発者が所有するアプリの同意を管理できるようにするなど、必要なアクセス許可を確実に保持し、既存の機能を意図せずに削除しないようにすることができます。
Graph エクスプローラーを使用して、アプリケーションのユーザーの同意を管理するアプリの同意ポリシーを選択します。 特権ロール管理者としてサインインする必要があります。
Microsoft Graph を使用してユーザーの同意を無効にする
ユーザーの同意を無効にするには、コレクションの更新中に同意ポリシー (PermissionGrantPoliciesAssigned
) に他の現在の ManagePermissionGrantsForOwnedResource.*
ポリシー (存在する場合) が含まれることを確認します。 これにより、ユーザーの同意設定と他のリソースの同意設定の現在の構成を維持できます。
PATCH https://graph.microsoft.com/v1.0/policies/authorizationPolicy
{
"defaultUserRolePermissions": {
"permissionGrantPoliciesAssigned": [
"managePermissionGrantsForOwnedResource.{other-current-policies}"
]
}
}
Microsoft Graph を使ってアプリの同意ポリシーに従ってユーザーの同意を許可する
ユーザーの同意を許可するには、アプリに同意を付与するユーザーの認可を管理するアプリの同意ポリシーを選択します。 コレクションの更新中に同意ポリシー (PermissionGrantPoliciesAssigned
) に他の現在の ManagePermissionGrantsForOwnedResource.*
ポリシー (存在する場合) が含まれることを確認します。 これにより、ユーザーの同意設定と他のリソースの同意設定の現在の構成を維持できます。
PATCH https://graph.microsoft.com/v1.0/policies/authorizationPolicy
{
"defaultUserRolePermissions": {
"managePermissionGrantsForSelf.{consent-policy-id}",
"managePermissionGrantsForOwnedResource.{other-current-policies}"
}
}
{consent-policy-id}
を、適用するポリシーの ID に置き換えます。 作成した カスタム アプリの同意ポリシー を選択することも、次の組み込みポリシーから選択することもできます。
身分証明書 | 説明 |
---|---|
microsoft-user-default-low | 選択したアクセス許可に対して、検証済みの発行元からのアプリに対するユーザーの同意を許可する 制限付きユーザーの同意は、検証済みの発行元のアプリとテナントに登録されているアプリに対してのみ許可し、 影響の少ないアクセス許可として分類する場合にのみ許可します。 (ユーザーが同意できる アクセス許可 を選択するには、必ずアクセス許可を分類してください)。 |
マイクロソフト・ユーザー・デフォルト・レガシー | アプリのユーザーの同意を許可する このオプションを使用すると、すべてのユーザーが、すべてのアプリケーションに対し、管理者の同意を必要としないすべてのアクセス許可に同意することができます |
たとえば、組み込みのポリシー microsoft-user-default-low
に従ってユーザーの同意を有効にするには、次の PATCH コマンドを使用します。
PATCH https://graph.microsoft.com/v1.0/policies/authorizationPolicy
{
"defaultUserRolePermissions": {
"permissionGrantPoliciesAssigned": [
"managePermissionGrantsForSelf.microsoft-user-default-low",
"managePermissionGrantsForOwnedResource.{other-current-policies}"
]
}
}
ユーザーの同意設定の更新は、アプリケーションの今後の同意操作にのみ影響します。 既存の同意付与は変更されず、ユーザーは以前に付与されたアクセス許可に基づいて引き続きアクセス権を持ちます。 既存の同意付与を取り消す方法については、「 エンタープライズ アプリケーションに付与されたアクセス許可を確認する」を参照してください。
ヒント
ユーザーが同意を許可されていないアプリケーションの管理者のレビューと承認をユーザーが要求できるようにするには、 管理者の同意ワークフローを有効にします。 たとえば、ユーザーの同意が無効になっている場合や、ユーザーによる付与が許可されていないアクセス許可をアプリケーションが要求している場合に、このような操作を行うことができます。