管理组所有者的应用同意策略
应用同意策略是管理应用访问组织中数据所需的权限的一种方式。 它们用于控制用户可以同意的应用,并确保应用在访问数据之前须满足特定条件。 这些策略可帮助组织保持对其数据的控制,并确保只有受信任的应用程序才能访问这些数据。
在本文中,了解如何管理内置的和自定义的应用同意策略,以控制何时可以授予组所有者同意。
借助 Microsoft Graph 和 Microsoft Graph PowerShell,可以查看和管理组所有者同意策略。
组所有者同意策略由零个或多个“包括”条件集和零个或多个“排除”条件集构成。 对于要在组所有者同意策略中考虑的事件,“包括”条件集不得与任何“排除”条件集匹配。
每个条件集包含多个条件。 若要让事件与条件集匹配,条件集中的所有条件都必须得到满足。
ID 以“microsoft-”开头的组所有者同意策略是内置策略。 例如,microsoft-pre-approval-apps-for-group
组所有者同意策略描述了管理员允许组所有者执行以下操作的条件,即同意预先批准列表中的应用程序访问其拥有的组的数据。 内置策略可用在自定义目录角色中,可用来配置用户同意设置,但你不能编辑或删除它们。
先决条件
- 具有以下角色之一的用户或服务:
- 特权角色管理员
- 具有管理组所有者同意策略所需的权限的自定义角色
- Microsoft Graph 应用角色(应用程序权限)Policy.ReadWrite.PermissionGrant(在作为应用或服务连接时)
- 若要让组所有者同意受应用同意策略的约束,必须禁用组所有者同意设置。 禁用后,将从应用同意策略中读取当前策略。 若要了解如何禁用组所有者同意,请参阅禁用组所有者同意设置
若要使用 Microsoft Graph PowerShell 管理应用程序的组所有者同意策略,请连接到 Microsoft Graph PowerShell ,并使用先决条件部分中列出的某个角色登录。 你还需要同意 Policy.ReadWrite.PermissionGrant
权限。
# change the profile to beta by using the `Select-MgProfile` command
Select-MgProfile -Name "beta"
Connect-MgGraph -Scopes "Policy.ReadWrite.PermissionGrant"
使用 PowerShell 检索组所有者同意策略的当前值
了解如何验证组所有者同意设置是否已通过其他方式获得授权。
检索组所有者同意设置的当前值
Get-MgPolicyAuthorizationPolicy | select -ExpandProperty DefaultUserRolePermissions | ft PermissionGrantPoliciesAssigned
如果在
PermissionGrantPoliciesAssigned
中返回了ManagePermissionGrantPoliciesForOwnedResource
,则组所有者同意设置可能已通过其他方式获得授权。检查策略的适用范围是否为
group
。Get-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId {"microsoft-all-application-permissions-for-group"} | Select -ExpandProperty AdditionalProperties
如果为 ResourceScopeType
== group
,则表示组所有者同意设置已通过其他方式获得授权。 此外,如果已为组的应用同意策略分配 microsoft-pre-approval-apps-for-group
,则意味着为租户启用了预批准功能。
使用 PowerShell 列出现有组所有者同意策略
最好先熟悉组织中现有的组所有者同意策略:
列出所有组所有者同意策略:
Get-MgPolicyPermissionGrantPolicy | ft Id, DisplayName, Description
查看策略的“包括”条件集:
Get-MgPolicyPermissionGrantPolicyInclude -PermissionGrantPolicyId {"microsoft-all-application-permissions-for-group"} | fl
查看“排除”条件集:
Get-MgPolicyPermissionGrantPolicyExclude -PermissionGrantPolicyId {"microsoft-all-application-permissions-for-group"} | fl
使用 PowerShell 创建自定义组所有者同意策略
按照以下步骤创建自定义组所有者同意策略:
创建新的空组所有者同意策略。
New-MgPolicyPermissionGrantPolicy ` -Id "my-custom-app-consent-policy-for-group" ` -DisplayName "My first custom app consent policy for group" ` -Description "This is a sample custom app consent policy for group." ` -AdditionalProperties @{includeAllPreApprovedApplications = $false; resourceScopeType = "group"}
添加“包括”条件集。
# Include delegated permissions classified "low", for apps from verified publishers New-MgPolicyPermissionGrantPolicyInclude ` -PermissionGrantPolicyId "my-custom-app-consent-policy-for-group" ` -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-app-consent-policy-for-group" ` -PermissionType "delegated" ` -ResourceApplication $azureApi.AppId
重复此步骤来添加更多“排除”条件集。
创建组的应用同意策略后,你可以根据此策略允许组所有者同意。
使用 PowerShell 删除自定义组所有者同意策略
下面展示了如何删除自定义组所有者同意策略。
Remove-MgPolicyPermissionGrantPolicy -PermissionGrantPolicyId "my-custom-app-consent-policy-for-group"
若要管理组所有者同意策略,请使用先决条件部分中列出的角色之一登录到 Graph 浏览器。 你还需要同意 Policy.ReadWrite.PermissionGrant
权限。
使用 Microsoft Graph 检索组所有者同意策略的当前值
了解如何验证组所有者同意设置是否已通过其他方式获得授权。
检索当前策略值
GET /policies/authorizationPolicy
如果显示
ManagePermissionGrantPoliciesForOwnedResource
,则组所有者同意设置可能已通过其他方式获得授权。检查策略的范围是否为
group
GET /policies/permissionGrantPolicies/{ microsoft-all-application-permissions-for-group }
如果为
resourceScopeType
==group
,则表示组所有者同意设置已通过其他方式获得授权。 此外,如果已为组的应用同意策略分配microsoft-pre-approval-apps-for-group
,则意味着为租户启用了预批准功能。
使用 Microsoft Graph 列出现有组所有者同意策略
最好先熟悉组织中现有的组所有者同意策略:
列出所有应用同意策略:
GET /policies/permissionGrantPolicies
查看策略的“包括”条件集:
GET /policies/permissionGrantPolicies/{ microsoft-all-application-permissions-for-group }/includes
查看“排除”条件集:
GET /policies/permissionGrantPolicies/{ microsoft-all-application-permissions-for-group }/excludes
使用 Microsoft Graph 创建自定义组所有者同意策略
按照以下步骤创建自定义组所有者同意策略:
创建新的空组所有者同意策略。
POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies { "id": "my-custom-app-consent-policy-for-group", "displayName": "My first custom app consent policy for group", "description": "This is a sample custom app consent policy for group", "includeAllPreApprovedApplications": false, "resourceScopeType": "group" }
添加“包括”条件集。
包括来自已验证的发布者的应用的归类为“低”的委托的权限
POST https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies/{ my-custom-app-consent-policy-for-group }/includes { "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-app-consent-policy-for-group }/excludes { "permissionType": "delegated", "resourceApplication": "00001111-aaaa-2222-bbbb-3333cccc4444 " }
重复此步骤来添加其他“排除”条件集。
创建组所有者同意策略后,你可以根据此策略允许组所有者同意。
使用 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 。 |
警告
无法还原已删除的组所有者同意策略。 如果意外删除了自定义组所有者同意策略,则需要重新创建该策略。
获取帮助或查找问题的答案: