管理应用同意策略
应用同意策略是管理应用访问组织中数据所需的权限的一种方式。 它们用于控制用户可以同意的应用,并确保应用在访问数据之前须满足特定条件。 这些策略可帮助组织保持对其数据的控制,并确保仅将访问权限授予受信任的应用。
在本文中,了解如何管理内置的和自定义的应用同意策略,以控制何时可以授予同意。
借助 Microsoft Graph 和 Microsoft Graph PowerShell,可以查看和管理应用同意策略。
一个应用同意策略由一个或多个“包括”条件集和零个或零个以上“排除”条件集组成。 对于要在应用同意策略中考虑的事件,它必须与至少一个“包括”条件集匹配,并且不得与任何“排除”条件集匹配。
每个条件集包含多个条件。 若要让事件与条件集匹配,条件集中的所有条件都必须得到满足。
ID 以“microsoft-”开头的应用同意策略是内置策略。 其中的某些内置策略用于现有的内置目录角色。 例如,microsoft-application-admin
应用同意策略描述了允许“应用程序管理员”和“云应用程序管理员”角色授予租户级管理员同意的条件。 内置策略可用在自定义目录角色中,可用来配置用户同意设置,但你不能编辑或删除它们。
先决条件
- 具有以下角色之一的用户或服务:
- 特权角色管理员目录角色
- 具有管理应用同意策略所需的权限的自定义目录角色
- 在作为应用或服务连接时的 Microsoft Graph 应用角色(应用程序权限)
Policy.ReadWrite.PermissionGrant
要使用 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
警告
无法还原已删除的应用同意策略。 如果意外删除了自定义应用同意策略,需要重新创建该策略。
支持的条件
下表提供了应用同意策略支持的条件的列表。
条件 | 说明 |
---|---|
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。 |
后续步骤
获取帮助或查找问题的答案: