配置用户对应用程序表示同意的方式

本文介绍如何在 Microsoft Entra ID 中配置用户同意设置,以控制用户何时以及如何向应用程序授予权限。 本指南通过限制或禁用用户同意来帮助 IT 管理员降低安全风险。

用户必须先授权应用程序访问,然后应用程序才可访问你组织的数据。 权限不同,访问级别就不同。 默认情况下,允许所有用户同意应用程序获取无需管理员同意的权限。 例如,默认情况下,用户可同意允许应用访问其邮箱,但无法同意允许应用具有不受限制的访问权限来读写你组织中的所有文件。

为了降低恶意应用程序企图欺骗用户向其授予对你组织数据的访问权限的风险,我们建议仅允许用户同意已验证的发布者发布的应用程序。

注意

要求分配用户到应用程序的应用必须获得管理员的权限同意,即使目录的用户同意策略通常允许用户为自己同意也是如此。

先决条件

若要配置用户同意,你需要:

可以使用 Microsoft Entra 管理中心或 Microsoft Graph PowerShell 在 Microsoft Entra ID 中配置用户同意设置。 配置的设置适用于组织中的所有用户。

通过 Microsoft Entra 管理中心配置用户同意设置:

  1. 全局管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“同意和权限”>“用户同意设置”。

  3. 在“针对应用程序的用户同意”下,选择想要为所有用户配置的同意设置。

  4. 选择“保存”以保存设置 。

“用户同意设置”窗格的屏幕截图。

了解 Microsoft Graph PowerShell 中的授权和权限授予策略

若要使用 Microsoft Graph PowerShell 以编程方式配置用户同意设置,请务必了解租户范围的 授权策略 与单个 权限授予策略之间的区别。 authorizationPolicy通过使用 Update-MgPolicyAuthorizationPolicy 检索到的设置控制全局设置,例如用户是否可以同意应用程序以及哪些权限授予策略被分配给默认用户角色。 例如,你可以禁用用户同意,同时仍然允许开发人员通过在 ManagePermissionGrantsForOwnedResource.DeveloperConsent 集合中仅分配 permissionGrantPoliciesAssigned 来管理他们拥有的应用的权限。

另一方面, permissionGrantPolicies 终结点列出了租户中定义的所有同意策略。 这些策略确定允许用户授予的特定类型的应用权限,例如低风险委派权限。 例如,类似 UserConsentLowRisk 策略可能会允许用户仅同意请求基本配置文件信息的应用,而自定义策略可能会进一步限制同意,或扩大特定用户组的许可范围。

注意

在使用 Update-MgPolicyPermissionGrantPolicy 命令更新许可设置之前,请始终检索当前 authorizationPolicy 设置,以标识已分配哪些权限授予策略。 这可以确保保留必要的权限,例如那些使开发人员能够管理他们拥有的应用的许可,并避免无意中删除现有功能。

若要选择哪个应用许可策略控制应用程序的用户同意,请使用 Microsoft Graph PowerShell 模块。 此处使用的 cmdlet 包含在 Microsoft.Graph.Identity.SignIns 模块中。

使用所需的最小特权权限连接到 Microsoft Graph PowerShell。 若要读取当前用户同意设置,请使用 Policy.Read.All。 若要读取和更改用户同意设置,请使用 Policy.ReadWrite.Authorization。 至少需要以特权角色管理员身份登录。

Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Policy.ReadWrite.Authorization"

若要禁用用户同意,确保在更新集合时同意策略 (PermissionGrantPoliciesAssigned) 包括其他当前 ManagePermissionGrantsForOwnedResource.* 策略(如果有)。 这样,便可维护用户同意设置和其他资源同意设置的当前配置。

# only exclude user consent policy
$body = @{
    "permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
        "managePermissionGrantsForOwnedResource.{other-current-policies}" 
    )
}
Update-MgPolicyAuthorizationPolicy -BodyParameter $body

若要允许用户同意,请选择应由哪个应用同意策略来管理用户向应用授予同意的授权。 确保在更新集合时同意策略 (PermissionGrantPoliciesAssigned) 包括其他当前 ManagePermissionGrantsForOwnedResource.* 策略(如果有)。 这样,便可维护用户同意设置和其他资源同意设置的当前配置。

$body = @{
    "permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
        "managePermissionGrantsForSelf.{consent-policy-id}",
        "managePermissionGrantsForOwnedResource.{other-current-policies}"
    )
}
Update-MgPolicyAuthorizationPolicy -BodyParameter $body

{consent-policy-id} 替换为要应用的策略的 ID。 可以选择已创建的自定义应用同意策略,也可以从以下内置策略中选择:

ID 说明
微软用户默认低级 允许用户同意来自经过验证的发布者的应用具有所选权限
仅针对经过验证的发布者提供的应用以及在你的租户中注册的应用允许有限用户同意,并只授予你分类为“低影响”的权限。 (请记住对权限进行分类,选择允许用户同意哪些权限。)
微软用户默认遗留 对应用允许用户同意
此选项允许所有用户同意任意应用程序的任意权限,而无需管理员同意

例如,如果要根据内置策略 microsoft-user-default-low 启用用户同意,可以运行以下命令:

$body = @{
    "permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
        "managePermissionGrantsForSelf.managePermissionGrantsForSelf.microsoft-user-default-low",
        "managePermissionGrantsForOwnedResource.{other-current-policies}"
    )
}

对用户同意设置的任何更新仅影响应用程序的未来许可作。 现有许可授予保持不变,用户将继续根据以前授予的权限拥有访问权限。 若要了解如何撤销现有许可授予,请参阅 查看授予企业应用程序的权限

提示

如果要允许用户请求管理员审查和批准用户不被允许同意的应用程序,可以启用管理员同意工作流。 例如,你可以在用户同意已禁用或应用程序请求用户不被允许授予的权限时执行此操作。

后续步骤