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 | 要为其分配主体的目录范围。 支持的值为 tenant 、 administrativeUnit 和 resource 。 |
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 | 范围 |
---|---|---|---|
User16c62e70d-f5f5-4b9d-9eea-ed517ed9341f |
Role1 | Scope1 | |
User16c62e70d-f5f5-4b9d-9eea-ed517ed9341f |
Role1 | Scope2 | |
Group186b38db7-6e8b-4ad2-b2aa-ced7f09486c1 (User1 是成员) |
Role1 | Scope1 | |
Group2182351a6-d974-4d18-88ae-8a148da44cd2 (User1 是成员) |
Role1 | Scope1 | |
Group3b93d5379-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"
}
]
}