本文介绍如何使用 Microsoft Entra 管理中心、Microsoft Graph PowerShell 或 Microsoft Graph API 列出在 Microsoft Entra ID 中分配的角色。
列出我的角色分配
你也可轻松列出自己的权限。 在“角色和管理员”页上,选择“你的角色”以查看当前分配给你的角色。
Microsoft Entra 管理中心中“角色和管理员”页的  
列出用户的角色分配
按照以下步骤使用 Microsoft Entra 管理中心列出用户的 Microsoft Entra 角色。 你的体验将有所不同,具体取决于是否已启用 Microsoft Entra Privileged Identity Management (PIM)。
- 登录 Microsoft Entra 管理中心。 
- 浏览到 Entra ID>用户。 
- 选择“用户名”>“分配的角色”。 - 可以在不同的范围内查看分配给用户的角色列表。 此外,还可以查看该角色是直接分配的还是通过组分配的。   
 - 如果你有 Microsoft Entra ID P2 许可证,将看到 PIM 体验,其中包含合格、活动和过期的角色分配详细信息。   
 
列出组的角色分配
- 登录 Microsoft Entra 管理中心。 
- 浏览到 Entra ID>组>所有组。 
- 选择可分配角色的组。 - 若要确定组是否可分配角色,可以查看组 属性。 
- 选择“分配的角色”。 - 你现在可以查看分配给此组的所有 Microsoft Entra 角色。 如果未看到 可分配的角色 选项,则该组不是一个可分配角色的组。   
 
下载角色分配
要下载所有角色(包括内置角色和自定义角色)的所有活动角色分配,请执行以下步骤。
批量操作最多可运行 1 小时,且存在针对大型租户的限制。 有关详细信息,请参阅批量操作和在 Microsoft Entra ID 中批量创建用户。
- 在“角色和管理员”页上,选择“所有角色”。 
- 选择“下载分配”。   
 
- 指定文件名并选择“开始下载”。 - 随即将下载一个 CSV 文件,其中列出了所有角色的所有范围内的分配。 
若要下载特定角色的角色分配,请执行以下步骤。
- 在“角色和管理员”页上,选择一个角色。 
- 选择“下载分配”。 - 如果你有 Microsoft Entra ID P2 许可证,将看到 PIM 体验。 选择“导出”以下载角色分配。 - 将会下载一个 CSV 文件,其中列出了该角色的所有范围内的分配。 
列出租户范围的角色分配
此过程介绍如何列出租户范围的角色分配。
- 登录 Microsoft Entra 管理中心。 
- 浏览到 Entra ID>角色与管理员。 
- 选择角色名称以打开该角色。 不要勾选该角色。   
 
- 选择“分配”以列出角色分配。   
 
- 在“范围”列中,查看具有“目录”范围的角色分配。 
列出应用注册范围的角色分配
此部分介绍如何列出单一应用程序范围的角色分配。
- 登录 Microsoft Entra 管理中心。 
- 浏览至 Entra ID>应用注册。 
- 为要查看的角色分配列表选择一个应用注册。 - 可能需要选择“所有应用程序”才能查看 Microsoft Entra 组织中应用注册的完整列表。 
- 选择角色和管理员。 
- 选择角色名称以打开该角色。 
- 选择“分配”以列出角色分配。 - 在“应用注册”中打开分配页会显示局限于此 Microsoft Entra 资源的角色分配。   
 
- 在“范围”列中,查看“此资源”范围的角色分配。 
列出管理单元范围的角色分配
可以在Microsoft Entra 管理中心的 管理单元 部分中查看使用管理单元范围创建的所有角色分配。
- 登录 Microsoft Entra 管理中心。 
- 浏览到 Entra ID>角色与管理员>管理单元。 
- 选择一个管理单元以查看角色分配列表。 
- 选择角色和管理员。 
- 选择角色名称以打开该角色。 
- 选择“分配”以列出角色分配。   
 
- 在“范围”列中,查看“此资源”范围的角色分配。 
本部分介绍如何查看具有租户范围的角色分配。 本部分使用 Microsoft Graph PowerShell 模块。
设置
- 使用 Install-Module安装 Microsoft Graph 模块。 - Install-Module -name Microsoft.Graph
 
- 使用 Connect-MgGraph 命令登录并使用 Microsoft Graph PowerShell cmdlet。 - Connect-MgGraph
 
列出租户范围的角色分配
使用 Get-MgRoleManagementDirectoryRoleDefinition 和 Get-MgRoleManagementDirectoryRoleAssignment 命令列出角色分配。
以下示例演示如何列出组管理员角色的角色分配。
# Get a specific directory role by ID
$role = Get-MgRoleManagementDirectoryRoleDefinition -UnifiedRoleDefinitionId fdd7a751-b60b-444a-984c-02652fe8fa1c
# Get role assignments for a given role definition
Get-MgRoleManagementDirectoryRoleAssignment -Filter "roleDefinitionId eq '$($role.Id)'"
Id                                            PrincipalId                          RoleDefinitionId                     DirectoryScopeId AppScop
                                                                                                                                         eId
--                                            -----------                          ----------------                     ---------------- -------
lAPpYvVpN0KRkAEhdxReEH2Fs3EjKm1BvSKkcYVN2to-1 aaaaaaaa-bbbb-cccc-1111-222222222222 62e90394-69f5-4237-9190-012177145e10 /
lAPpYvVpN0KRkAEhdxReEMdXLf2tIs1ClhpzQPsutrQ-1 bbbbbbbb-cccc-dddd-2222-333333333333 62e90394-69f5-4237-9190-012177145e10 /
以下示例演示如何列出所有角色(包括内置角色和自定义角色)的所有活动角色分配。
$roles = Get-MgRoleManagementDirectoryRoleDefinition
foreach ($role in $roles)
{
  Get-MgRoleManagementDirectoryRoleAssignment -Filter "roleDefinitionId eq '$($role.Id)'"
}
Id                                            PrincipalId                          RoleDefinitionId                     DirectoryScopeId AppScop
                                                                                                                                         eId
--                                            -----------                          ----------------                     ---------------- -------
lAPpYvVpN0KRkAEhdxReEH2Fs3EjKm1BvSKkcYVN2to-1 aaaaaaaa-bbbb-cccc-1111-222222222222 62e90394-69f5-4237-9190-012177145e10 /
lAPpYvVpN0KRkAEhdxReEMdXLf2tIs1ClhpzQPsutrQ-1 bbbbbbbb-cccc-dddd-2222-333333333333 62e90394-69f5-4237-9190-012177145e10 /
4-PYiFWPHkqVOpuYmLiHa3ibEcXLJYtFq5x3Kkj2TkA-1 cccccccc-dddd-eeee-3333-444444444444 88d8e3e3-8f55-4a1e-953a-9b9898b8876b /
4-PYiFWPHkqVOpuYmLiHa2hXf3b8iY5KsVFjHNXFN4c-1 dddddddd-eeee-ffff-4444-555555555555 88d8e3e3-8f55-4a1e-953a-9b9898b8876b /
BSub0kaAukSHWB4mGC_PModww03rMgNOkpK77ePhDnI-1 eeeeeeee-ffff-aaaa-5555-666666666666 d29b2b05-8046-44ba-8758-1e26182fcf32 /
BSub0kaAukSHWB4mGC_PMgzOWSgXj8FHusA4iaaTyaI-1 ffffffff-aaaa-bbbb-6666-777777777777 d29b2b05-8046-44ba-8758-1e26182fcf32 /
列出主体的角色分配
使用 Get-MgRoleManagementDirectoryRoleAssignment 命令列出主体的角色分配。
# Get role assignments for a given principal
Get-MgRoleManagementDirectoryRoleAssignment -Filter "PrincipalId eq 'aaaaaaaa-bbbb-cccc-1111-222222222222'"
列出主体的直接和可传递角色分配
使用 List transitiveRoleAssignments API 直接以可传递方式向用户分配角色。
$response = $null
$uri = "https://graph.microsoft.com/beta/roleManagement/directory/transitiveRoleAssignments?`$count=true&`$filter=principalId eq 'aaaaaaaa-bbbb-cccc-1111-222222222222'"
$method = 'GET'
$headers = @{'ConsistencyLevel' = 'eventual'}
$response = (Invoke-MgGraphRequest -Uri $uri -Headers $headers -Method $method -Body $null).value
列出组的角色分配
使用 Get-MgGroup 命令获取组。
Get-MgGroup -Filter "DisplayName eq 'Contoso_Helpdesk_Administrators'"
使用 Get-MgRoleManagementDirectoryRoleAssignment 命令列出该组的角色分配。
Get-MgRoleManagementDirectoryRoleAssignment -Filter "PrincipalId eq '<object id of group>'" 
列出管理单元范围的角色分配
使用 Get-MgDirectoryAdministrativeUnitScopedRoleMember 命令列出具有管理单元作用域的角色分配。
$adminUnit = Get-MgDirectoryAdministrativeUnit -Filter "displayname eq 'Example_admin_unit_name'"
Get-MgDirectoryAdministrativeUnitScopedRoleMember -AdministrativeUnitId $adminUnit.Id | FL *
此部分介绍如何列出租户范围的角色分配。 使用 List unifiedRoleAssignments API 获取角色分配。
列出主体的角色分配
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=principalId+eq+'<object-id-of-principal>'
Response
HTTP/1.1 200 OK
{
"value":[
            { 
                "id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1"
                "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
                "roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
                "directoryScopeId": "/"  
            } ,
            {
                "id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
                "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
                "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
                "directoryScopeId": "/"
            }
        ]
}
列出主体的直接和可传递角色分配
按照以下步骤,使用 Graph 浏览器中的 Microsoft Graph API 列出分配给用户的 Microsoft Entra 角色。
- 登录到 Graph 浏览器。 
- 使用 List transitiveRoleAssignments API 直接以可传递方式向用户分配角色。 将以下查询添加到 URL。 - GET https://graph.microsoft.com/beta/rolemanagement/directory/transitiveRoleAssignments?$count=true&$filter=principalId eq 'aaaaaaaa-bbbb-cccc-1111-222222222222'
 
- 导航到“请求标头”选项卡。添加 - ConsistencyLevel作为键,- Eventual作为其值。
 
- 选择 运行查询。 
列出组的角色分配
使用 Get Group API 获取组。
GET https://graph.microsoft.com/v1.0/groups?$filter=displayName+eq+'Contoso_Helpdesk_Administrator'
使用 List unifiedRoleAssignments API 获取角色分配。
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=principalId eq
列出某一角色定义的角色分配
以下示例演示如何列出特定角色定义的角色分配。
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=roleDefinitionId eq '<template-id-of-role-definition>'
Response
HTTP/1.1 200 OK
{
    "id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1",
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "00000000-0000-0000-0000-000000000000",
    "directoryScopeId": "/"
}
按 ID 列出角色分配
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Response
HTTP/1.1 200 OK
{ 
    "id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1",
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
    "directoryScopeId": "/"
}
列出应用注册范围的角色分配
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=directoryScopeId+eq+'/d23998b1-8853-4c87-b95f-be97d6c6b610'
Response
HTTP/1.1 200 OK
{
"value":[
            { 
                "id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1"
                "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
                "roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
                "directoryScopeId": "/d23998b1-8853-4c87-b95f-be97d6c6b610"
            } ,
            {
                "id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
                "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
                "roleDefinitionId": "00000000-0000-0000-0000-000000000000",
                "directoryScopeId": "/d23998b1-8853-4c87-b95f-be97d6c6b610"
            }
        ]
}
列出管理单元范围的角色分配
使用列出 scopedRoleMembers API 列出具有管理单元作用域的角色分配。
请求
GET /directory/administrativeUnits/{admin-unit-id}/scopedRoleMembers
身体
{}