unifiedRoleDefinition: assignedPrincipals

命名空间:microsoft.graph

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

获取安全主体列表, (用户、组和服务主体) 直接或可传递地分配给不同范围的特定角色。 还可以使用 $count 查询参数来获取计数。

仅目录 (Microsoft Entra ID) 提供程序支持此 API。

若要列出特定主体的直接和可传递角色分配,请使用 列出 transitiveRoleAssignments API。

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) RoleManagement.Read.Directory Directory.Read.All、RoleManagement.ReadWrite.Directory
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 RoleManagement.Read.Directory Directory.Read.All、RoleManagement.ReadWrite.Directory

重要

在具有工作或学校帐户的委托方案中,必须为登录用户分配受支持的Microsoft Entra角色或具有支持的角色权限的自定义角色。 此操作支持以下最低特权角色:

  • 目录读取器
  • 全局读取者
  • 特权角色管理员

重要

当应用程序查询返回 directoryObject 类型集合的关系时,如果它没有读取特定资源类型的权限,则会返回该类型的成员,但信息有限。 例如,仅返回对象类型和 ID@odata.type 属性,而其他属性则指示为 null。 通过此行为,应用程序可以请求所需的最低特权权限,而不是依赖于 目录集。*权限。 有关详细信息,请参阅为不可访问的成员对象返回有限的信息

HTTP 请求

GET /roleManagement/directory/roleDefinitions/{unifiedRoleDefinitionId}/assignedPrincipals(transitive=@transitive,directoryScopeType='@directoryScopeType',directoryScopeId='@directoryScopeId')

函数参数

在请求 URL 中,提供以下查询参数(含值)。 下表显示了可用于此函数的参数。

参数 类型 说明
及物 布尔值 指示是包括通过组成员身份分配的主体 (直接还是可传递) 。 false 默认情况下。
directoryScopeType String 要为其分配主体的目录范围。 支持的值为 tenantadministrativeUnitresource
directoryScopeId String 要为其分配的主体的目录范围的 ID。 默认情况下,将考虑所有范围。

还可以将所有受支持的函数参数组合到一个请求中,以获取细化结果。

directoryScopeType 的示例查询模式

范围 查询 支持
所有范围 /assignedPrincipals(transitive={true | false}) 所有角色
租户范围 /assignedPrincipals(directoryScopeType='tenant', transitive={true | false}) 所有角色
所有管理单元范围 /assignedPrincipals(directoryScopeType='administrativeUnit', transitive={true | false}) 目录角色
特定管理单元范围 /assignedPrincipals(directoryScopeType='administrativeUnit', directoryScopeId ='{roleDefinitionId | templateId}', transitive={true | false}) 目录角色
所有资源范围 /assignedPrincipals(directoryScopeType='resource', transitive={true | false}) 目录角色
特定资源范围 /assignedPrincipals(directoryScopeType='resource', directoryScopeId ='{roleDefinitionId | templateId}', transitive={true | false}) 目录角色

可选的查询参数

此方法支持 $count$select$filter$orderby OData 查询参数来帮助自定义响应。 还可以使用 OData 强制转换按对象类型进行筛选。 例如, /assignedPrincipals(transitive=false)/microsoft.graph.user/assignedPrincipals(transitive=true)/microsoft.graph.servicePrincipal/$count。 若要了解一般信息,请参阅 OData 查询参数

请求标头

名称 说明
Authorization 持有者 {token}。 必填。 详细了解 身份验证和授权
ConsistencyLevel 最终。 必填。 有关使用 ConsistencyLevel 的详细信息,请参阅 对目录对象的高级查询功能

请求正文

请勿提供此方法的请求正文。

响应

如果成功,此函数在 200 OK 响应正文中返回响应代码和 directoryObject 集合。

示例

对于本部分中的示例,请考虑以下角色分配方案。 名为 User1 的用户具有直接和可传递角色分配,如下所示:

用户 Role 范围
User1
6c62e70d-f5f5-4b9d-9eea-ed517ed9341f
Role1 Scope1
User1
6c62e70d-f5f5-4b9d-9eea-ed517ed9341f
Role1 Scope2
Group1
86b38db7-6e8b-4ad2-b2aa-ced7f09486c1
(User1 是成员)
Role1 Scope1
Group2
182351a6-d974-4d18-88ae-8a148da44cd2
(User1 是成员)
Role1 Scope1
Group3
b93d5379-a464-4db5-b8e1-694910f1e11e
(User2 是成员)
(User3 是成员)
Role1 Scope3
  • User1 直接在 Scope1 范围分配 Role1 角色。
  • User1 直接在 Scope2 范围内分配了 Role1 角色。
  • User1 是 Group1 组的成员,Group1 在 Scope1 范围内分配有 Role1 角色。
  • User1 是 Group2 组的成员,Group2 在 Scope1 范围内分配有 Role1 角色。
  • User2 是 Group3 组的成员,Group3 在 Scope3 范围内分配有 Role1 角色。
  • User3 是 Group3 组的成员,Group3 在 Scope3 范围内分配有 Role1 角色。

示例 1:获取所有范围的直接和可传递分配主体的计数

请求

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals(transitive=true)/$count

响应

上述请求返回的计数为 6,表示以下角色分配:

  • 在 Scope1 和 Scope2 上向 User1 分配两个直接角色
  • 通过 Group1 和 Group2 向 User1 分配两个可传递角色
  • 通过 Group3 向用户 2 和 User3 分配两个可传递角色。
HTTP/1.1 200 OK
Content-type: text/plain

6

根据相同的方案,以下示例显示了针对每个查询模式返回的计数:

示例 记数
/assignedPrincipals(transitive=false)/$count 4
(User1、Group1、Group2、Group3)
/assignedPrincipals(transitive=false)/microsoft.graph.user/$count 1
(User1)
/assignedPrincipals(transitive=true)/microsoft.graph.user/$count 3
(User1、User2、User3)
/assignedPrincipals(transitive=false)/microsoft.graph.group/$count 3
(Group1、Group2、Group3)
/assignedPrincipals(transitive=true)/microsoft.graph.group/$count 3
(Group1、Group2、Group3)

示例 2:获取特定管理单元范围和目录角色的直接分配主体

请求

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals(directoryScopeType='administrativeUnit', directoryScopeId ='d0c2e067-9ae9-4dbf-a280-51a51c46f432')

响应

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects",
  "value": [
    {
        "@odata.type": "#microsoft.graph.user",
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f"
    }
  ]
}

示例 3:获取所有范围的直接分配主体

请求

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals

响应

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects",
  "value": [
    {
        "@odata.type": "#microsoft.graph.user",
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f",
        "displayName": null,
        "userPrincipalName": null
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "86b38db7-6e8b-4ad2-b2aa-ced7f09486c1",
        "displayName": "Group1"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "182351a6-d974-4d18-88ae-8a148da44cd2",
        "displayName": "Group2"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "b93d5379-a464-4db5-b8e1-694910f1e11e",
        "displayName": "Group3"
    }
  ]
}

示例 4:仅获取租户范围的直接分配用户

请求

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals(directoryScopeType='tenant')/microsoft.graph.user

响应

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#users",
  "value": [
    {
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f",
        "displayName": null,
        "userPrincipalName": null
    }
  ]
}

示例 5:获取直接分配的主体和内联计数

以下示例获取直接分配的主体并显示内联计数。

请求

GET https://graph.microsoft.com/beta/roleManagement/directory/roleDefinitions/644ef478-e28f-4e28-b9dc-3fdde9aa0b1f/assignedPrincipals?$count=true

响应

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 200 OK
Content-Type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#directoryObjects",
  "@odata.count": 4,
  "value": [
    {
        "@odata.type": "#microsoft.graph.user",
        "id": "6c62e70d-f5f5-4b9d-9eea-ed517ed9341f",
        "displayName": null,
        "userPrincipalName": null
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "86b38db7-6e8b-4ad2-b2aa-ced7f09486c1",
        "displayName": "Group1"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "182351a6-d974-4d18-88ae-8a148da44cd2",
        "displayName": "Group2"
    },
    {
        "@odata.type": "#microsoft.graph.group",
        "id": "b93d5379-a464-4db5-b8e1-694910f1e11e",
        "displayName": "Group3"
    }
  ]
}