使用 PowerShell 配置基于风险的升级同意

在本文中,你将了解如何在 Microsoft Entra ID 中配置基于风险的升级同意。 基于风险的升级同意有助于减少用户遭受发出非法同意请求的恶意应用的攻击。

例如,以下行为被视为有风险:针对新注册的多租户应用的同意请求,而且这些应用未经过发行商验证且要求非基本权限。 如果检测到用户同意请求存在风险,该请求需要“升级”,改为管理员同意。 此升级功能默认启用,但如果启用了用户同意,则仅会导致行为更改。

当检测到同意请求存在风险时,同意提示会显示一条消息,指示需要管理员批准。 如果已启用管理员同意请求工作流,则用户可将请求发送给管理员,使其直接从同意提示中进一步评审。 如果未启用管理员同意请求工作流,则会显示以下消息:

AADSTS90094:<clientAppDisplayName> 需要组织中资源的访问权限(只有管理员可以授予)。 使用应用前,请先向管理员请求授予此应用的权限。

在这种情况下,还将记录一个审核事件,其类别为“ApplicationManagement”、活动类型为“同意应用程序”,状态原因为“检测到存在风险的应用程序”。

先决条件

若要配置基于风险的升级同意,需要:

可使用 Microsoft Graph PowerShell beta 模块禁用在检测到风险时必需的管理员同意升级,或启用它(如果之前已禁用)。

重要

请确保你使用的是 Microsoft Graph PowerShell Beta cmdlet 模块。

  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
    

    了解设置值:

    设置 类型 说明
    BlockUserConsentForRiskyApps Boolean 检测到请求存在风险时,标志将指示是否阻止用户同意。
  5. 若要更改 BlockUserConsentForRiskyApps 的值,请使用 Update-MgBetaDirectorySetting cmdlet。

    $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
    

后续步骤