管理应用同意策略

应用同意策略是管理应用访问组织中数据所需的权限的一种方式。 它们用于控制用户可以同意的应用,并确保应用在访问数据之前须满足特定条件。 这些策略可帮助组织保持对其数据的控制,并确保仅将访问权限授予受信任的应用。

在本文中,了解如何管理内置的和自定义的应用同意策略,以控制何时可以授予同意。

借助 Microsoft GraphMicrosoft Graph PowerShell,可以查看和管理应用同意策略。

一个应用同意策略由一个或多个“包括”条件集和零个或零个以上“排除”条件集组成。 对于要在应用同意策略中考虑的事件,它必须与至少一个“包括”条件集匹配,并且不得与任何“排除”条件集匹配。

每个条件集包含多个条件。 若要让事件与条件集匹配,条件集中的所有条件都必须得到满足。

ID 以“microsoft-”开头的应用同意策略是内置策略。 其中的某些内置策略用于现有的内置目录角色。 例如,microsoft-application-admin 应用同意策略描述了允许“应用程序管理员”和“云应用程序管理员”角色授予租户级管理员同意的条件。 内置策略可用在自定义目录角色中,可用来配置用户同意设置,但你不能编辑或删除它们。

先决条件

  • 具有以下角色之一的用户或服务:
    • 特权角色管理员目录角色
    • 具有管理应用同意策略所需的权限的自定义目录角色
    • 在作为应用或服务连接时的 Microsoft Graph 应用角色(应用程序权限)Policy.ReadWrite.PermissionGrant

要使用 Microsoft Graph PowerShell 管理应用程序的应用同意策略,请连接到 Microsoft Graph PowerShell

Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant"

最好先熟悉组织中现有的应用同意策略:

  1. 列出所有应用同意策略:

    Get-MgPolicyPermissionGrantPolicy | ft Id, DisplayName, Description
    
  2. 查看策略的“包括”条件集:

    Get-MgPolicyPermissionGrantPolicyInclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
    
  3. 查看“排除”条件集:

    Get-MgPolicyPermissionGrantPolicyExclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
    

按照以下步骤创建自定义应用同意策略:

  1. 创建新的空的应用同意策略。

    New-MgPolicyPermissionGrantPolicy `
        -Id "my-custom-policy" `
        -DisplayName "My first custom consent policy" `
        -Description "This is a sample custom app consent policy."
    
  2. 添加“包括”条件集。

    # Include delegated permissions classified "low", for apps from verified publishers
    New-MgPolicyPermissionGrantPolicyInclude `
        -PermissionGrantPolicyId "my-custom-policy" `
        -PermissionType "delegated" `
        -PermissionClassification "low" `
        -ClientApplicationsFromVerifiedPublisherOnly
    

    重复此步骤来添加更多“包括”条件集。

  3. (可选)添加“排除”条件集。

    # Retrieve the service principal for the Azure Management API
    $azureApi = Get-MgServicePrincipal -Filter "servicePrincipalNames/any(n:n eq 'https://management.azure.com/')"
    
    # Exclude delegated permissions for the Azure Management API
    New-MgPolicyPermissionGrantPolicyExclude `
        -PermissionGrantPolicyId "my-custom-policy" `
        -PermissionType "delegated" `
        -ResourceApplication $azureApi.AppId
    

    重复此步骤来添加更多“排除”条件集。

创建应用同意策略后,需要将其分配给 Microsoft Entra ID 中的自定义角色。 然后,需要将用户分配到该自定义角色,从而附加到所创建的应用同意策略。 有关如何将应用同意策略分配给自定义角色的详细信息,请参阅自定义角色的应用同意权限

下面的 cmdlet 展示了如何删除自定义应用同意策略。

   Remove-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId "my-custom-policy"

若要管理应用同意策略,请使用先决条件部分中列出的角色之一登录到 Graph 浏览器

你需要同意 Policy.ReadWrite.PermissionGrant 权限。

最好先熟悉组织中现有的应用同意策略:

  1. 列出所有应用同意策略:

    GET /policies/permissionGrantPolicies?$select=id,displayName,description
    
  2. 查看策略的“包括”条件集:

    GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/includes
    
  3. 查看“排除”条件集:

    GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/excludes
    

按照以下步骤创建自定义应用同意策略:

  1. 创建新的空的应用同意策略。

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies
    Content-Type: application/json
    
    {
      "id": "my-custom-policy",
      "displayName": "My first custom consent policy",
      "description": "This is a sample custom app consent policy"
    }
    
  2. 添加“包括”条件集。

    包括来自已验证的发布者的应用的归类为“低”的委托的权限

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-policy }/includes
    Content-Type: application/json
    
    {
      "permissionType": "delegated",
      "PermissionClassification": "low",
      "clientApplicationsFromVerifiedPublisherOnly": true
    }
    

    重复此步骤来添加更多“包括”条件集。

  3. (可选)添加“排除”条件集。 排除 Azure 管理 API 的委托权限 (appId 00001111-aaaa-2222-bbbb-3333cccc4444)

    POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/my-custom-policy /excludes
    Content-Type: application/json
    
    {
      "permissionType": "delegated",
      "resourceApplication": "00001111-aaaa-2222-bbbb-3333cccc4444 "
    }
    

    重复此步骤来添加其他“排除”条件集。

创建应用同意策略后,需要将其分配给 Microsoft Entra ID 中的自定义角色。 然后,需要将用户分配到该自定义角色,从而附加到所创建的应用同意策略。 有关如何将应用同意策略分配给自定义角色的详细信息,请参阅自定义角色的应用同意权限

  1. 下面展示了如何删除自定义应用同意策略。

    DELETE https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/ my-custom-policy
    

警告

无法还原已删除的应用同意策略。 如果意外删除了自定义应用同意策略,需要重新创建该策略。

支持的条件

下表提供了应用同意策略支持的条件的列表。

条件 说明
PermissionClassification 要授予的权限的权限分类,或“all”(匹配任何权限分类,包括未分类的权限)。 默认值为“all”。
PermissionType 要授予的权限的权限类型。 使用“application”表示应用程序权限(例如应用角色),或使用“delegated”表示委托的权限。

注意:值“delegatedUserConsentable”指示 API 发布者尚未将委托的权限配置为需要管理员同意。 此值可用于内置权限授予策略,但不可用于自定义权限授予策略。 必需。
ResourceApplication 要为其授予权限的资源应用程序(例如 API)的 AppId,或“any”(匹配任何资源应用程序或 API)。 默认值为“any”。
权限 要与之匹配的特定权限的权限 ID 的列表;或其中包含单个值“all”的列表,这匹配任何权限。 默认值为单个值“all”。
- 可以在 API 的 ServicePrincipal 对象的 OAuth2Permissions 属性中找到委托的权限 ID。
- 可以在 API 的 ServicePrincipal 对象的 AppRoles 属性中找到应用程序权限 ID。
ClientApplicationIds 要与之匹配的客户端应用程序的 AppId 值的列表;或其中包含单个值“all”的列表,这匹配任何客户端应用程序。 默认值为单个值“all”。
ClientApplicationTenantIds 在其中注册了客户端应用程序的 Microsoft Entra 租户 ID 的列表;或其中包含单值“all”(用于匹配在任何租户中注册的客户端应用)的列表。 默认值为单个值“all”。
ClientApplicationPublisherIds 客户端应用程序的已验证发布者的 Microsoft 合作伙伴网络 (MPN) ID 的列表;或其中包含单个值“all”的列表,这将匹配来自任何发布者的客户端应用。 默认值为单个值“all”。
ClientApplicationsFromVerifiedPublisherOnly 将此开关设置为仅匹配具有已验证发布者的客户端应用程序。 禁用此开关 (-ClientApplicationsFromVerifiedPublisherOnly:$false) 以匹配任何客户端应用,即使它没有已验证的发布者。 默认为 $false
scopeType 预批准应用于的资源范围类型。 可能的值:团队group聊天chat;租户范围的访问权限:tenant。 必需。
sensitivityLabels 适用于范围类型但未预批准的敏感度标签。 它让你可以保护敏感的组织数据。 了解敏感度标签注意: 聊天资源尚不支持 sensitivityLabels。

后续步骤

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