keystone.assignment.core 模块¶
分配服务的入口点。
- class keystone.assignment.core.Manager[source]¶
继承自:
Manager分配后端的默认枢纽点。
有关此动态调用后端的更多详细信息,请参阅
keystone.common.manager.Manager。- add_implied_roles(role_refs)[source]¶
扩展隐含角色。
传入的 role_refs 已经扩展了所有继承和组分配。现在我们需要查看每个 ref 中的 role_id,看看它是否是某些隐含角色的先前角色。如果是,则我们需要复制该 ref,为每个隐含角色复制一个。我们将先前角色存储在作为此类复制 ref 的一部分的 indirect dict 中,以便调用者可以确定分配的来源。
- check_system_grant_for_group(group_id, role_id)[source]¶
检查组是否在系统上具有特定角色。
- 参数:
group_id – 分配中的组 ID
role_id – 分配中的系统角色 ID
- 引发:
keystone.exception.RoleAssignmentNotFound – 如果组没有与系统上的 role_id 匹配的角色分配
- check_system_grant_for_user(user_id, role_id)[source]¶
检查用户是否在系统上具有特定角色。
- 参数:
user_id – 分配中的用户 ID
role_id – 分配中的系统角色 ID
- 引发:
keystone.exception.RoleAssignmentNotFound – 如果用户没有与系统上的 role_id 匹配的角色分配
- create_grant(role_id, user_id=None, group_id=None, domain_id=None, project_id=None, inherited_to_projects=False, initiator=None)[source]¶
- create_system_grant_for_group(group_id, role_id)[source]¶
授予组系统上的角色。
- 参数:
group_id – 组的 ID
role_id – 要在系统上授予的角色 ID
- create_system_grant_for_user(user_id, role_id)[source]¶
授予用户系统上的角色。
- 参数:
user_id – 用户的 ID
role_id – 要在系统上授予的角色 ID
- delete_grant(role_id, user_id=None, group_id=None, domain_id=None, project_id=None, inherited_to_projects=False, initiator=None)[source]¶
- delete_system_grant_for_group(group_id, role_id)[source]¶
从组中删除系统授权。
- 参数:
group_id – 组的 ID
role_id – 要从系统上的组中删除的角色 ID
- 引发:
keystone.exception.RoleAssignmentNotFound – 如果组在系统上没有具有 role_id 的角色分配
- delete_system_grant_for_user(user_id, role_id)[source]¶
从用户中删除系统授权。
- 参数:
user_id – 用户的 ID
role_id – 要从系统上的用户中删除的角色 ID
- 引发:
keystone.exception.RoleAssignmentNotFound – 如果用户在系统上没有具有 role_id 的角色分配
- driver_namespace: str = 'keystone.assignment'¶
- get_grant(role_id, user_id=None, group_id=None, domain_id=None, project_id=None, inherited_to_projects=False)[source]¶
- get_roles_for_trustor_and_project(trustor_id, project_id)[source]¶
获取在给定项目中的信任人关联的角色。
这包括直接分配给项目上的信任人的角色,以及通过组成员资格或继承获得的那些角色,但不包括域角色。
- 返回值:
一个角色 ID 列表。
- 引发:
keystone.exception.ProjectNotFound – 如果项目不存在。
- get_roles_for_user_and_domain(user_id, domain_id)[source]¶
获取在给定域中与用户关联的角色。
- 返回值:
一个角色 ID 列表。
- 引发:
keystone.exception.DomainNotFound – 如果域不存在。
- get_roles_for_user_and_project(user_id, project_id)[source]¶
获取在给定项目上与用户关联的角色。
这包括直接分配给项目上的用户角色,以及通过组成员资格或继承获得的那些角色。
- 返回值:
一个角色 ID 列表。
- 引发:
keystone.exception.ProjectNotFound – 如果项目不存在。
- list_grants(user_id=None, group_id=None, domain_id=None, project_id=None, inherited_to_projects=False)[source]¶
- list_role_assignments(role_id=None, user_id=None, group_id=None, system=None, domain_id=None, project_id=None, include_subtree=False, inherited=None, effective=None, include_names=False, source_from_group_ids=None, strip_domain_roles=True)[source]¶
列出角色分配,遵守有效模式和提供的过滤器。
返回一个角色分配列表,其属性与提供的过滤器(role_id、user_id、group_id、domain_id、project_id 和 inherited)匹配。如果 include_subtree 为 True,则还包括指定项目 project_id 的所有后代上的分配。inherited 过滤器默认为 None,这意味着获取非继承和继承的角色分配。
如果指定了 effective 模式,这意味着,而不是简单地返回与过滤器匹配的分配,任何组或继承分配都将被扩展。组分配将成为该组中所有用户的分配,并且继承分配将显示在分配点的项目下方。可以将 effective 模式视为影响用户的实际分配列表,例如将放置在令牌中的角色。
如果将 include_names 设置为 true,则除了它们的 id 之外,还会返回实体的名称。
source_from_group_ids 是一个组 ID 列表,如果指定了该列表,则仅考虑来自这些组的成员资格的分配,并且此类分配将不会扩展到其用户成员资格分配。这不同于结果列表的组过滤器,而是对在继承扩展之前应考虑哪些分配的限制。此选项仅在内部使用(即,未在 API 级别公开),并且仅在 effective 模式下受支持(因为在常规模式下,这与组过滤器没有区别,除了它是一个组列表)。
在 effective 模式下,通常会从返回的分配中删除任何特定于域的角色(因为此类角色不会放置在令牌中)。可以通过指定 strip_domain_roles=False 来禁用此删除,这对于需要检查完整角色集的内部调用(例如信任)很有用。
- list_system_grants_for_group(group_id)[source]¶
返回组在系统上拥有的角色列表。
- 参数:
group_id – 组的 ID
- 返回值:
组在系统范围内的角色分配列表