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

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

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

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

注意

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

先决条件

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

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

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

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

  2. 浏览到 Entra ID>企业应用>许可和权限>用户同意设置

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

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

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

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

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

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

注意

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

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

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

Connect-MgGraph -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。 可以选择已创建的 自定义应用同意策略 ,也可以从以下内置策略中进行选择:

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

例如,如果要根据内置策略 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 检索)管理全局设置,例如用户是否可以同意应用,以及将哪些权限授予策略分配给默认用户角色。 例如,你可以禁用用户许可,同时仍允许开发人员通过在 permissionGrantPoliciesAssigned 集合中仅分配 ManagePermissionGrantsForOwnedResource.DeveloperConsent 来管理他们拥有的应用的权限。

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

注意

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

使用 Graph 资源管理器 选择哪个应用同意策略可控制应用程序的用户同意。 需要以 特权角色管理员身份登录。

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

PATCH https://graph.microsoft.com/v1.0/policies/authorizationPolicy
{
   "defaultUserRolePermissions": {
       "permissionGrantPoliciesAssigned": [
           "managePermissionGrantsForOwnedResource.{other-current-policies}"
        ]
    }
}

若要允许用户同意,请选择应由哪个应用同意策略来管理用户向应用授予同意的授权。 确保在更新集合时同意策略 (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 启用用户同意,请使用以下 PATCH 命令:

PATCH https://graph.microsoft.com/v1.0/policies/authorizationPolicy

{
    "defaultUserRolePermissions": {
        "permissionGrantPoliciesAssigned": [
            "managePermissionGrantsForSelf.microsoft-user-default-low",
            "managePermissionGrantsForOwnedResource.{other-current-policies}"
        ]
    }
}

提示

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

后续步骤