配置组和团队所有者对应用程序的同意

在本文中,你将了解如何配置组和团队所有者同意应用程序的方式,以及如何禁用组和团队所有者以后对应用程序的所有同意操作。

组和团队所有者可授权应用程序(如第三方供应商发布的应用程序)访问你的组织中与组关联的数据。 例如,Microsoft Teams 中的团队所有者可允许应用读取团队中的所有 Teams 消息,或允许列出组成员的基本个人资料。 若要了解详细信息,请参阅 Microsoft Teams 中的资源特定同意

可以通过两种不同的方式管理组所有者同意:通过 Microsoft Entra 管理中心和创建应用同意策略。 在 Microsoft Entra 管理中心中,可以启用所有组所有者、启用所选组所有者或禁用组所有者向应用程序授予同意的能力。 另一方面,利用应用同意策略,可以指定哪个应用同意策略控制应用程序的组所有者同意。 然后,可以灵活地分配 Microsoft 内置策略或创建自己的自定义策略,以有效地管理组所有者的同意过程。

在创建应用同意策略以管理组所有者同意之前,需要通过 Microsoft Entra 管理中心禁用组所有者同意设置。 禁用此设置允许根据应用同意策略进行组所有者同意。 可以在本文中了解如何以各种方式禁用组所有者同意设置。 详细了解如何根据按需求定制的应用同意策略管理组所有者同意

先决条件

若要配置组和团队所有者同意,需要:

可配置允许哪些用户同意应用访问其组或团队的数据,也可以对所有用户禁用此设置。

提示

本文中的步骤可能因开始使用的门户而略有不同。

若要通过 Microsoft Entra 管理中心配置组和团队所有者同意设置,请执行以下操作:

请按照以下步骤操作,管理组所有者对访问组数据的应用的同意:

  1. 至少以特权角色管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“同意和权限”>“用户同意设置”。
  3. 在“针对应用访问数据的组所有者同意”下,选择要启用的选项。
  4. 选择“保存”以保存设置。

在下例中,所有组所有者都可同意应用访问其组数据:

组所有者同意设置

可使用 Microsoft Graph PowerShell 模块允许或禁止组所有者同意应用程序访问你组织的数据来查找他们拥有的组。 本部分中的 cmdlet 是 Microsoft.Graph.Identity.SignIns 模块的一部分。

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

  1. 使用 Select-MgProfile 命令将配置文件更改为 beta。

    Select-MgProfile -Name "beta"
    
  2. 使用最低特权权限

    Connect-MgGraph -Scopes "Policy.ReadWrite.Authorization"
    
    # If you need to create a new setting based on the templates, please use this permission
    Connect-MgGraph -Scopes "Directory.ReadWrite.All"
    

使用 Microsoft Graph PowerShell 检索当前设置

检索租户中“同意策略设置”目录设置的当前值。 这需要检查是否已创建此功能的目录设置;如果没有,则使用相应目录设置模板中的值。

$consentSettingsTemplateId = "dffd5d46-495d-40a9-8e21-954ff55e198a" # Consent Policy Settings
$settings = Get-MgDirectorySetting | ?{ $_.TemplateId -eq $consentSettingsTemplateId }

if (-not $settings) {
    $template = Get-MgDirectorySettingTemplate -DirectorySettingTemplateId $consentSettingsTemplateId
    $body = @{
                "templateId" = $template.Id
                "values" = @(
                    @{
                        "name" = "EnableGroupSpecificConsent"
                        "value" = $true
                    },
                    @{
                        "name" = "BlockUserConsentForRiskyApps"
                        "value" = $true
                    },
                    @{
                        "name" = "EnableAdminConsentRequests"
                        "value" = $true
                    },
                    @{
                        "name" = "ConstrainGroupSpecificConsentToMembersOfGroupId"
                        "value" = ""
                    }
                )
    }
    $settings = New-MgDirectorySetting -BodyParameter $body
}

$enabledValue = $settings.Values | ? { $_.Name -eq "EnableGroupSpecificConsent" }
$limitedToValue = $settings.Values | ? { $_.Name -eq "ConstrainGroupSpecificConsentToMembersOfGroupId" }

了解 Microsoft Graph PowerShell 中的设置值

有两个设置值可用于定义哪些用户能够允许应用访问其组的数据:

设置 类型 说明
EnableGroupSpecificConsent Boolean 指示是否允许组所有者授予特定于组的权限的标志。
ConstrainGroupSpecificConsentToMembersOfGroupId Guid 如果 EnableGroupSpecificConsent 设置为“True”,并且此值设置为组的对象 ID,则将授权已标识组的成员向其拥有的组授予特定于组的权限。

使用 Microsoft Graph PowerShell 更新所需配置的设置值

# Disable group-specific consent entirely
$enabledValue.Value = "false"
$limitedToValue.Value = ""
# Enable group-specific consent for all users
$enabledValue.Value = "true"
$limitedToValue.Value = ""
# Enable group-specific consent for users in a given group
$enabledValue.Value = "true"
$limitedToValue.Value = "{group-object-id}"

使用 Microsoft Graph PowerShell 保存设置


```powershell
# Update an existing directory settings
Update-MgDirectorySetting -DirectorySettingId $settings.Id -Values $settings.Values

若要使用 Graph 浏览器通过目录设置管理组和团队所有者同意设置,请执行以下操作:

至少需要以特权角色管理员身份登录。 若要读取当前用户同意设置,请同意 Policy.Read.All 权限。 若要读取和更改用户同意设置,请同意 Policy.ReadWrite.Authorization 权限。

使用 Microsoft Graph API 检索当前设置

从租户中的 Microsoft Entra 管理中心检索“同意策略设置”的当前值。 这需要检查是否已创建此功能的目录设置;如果没有,则使用第二个 Microsoft Graph 调用来创建相应的目录设置。

GET https://graph.microsoft.com/beta/settings

响应

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#settings",
    "value": [
        {
            "id": "{ directorySettingId }",
            "displayName": "Consent Policy Settings",
            "templateId": "dffd5d46-495d-40a9-8e21-954ff55e198a",
            "values": [
            {
                    "name": "EnableGroupSpecificConsent",
                    "value": "true"
                },
                {
                    "name": "BlockUserConsentForRiskyApps",
                    "value": "true"
                },
                {
                    "name": "EnableAdminConsentRequests",
                    "value": "true"
                },
                {
                    "name": "ConstrainGroupSpecificConsentToMembersOfGroupId",
                    "value": ""
                }
            ]
        }
    ]
}

如果 value 为空,则创建相应的目录设置(参阅以下示例)。

GET https://graph.microsoft.com/beta/settings

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#settings",
    "value": []
}
POST https://graph.microsoft.com/beta/settings
{
    "templateId": "dffd5d46-495d-40a9-8e21-954ff55e198a",
    "values": [
        {
            "name": "EnableGroupSpecificConsent",
            "value": "true"
        },
        {
            "name": "BlockUserConsentForRiskyApps",
            "value": "true"
        },
        {
            "name": "EnableAdminConsentRequests",
            "value": "true"
        },
        {
            "name": "ConstrainGroupSpecificConsentToMembersOfGroupId",
            "value": ""
        }
    ]
}

了解 Microsoft Graph API 中的设置值

有两个设置值可用于定义哪些用户能够允许应用访问其组的数据:

设置 类型 说明
EnableGroupSpecificConsent Boolean 指示是否允许组所有者授予特定于组的权限的标志。
ConstrainGroupSpecificConsentToMembersOfGroupId Guid 如果 EnableGroupSpecificConsent 设置为“True”,并且此值设置为组的对象 ID,则将授权已标识组的成员向其拥有的组授予特定于组的权限。

使用 Microsoft Graph API 更新所需配置的设置值

检索当前设置时,将 {directorySettingId} 替换为 value 集合中的实际 ID

完全禁用特定于组的同意

PATCH https://graph.microsoft.com/beta/settings/{directorySettingId}
{
    "values": [
        {
            "name": "EnableGroupSpecificConsent",
            "value": "false"
        },
        {
            "name": "BlockUserConsentForRiskyApps",
            "value": "true"
        },
        {
            "name": "EnableAdminConsentRequests",
            "value": "true"
        },
        {
            "name": "ConstrainGroupSpecificConsentToMembersOfGroupId",
            "value": ""
        }
    ]
}

为所有用户启用特定于组的同意

PATCH https://graph.microsoft.com/beta/settings/{directorySettingId}
{
    "values": [
        {
            "name": "EnableGroupSpecificConsent",
            "value": "true"
        },
        {
            "name": "BlockUserConsentForRiskyApps",
            "value": "true"
        },
        {
            "name": "EnableAdminConsentRequests",
            "value": "true"
        },
        {
            "name": "ConstrainGroupSpecificConsentToMembersOfGroupId",
            "value": ""
        }
    ]
}

为给定组中的用户启用特定于组的同意

PATCH https://graph.microsoft.com/beta/settings/{directorySettingId}
{
    "values": [
        {
            "name": "EnableGroupSpecificConsent",
            "value": "true"
        },
        {
            "name": "BlockUserConsentForRiskyApps",
            "value": "true"
        },
        {
            "name": "EnableAdminConsentRequests",
            "value": "true"
        },
        {
            "name": "ConstrainGroupSpecificConsentToMembersOfGroupId",
            "value": "{group-object-id}"
        }
    ]
}

注意

“用户可以自行许可访问公司数据的应用”设置关闭后不会禁用“用户可以同意应用访问其拥有的组的公司数据”选项。

通过应用同意策略,可配置允许哪些用户同意应用访问其组或团队的数据。 若要让组所有者同意受应用同意策略的约束,必须禁用组所有者同意设置。 禁用后,将从应用同意策略中读取当前策略。

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

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

# change the profile to beta by using the `Select-MgProfile` command
Select-MgProfile -Name "beta".
Connect-MgGraph -Scopes "Policy.ReadWrite.Authorization"
  1. 检查 ManagePermissionGrantPoliciesForOwnedResource 的范围是否在 group 内。

    1. 检索组所有者同意设置的当前值。

        Get-MgPolicyAuthorizationPolicy | select -ExpandProperty DefaultUserRolePermissions | ft PermissionGrantPoliciesAssigned
      

    如果在 PermissionGrantPoliciesAssigned 中返回 ManagePermissionGrantPoliciesForOwnedResource,则组所有者同意设置可能已受应用同意策略的约束。

    1. 检查策略的范围是否为 group

        Get-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId {"microsoft-all-application-permissions-for-group"} | ft AdditionalProperties
      

      如果 resourceScopeType == group,则组所有者同意设置已受应用同意策略的约束。

  2. 若要禁用组所有者同意以利用应用同意策略,请确保同意策略 (PermissionGrantPoliciesAssigned) 包括当前 ManagePermissionGrantsForSelf.* 策略和其他当前 ManagePermissionGrantsForOwnedResource.* 策略(如果任何策略不适用于组)同时更新集合。 这样,便可维护用户同意设置和其他资源同意设置的当前配置。

    # only exclude policies that are scoped in group
    $body = @{
        "permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
            "managePermissionGrantsForSelf.{current-policy-for-user-consent}",
            "managePermissionGrantsForOwnedResource.{other-policies-that-are-not-applicable-to-groups}" 
        )
    }
    Update-MgPolicyAuthorizationPolicy -AuthorizationPolicyId authorizationPolicy -BodyParameter $body
    
    

若要允许组所有者同意受应用同意策略的约束,请选择哪个应用同意策略应控制组所有者授权以向应用授予同意。 确保在更新集合时同意策略 (PermissionGrantPoliciesAssigned) 包括当前 ManagePermissionGrantsForSelf.* 策略和其他 ManagePermissionGrantsForOwnedResource.* 策略(如果有)。 这样,便可维持用户同意设置和其他资源同意设置的当前配置。

$body = @{
    "permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
        "managePermissionGrantsForSelf.{current-policy-for-user-consent}",
        "managePermissionGrantsForOwnedResource.{other-policies-that-are-not-applicable-to-groups}",
        "managePermissionGrantsForOwnedResource.{app-consent-policy-id-for-group}" #new app consent policy for groups
    )
}
Update-MgPolicyAuthorizationPolicy -AuthorizationPolicyId authorizationPolicy -BodyParameter $body

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

ID 说明
microsoft-pre-approval-apps-for-group 仅允许组所有者同意预先批准的应用
仅允许组所有者同意已由管理员为其所拥有的组而预批准的应用。
microsoft-all-application-permissions-for-group 允许组所有者同意应用
此选项允许所有组所有者对自己所拥有的组同意任意应用程序中无需管理员同意的任意权限。 它包括已通过针对组资源特定同意的权限授予预批准策略预先批准的应用。

例如,如果要根据内置策略 microsoft-all-application-permissions-for-group 启用组所有者同意,可以运行以下命令:

$body = @{
    "permissionGrantPolicyIdsAssignedToDefaultUserRole" = @(
        "managePermissionGrantsForSelf.{current-policy-for-user-consent}",
        "managePermissionGrantsForOwnedResource.{all-policies-that-are-not-applicable-to-groups}",
        "managePermissionGrantsForOwnedResource.{microsoft-all-application-permissions-for-group}" # policy that is be scoped to group
    )
}
Update-MgPolicyAuthorizationPolicy -AuthorizationPolicyId authorizationPolicy -BodyParameter $body

使用 Graph 浏览器选择哪个组所有者同意策略控制用户同意组所有者同意应用程序访问其拥有的组数据的能力。

  1. 检查 ManagePermissionGrantPoliciesForOwnedResource 的范围是否在 group 内。

    1. 检索组所有者同意设置的当前值
    GET https://graph.microsoft.com/v1.0/policies/authorizationPolicy
    

    如果在 permissionGrantPolicyIdsAssignedToDefaultUserRole 中返回 ManagePermissionGrantsForOwnedResource,则组所有者同意设置可能已受应用同意策略的约束。

    2. 检查策略的范围是否为 group

    GET https://graph.microsoft.com/beta/policies/permissionGrantPolicies/{microsoft-all-application-permissions-for-group}
    

    如果 resourceScopeType == group,则组所有者同意设置已受应用同意策略的约束。

  2. 若要禁用组所有者同意以利用应用同意策略,请确保同意策略 (PermissionGrantPoliciesAssigned) 包括当前 ManagePermissionGrantsForSelf.* 策略和其他当前 ManagePermissionGrantsForOwnedResource.* 策略(如果任何策略不适用于组)。 这样,便可维持用户同意设置和其他资源同意设置的当前配置。

    PATCH https://graph.microsoft.com/beta/policies/authorizationPolicy
    {
        "defaultUserRolePermissions": {
            "permissionGrantPoliciesAssigned": [
                "managePermissionGrantsForSelf.{current-policy-for-user-consent}",
                "managePermissionGrantsForOwnedResource.{other-policies-that-are-not-applicable-to-groups}"
             ]
         }
     }
    

若要允许组所有者同意受应用同意策略的约束,请选择哪个应用同意策略应控制组所有者授权以向应用授予同意。 确保在更新集合时同意策略 (PermissionGrantPoliciesAssigned) 包括当前 ManagePermissionGrantsForSelf.* 策略和其他当前 ManagePermissionGrantsForOwnedResource.* 策略(如果有)。 这样,便可维持用户同意设置和其他资源同意设置的当前配置。

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

{
    "defaultUserRolePermissions": {
        "managePermissionGrantsForSelf.{current-policy-for-user-consent}",
        "managePermissionGrantsForOwnedResource.{other-policies-that-are-not-applicable-to-groups}",
        "managePermissionGrantsForOwnedResource.{app-consent-policy-id-for-group}"
   }
}

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

ID 说明
microsoft-pre-approval-apps-for-group 仅允许组所有者同意预先批准的应用
仅允许组所有者同意已由管理员为其所拥有的组而预批准的应用。
microsoft-all-application-permissions-for-group 允许组所有者同意应用
此选项允许所有组所有者对自己所拥有的组同意任意应用程序中无需管理员同意的任意权限。 它包括已通过针对组资源特定同意的权限授予预批准策略预先批准的应用。

例如,如果要根据内置策略 microsoft-pre-approval-apps-for-group 启用组所有者同意,请使用以下 PATCH 命令:

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

{
    "defaultUserRolePermissions": {
        "permissionGrantPoliciesAssigned": [
            "managePermissionGrantsForSelf.{current-policy-for-user-consent}",
            "managePermissionGrantsForOwnedResource.{other-policies-that-are-not-applicable-to-groups}",
            "managePermissionGrantsForOwnedResource.microsoft-pre-approval-apps-for-group"
        ]
    }
}

后续步骤

获取帮助或查找问题的答案: