配置权限分类

本文介绍如何在 Microsoft Entra ID 中配置权限分类。 通过权限分类,可根据组织的策略和风险评估确定不同权限的影响。 例如,可使用同意策略中的权限分类来确定允许用户同意哪一组权限。

支持三种权限分类:“低”、“中”(预览)和“高”(预览)。 目前,只能对无需管理员同意的委托权限进行分类。

执行基本登录所需的最小权限是 openidprofileemailoffline_access,它们是 Microsoft Graph 上的所有委托的权限。 借助这些权限,应用可以读取已登录用户配置文件的详细信息,并且即使用户不再使用该应用,也可以保留此访问权限。

先决条件

要配置权限分类,你需要:

  • 具有活动订阅的 Azure 帐户。 免费创建帐户
  • 以下角色之一:全局管理员、应用程序管理员或云应用程序管理员

管理权限分类

提示

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

使用 Microsoft Entra 管理中心按照以下步骤对权限进行分类:

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“同意和权限”>“权限分类”。
  3. 选择适用于要更新的权限分类的选项卡。
  4. 选择“添加权限”以对另一个权限进行分类。
  5. 选择 API,然后选择委托的权限。

在下例中,我们对单一登录所需的最小一组权限进行了分类:

Permission classifications

可使用最新的 Azure AD PowerShell 对权限进行分类。 权限分类是在发布权限的 API 的 ServicePrincipal 对象上配置的。

运行以下命令以连接到 Azure AD PowerShell。 若要同意所需的范围,请至少以云应用程序管理员身份登录。

Connect-AzureAD

使用 Azure AD PowerShell 列出当前权限分类

  1. 检索 API 的 ServicePrincipal 对象。 在这里,我们将检索 Microsoft Graph API 的 ServicePrincipal 对象:

    $api = Get-AzureADServicePrincipal `
        -Filter "servicePrincipalNames/any(n:n eq 'https://graph.microsoft.com')"
    
  2. 读取 API 的委托权限分类:

    Get-AzureADMSServicePrincipalDelegatedPermissionClassification `
        -ServicePrincipalId $api.ObjectId | Format-Table Id, PermissionName, Classification
    

使用 Azure AD PowerShell 将权限分类为“低影响”

  1. 检索 API 的 ServicePrincipal 对象。 在这里,我们将检索 Microsoft Graph API 的 ServicePrincipal 对象:

    $api = Get-AzureADServicePrincipal `
        -Filter "servicePrincipalNames/any(n:n eq 'https://graph.microsoft.com')"
    
  2. 查找要对其分类的委托的权限:

    $delegatedPermission = $api.OAuth2Permissions | Where-Object { $_.Value -eq "User.ReadBasic.All" }
    
  3. 使用权限名称和 ID 设置权限分类:

    Add-AzureADMSServicePrincipalDelegatedPermissionClassification `
       -ServicePrincipalId $api.ObjectId `
       -PermissionId $delegatedPermission.Id `
       -PermissionName $delegatedPermission.Value `
       -Classification "low"
    

使用 Azure AD PowerShell 删除委托的权限分类

  1. 检索 API 的 ServicePrincipal 对象。 在这里,我们将检索 Microsoft Graph API 的 ServicePrincipal 对象:

    $api = Get-AzureADServicePrincipal `
        -Filter "servicePrincipalNames/any(n:n eq 'https://graph.microsoft.com')"
    
  2. 若要查找要删除的委托权限分类:

    $classifications = Get-AzureADMSServicePrincipalDelegatedPermissionClassification `
        -ServicePrincipalId $api.ObjectId
    $classificationToRemove = $classifications | Where-Object {$_.PermissionName -eq "User.ReadBasic.All"}
    
  3. 请删除权限分类:

    Remove-AzureADMSServicePrincipalDelegatedPermissionClassification `
        -ServicePrincipalId $api.ObjectId `
        -Id $classificationToRemove.Id
    

可以使用 Microsoft Graph PowerShell 对权限进行分类。 权限分类是在发布权限的 API 的 ServicePrincipal 对象上配置的。

运行以下命令以连接到 Microsoft Graph PowerShell。 若要同意所需的范围,请至少以云应用程序管理员身份登录。

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

使用 Microsoft Graph PowerShell 列出 API 的当前权限分类

  1. 检索 API 的 servicePrincipal 对象:

    $api = Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" 
    
  2. 读取 API 的委托权限分类:

    Get-MgServicePrincipalDelegatedPermissionClassification -ServicePrincipalId $api.Id 
    

使用 Microsoft Graph PowerShell 将权限分类为“低影响”

  1. 检索 API 的 servicePrincipal 对象:

    $api = Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" 
    
  2. 查找要对其分类的委托的权限:

    $delegatedPermission = $api.Oauth2PermissionScopes | Where-Object {$_.Value -eq "openid"} 
    
  3. 设置权限分类:

    $params = @{ 
       PermissionId = $delegatedPermission.Id 
       PermissionName = $delegatedPermission.Value 
       Classification = "Low"
    } 
    
    New-MgServicePrincipalDelegatedPermissionClassification -ServicePrincipalId $api.Id -BodyParameter $params 
    

使用 Microsoft Graph PowerShell 删除委托的权限分类

  1. 检索 API 的 servicePrincipal 对象:

    $api = Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" 
    
  2. 若要查找要删除的委托权限分类:

    $classifications = Get-MgServicePrincipalDelegatedPermissionClassification -ServicePrincipalId $api.Id 
    
    $classificationToRemove = $classifications | Where-Object {$_.PermissionName -eq "openid"}
    
  3. 请删除权限分类:

Remove-MgServicePrincipalDelegatedPermissionClassification -DelegatedPermissionClassificationId $classificationToRemove.Id   -ServicePrincipalId $api.id 

若要为企业应用程序配置权限分类,请至少以云应用程序管理员身份登录到 Graph 资源管理器

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

在 Microsoft Graph 浏览器上运行以下查询,以便为应用程序添加委托的权限分类。

使用 Microsoft Graph API 列出 API 的当前权限分类

使用以下 Microsoft Graph API 调用列出 API 的当前权限分类。

GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')/delegatedPermissionClassifications

使用 Microsoft Graph API 将权限分类为“低影响”

在以下示例中,我们将权限分类为“低影响”。

使用以下 Microsoft Graph API 调用为 API 添加委托的权限分类。

POST https://graph.microsoft.com/v1.0/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')/delegatedPermissionClassifications
Content-type: application/json

{
   "permissionId": "b4e74841-8e56-480b-be8b-910348b18b4c",
   "classification": "low"
}

使用 Microsoft Graph API 删除委托的权限分类

在 Microsoft Graph 浏览器上运行以下查询,以便为 API 添加委托的权限分类。

DELETE https://graph.microsoft.com/v1.0/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')/delegatedPermissionClassifications/QUjntFaOC0i-i5EDSLGLTAE

后续步骤