应用同意策略是管理应用访问组织中数据所需的权限的一种方式。 它们用于控制用户可以同意的应用,并确保应用在访问数据之前须满足特定条件。 这些策略可帮助组织保持对其数据的控制,并确保仅将访问权限授予受信任的应用。 借助 Microsoft Graph 和 Microsoft Graph PowerShell,可以查看和管理应用同意策略。
在本文中,了解如何管理内置的和自定义的应用同意策略,以控制何时可以授予同意。 可以使用自定义角色将应用同意策略分配给特定用户或组,也可以为组织中的最终用户设置默认应用许可策略。
应用同意政策部分
一个应用同意策略由一个或多个“包括”条件集和零个或零个以上“排除”条件集组成。 对于要在应用同意策略中考虑的事件,它必须与至少一个“包括”条件集匹配,并且不得与任何“排除”条件集匹配。 排除和包含用于确定受给定策略影响的参与者是否可以授予同意。
应用同意策略有三个主要部分:
- 元数据: 应用同意策略的属性保存 ID、说明和同意策略的显示名称等信息。
- 包含的条件集: 一组条件集,给定的应用许可请求必须至少匹配其中一个,才能令策略通过。 此集合必须至少设置 一个 条件。 每个条件集都包含描述应用许可请求的特征的规则,例如已验证的发布者状态、请求的权限等。
- 排除的条件集: 指一组条件集,即给定的应用许可请求不应与其中任何一个匹配才能通过。 此集合可以为空(它可以包含零个排除的条件集)。 每个条件集都包含描述应用许可请求的特征的规则,例如已验证的发布者状态、请求的权限等。
支持的条件
每个条件集包含多个条件。 若要让事件与条件集匹配,条件集中的所有条件都必须得到满足。 例如,条件集可能指定“发布者已验证、在此租户中创建并请求 Microsoft Graph 委托邮件。Read”与发布者已验证、在租户中创建以及请求 openid 和配置文件范围的客户端应用程序的同意请求不匹配。
条件集包括一个或多个属性,用于定义所请求的应用或权限的特征。 此处提供了属性的完整列表 。
内置同意策略
每个租户都附带一组应用许可策略,这些策略在所有租户中都是相同的。 其中的某些内置策略用于现有的内置目录角色。 例如,microsoft-application-admin 应用同意策略描述了允许“应用程序管理员”和“云应用程序管理员”角色授予租户级管理员同意的条件。 内置策略可用于自定义目录角色或配置组织的默认同意策略。 无法编辑这些策略。 内置策略的列表包括:
- microsoft-user-default-low: 默认情况下,成员类型用户可许可的所有低风险权限。
- microsoft-user-default-recommended: 根据Microsoft的当前建议,可许可的权限。
- microsoft-all-application-permissions: 包括所有应用程序权限(应用角色)、所有 API 以及任何客户端应用程序的权限。
- microsoft-动态托管权限-for-chat: 包括允许聊天资源特定许可的动态管理权限。
- microsoft-all-application-permissions-for-chat: 包括所有与聊天资源相关的特定应用程序权限,涵盖所有 API,适用于任何客户端应用程序。
- microsoft-动态托管权限-团队: 包括允许特定资源许可的动态管理权限。
- microsoft-pre-approval-apps-for-chat: 包括通过权限为聊天资源特定许可授予预审批策略的应用。
- microsoft-pre-approval-apps-for-team: 包括根据针对团队资源特定同意的权限授予预审批策略预先批准的应用程序。
- microsoft-all-application-permissions-verified: 包括针对所有 API 的所有应用程序权限(应用角色),适用于来自已验证发布者或在此组织中注册的客户端应用程序。
- microsoft-application-admin: 应用程序管理员可许可的权限。
- microsoft-company-admin: 公司管理员可许可的权限。
警告
Microsoft-user-default-recommended 是由 Microsoft 管理的策略。 策略中包含的条件会根据Microsoft的最新安全建议自动更新,以便最终用户同意。
Microsoft建议的当前设置
标记为“允许Microsoft管理许可设置”的设置(Microsoft托管策略)将使用Microsoft的最新建议的默认许可设置进行更新。 这也是新租户的默认值。 设置的规则目前为:最终用户可以同意任何用户可许可的委派权限,但不包括:Files.Read.All、Files.ReadWrite.All、Sites.Read.All、Sites.ReadWrite.All。
此同意策略的更新将至少提前 30 天通知。
注释
从 2025 年 10 月底开始,Microsoft 管理策略将更新为要求管理员同意以下 MS Graph 权限:Mail.Read、Mail.ReadWrite、Mail.ReadBasic、Mail.Read.Shared、Mail.ReadBasic.Shared、Mail.ReadWrite.Shared、MailboxItem.Read、Calendars.Read、Calendars.ReadBasic、Calendars.ReadWrite、Calendars.Read.Shared、Calendars.ReadBasic.Shared、Calendars.ReadWrite.Shared、Chat.Read、Chat.ReadWrite、ChannelMessage.Read.All、OnlineMeetings.Read、OnlineMeetings.ReadWrite、OnlineMeetingTranscript.Read.All、OnlineMeetingsRecording.Read.All。 在 2025 年 11 月底,这将扩展到包括 EAS.AccessAsUser.All、EWS.AccessAsUser.All、IMAP.AccessAsUser.All、POP.AccessAsUser.All
多个策略
用户可以拥有多个允许他们同意的策略。 将对每个政策单独评估(即,一个政策的排除不会影响其他政策的包含),用户只需获得一个政策的批准即可同意特定事件。 例如,应用程序管理员可以同意常规用户可以拥有的所有内容(这要归功于应用于所有用户的默认策略),并且他们还可以通过 microsoft-application-admin 策略获得更广泛的权限,这允许他们批准对任何 API 权限的请求(Microsoft Graph 应用角色除外)。
先决条件
- 具有以下角色之一的用户或服务:
- 特权角色管理员目录角色
- 具有管理应用同意策略所需的权限的自定义目录角色
- 在作为应用或服务连接时的 Microsoft Graph 应用角色(应用程序权限)
Policy.ReadWrite.PermissionGrant
- 熟悉 (权限授予条件集)[/graph/api/resources/permissiongrantconditionset?view=graph-rest-1.0]
要使用 Microsoft Graph PowerShell 管理应用程序的应用同意策略,请连接到 Microsoft Graph PowerShell。
Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant"
列出现有的应用同意策略
最好先熟悉组织中现有的应用同意策略:
列出所有应用同意策略。 这会显示组织创建的所有内置策略和任何自定义策略:
Get-MgPolicyPermissionGrantPolicy | ft Id, DisplayName, Description查看策略的“包括”条件集:
Get-MgPolicyPermissionGrantPolicyInclude -PermissionGrantPolicyId "microsoft-application-admin" | fl查看“排除”条件集:
Get-MgPolicyPermissionGrantPolicyExclude -PermissionGrantPolicyId "microsoft-application-admin" | fl
使用 PowerShell 创建自定义应用同意策略
按照以下步骤创建自定义应用同意策略:
创建新的空的应用同意策略。
New-MgPolicyPermissionGrantPolicy ` -Id "my-custom-policy" ` -DisplayName "My first custom consent policy" ` -Description "This is a sample custom app consent policy."添加“包括”条件集。
# Include delegated permissions classified "low", for apps from verified publishers New-MgPolicyPermissionGrantPolicyInclude ` -PermissionGrantPolicyId "my-custom-policy" ` -PermissionType "delegated" ` -PermissionClassification "low" ` -ClientApplicationsFromVerifiedPublisherOnly重复此步骤来添加更多“包括”条件集。
(可选)添加“排除”条件集。
# 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 中的自定义角色。 然后,需要将用户分配到该自定义角色,从而附加到所创建的应用同意策略。 有关如何将应用同意策略分配给自定义角色的详细信息,请参阅自定义角色的应用同意权限。
使用 PowerShell 删除自定义应用同意策略
下面的 cmdlet 展示了如何删除自定义应用同意策略。
Remove-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId "my-custom-policy"
若要管理应用同意策略,请使用先决条件部分中列出的角色之一登录到 Graph 浏览器。
你需要同意 Policy.ReadWrite.PermissionGrant 权限。
使用 Microsoft Graph 列出现有的应用同意策略
最好先熟悉组织中现有的应用同意策略:
列出所有应用同意策略。 这会显示组织创建的所有内置策略和任何自定义策略:
GET /policies/permissionGrantPolicies?$select=id,displayName,description查看策略的“包括”条件集:
GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/includes查看“排除”条件集:
GET /policies/permissionGrantPolicies/{ microsoft-application-admin }/excludes
使用 Microsoft Graph 创建自定义应用同意策略
按照以下步骤创建自定义应用同意策略:
创建新的空的应用同意策略。
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" }添加“包括”条件集。
包括来自已验证的发布者的应用的归类为“低”的委托的权限
POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-policy }/includes Content-Type: application/json { "permissionType": "delegated", "PermissionClassification": "low", "clientApplicationsFromVerifiedPublisherOnly": true }重复此步骤来添加更多“包括”条件集。
(可选)添加“排除”条件集。 排除 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 中的自定义角色。 然后,需要将用户分配到该自定义角色,从而附加到所创建的应用同意策略。 有关如何将应用同意策略分配给自定义角色的详细信息,请参阅自定义角色的应用同意权限。
使用 Microsoft Graph 删除自定义应用同意策略
下面展示了如何删除自定义应用同意策略。
DELETE https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/ my-custom-policy
警告
无法还原已删除的应用同意策略。 如果意外删除了自定义应用同意策略,则需要重新创建策略。
后续步骤
获取帮助或查找问题的答案: