6.6. 项目层次结构
您可以使用身份服务(keystone)中的多租户项目嵌套项目。多租户允许子项目从父项目继承角色分配。
6.6.1. 创建分层项目和子项目 复制链接链接已复制到粘贴板!
您可以使用 keystone 域和项目实施层次结构多租户(HMT)。首先创建新域,然后在该域中创建项目。然后,您可以将子项目添加到该项目。您还可以通过将用户添加到该子项目的 admin
角色,将用户提升为子项目的管理员。
keystone 使用的 HMT 结构目前没有在仪表板中表示。
流程
创建名为
corp
的新 keystone 域:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
corp
域中创建父项目(private-cloud
):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
private-cloud
父项目中创建子项目(dev
),同时指定corp
域:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
qa
的另一个子项目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以使用 Identity API 查看项目层次结构。如需更多信息,请参阅 https://developer.openstack.org/api-ref/identity/v3/index.html?expanded=show-project-details-detail
6.6.2. 配置对分层项目的访问 复制链接链接已复制到粘贴板!
默认情况下,新创建的项目没有分配的角色。为父项目分配角色权限时,您可以包含 --inherited
标志,以指示子项目从父项目继承分配的权限。例如,具有对父项目的 admin
角色的用户也具有对子项目的 admin
访问权限。
授予用户访问权限
查看分配给项目的现有权限:
openstack role assignment list --project private-cloud
$ openstack role assignment list --project private-cloud
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看现有角色:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 授予用户帐户
user1
对private-cloud
项目的访问权限:openstack role add --user user1 --user-domain corp --project private-cloud member
$ openstack role add --user user1 --user-domain corp --project private-cloud member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--inherited
标志重新运行此命令。因此,user1
还可以访问private-cloud
子项目,它继承了角色分配:openstack role add --user user1 --user-domain corp --project private-cloud member --inherited
$ openstack role add --user user1 --user-domain corp --project private-cloud member --inherited
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看权限更新的结果:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
user1
用户继承了对 qa
和 dev
项目的访问权限。此外,由于 --inherited
标志应用到父项目,user1
也接收对稍后创建的任何子项目的访问权限。
从用户中删除访问
必须单独删除显式和继承的权限。
从显式分配角色中删除用户:
openstack role remove --user user1 --project private-cloud member
$ openstack role remove --user user1 --project private-cloud member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看更改的结果。请注意,继承的权限仍然存在:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除继承的权限:
openstack role remove --user user1 --project private-cloud member --inherited
$ openstack role remove --user user1 --project private-cloud member --inherited
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看更改的结果。继承的权限已被删除,结果输出现在为空:
openstack role assignment list --effective --user user1 --user-domain corp
$ openstack role assignment list --effective --user user1 --user-domain corp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.3. 经销商项目概述 复制链接链接已复制到粘贴板!
使用 Reseller 项目时,目标是拥有域层次结构;这些域最终允许您考虑转销部分云,其带有代表完全启用云的子域。这个工作分为几个阶段,阶段 1 如下所示:
经销商阶段 1
经销商(阶段 1)是层次结构多租户(HMT)的扩展,如下所述: 创建分层项目和子项目。在以前的版本中,keystone 域最初设计为是存储用户和项目的容器,其具有他们在数据库后端中的表。因此,域现在不再存储在自己的表中,并已合并到项目表中:
-
域现在是项目的类型,可通过
is_domain
标志区分。 - 域代表项目层次结构中的顶级项目:域是项目层次结构中的 roots
API 已更新,以使用
项目
子路径创建和检索域:-
通过创建将
is_domain
标志设为 true 的项目来创建新域 -
列出 domain: get projects,包括
is_domain
查询参数。
-
通过创建将