PowerShell を使用してリスクに基づくステップアップ同意を構成する

この記事では、Microsoft Entra ID でリスクに基づくステップアップ同意を構成する方法について説明します。 リスクに基づくステップアップ同意を使用すると、違法な同意要求を行う悪質なアプリへのユーザーの露出を減らすことができます。

たとえば、基本以外のアクセス許可を必要とする、発行元が確認されていない新しく登録されたマルチテナント アプリの場合、その同意要求は危険であると見なされます。 危険なユーザーの同意要求が検出された場合、代わりに管理者の同意を求める "ステップアップ" が必要になります。 このステップアップ機能は既定で有効ですが、ユーザーの同意が有効化されている場合にのみ、動作変更につながります。

危険な同意要求が検出されると、管理者の承認が必要であることを示すメッセージが同意プロンプトに表示されます。 管理者の同意要求ワークフローが有効になっている場合、ユーザーは同意プロンプトから直接その要求を管理者に送信してさらなる確認を求めることができます。 管理者の同意要求のワークフローが有効になっていない場合は、次のメッセージが表示されます。

AADSTS90094:: <clientAppDisplayName> には、組織内のリソースへのアクセス許可が必要です。これを付与できるのは管理者のみです。 使用するには、まず、このアプリへのアクセス許可を付与するように管理者に依頼してください。

この場合、"ApplicationManagement" というカテゴリ、"Consent to application" (アプリケーションへの同意) というアクティビティの種類、"Risky application detected" (危険なアプリケーションの検出) という状態の理由で、監査イベントもログに記録されます。

前提条件

リスクに基づくステップアップ同意を構成するには、以下のものが必要です。

  • ユーザー アカウント。 まだアカウントがない場合は、無料でアカウントを作成することができます。
  • 全体管理者ロールまたは特権管理者ロール。

リスクが検出された場合に必要となる管理者の同意へのステップアップは、Microsoft Graph PowerShell ベーター モジュールを使用して無効にしたり、過去に無効にされていた場合は再度有効にしたりすることができます。

重要

Microsoft Graph PowerShell ベータ コマンドレット モジュールを使用していることを確認します。

  1. 次のコマンドを実行します。

    Install-Module Microsoft.Graph.Beta
    
  2. Microsoft Graph PowerShell に接続します。

    Connect-MgGraph -Scopes "Directory.ReadWrite.All"
    
  3. テナントの同意ポリシー設定ディレクトリ設定の現在の値を取得します。 これを行うには、この機能のディレクトリ設定が作成されているかどうかを確認する必要があります。 作成されていない場合は、対応するディレクトリ設定テンプレートの値を使用します。

    $consentSettingsTemplateId = "dffd5d46-495d-40a9-8e21-954ff55e198a" # Consent Policy Settings
    $settings = Get-MgBetaDirectorySetting -All | Where-Object { $_.TemplateId -eq $consentSettingsTemplateId }
    if (-not $settings) {
        $params = @{
            TemplateId = $consentSettingsTemplateId
            Values = @(
                @{ 
                    Name = "BlockUserConsentForRiskyApps"
                    Value = "True"
                }
                @{ 
                    Name = "ConstrainGroupSpecificConsentToMembersOfGroupId"
                    Value = "<groupId>"
                }
                @{ 
                    Name = "EnableAdminConsentRequests"
                    Value = "True"
                }
                @{ 
                    Name = "EnableGroupSpecificConsent"
                    Value = "True"
                }
            )
        }
        $settings = New-MgBetaDirectorySetting -BodyParameter $params
    }
    $riskBasedConsentEnabledValue = $settings.Values | ? { $_.Name -eq "BlockUserConsentForRiskyApps" }
    
  4. 値を確認します。

    $riskBasedConsentEnabledValue
    

    設定の値を理解します。

    設定 Type 説明
    BlockUserConsentForRiskyApps Boolean 危険な要求が検出されたときにユーザーの同意をブロックするかどうかを示すフラグ。
  5. BlockUserConsentForRiskyApps の値を変更するには、Update-MgBetaDirectorySetting コマンドレットを使用します。

    $params = @{
        TemplateId = $consentSettingsTemplateId
        Values = @(
            @{ 
                Name = "BlockUserConsentForRiskyApps"
                Value = "False"
            }
            @{ 
                Name = "ConstrainGroupSpecificConsentToMembersOfGroupId"
                Value = "<groupId>"
            }
            @{ 
                Name = "EnableAdminConsentRequests"
                Value = "True"
            }
            @{ 
                Name = "EnableGroupSpecificConsent"
                Value = "True"
            }
        )
    }
    Update-MgBetaDirectorySetting -DirectorySettingId $settings.Id -BodyParameter $params
    

次のステップ