6.6. 项目层次结构
您可以使用 Identity 服务(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 在
私有云父项目中创建子项目(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-cloudCopy 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 memberCopy 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 --inheritedCopy 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 memberCopy 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 --inheritedCopy 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 corpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.3. 经销商项目概述 复制链接链接已复制到粘贴板!
使用 Reseller 项目,目标是拥有域的层次结构;这些域最终允许您考虑将云的部分重新销售,其子域代表完全启用的云。这个工作分为几个阶段,阶段 1 如下所示:
经销商的第 1 阶段
经销商(阶段 1)是层次结构多租户(HMT)的扩展,如下所述: 创建分层项目和子项目。在以前的版本中,keystone 域最初是存储用户和项目的容器,并在数据库后端中使用自己的表。现在,域不再存储在自己的表中,并已合并到项目表中:
-
域现在是项目的类型,可通过
is_domain标志区分。 - 域表示项目层次结构中的顶级项目: domains 是项目层次结构中的根项
API 已更新,以使用
projects子路径创建和检索域:-
通过创建一个将
is_domain标志设为 true 的项目来创建新域 -
列出属于域的项目:get 项目,包括
is_domain查询参数。
-
通过创建一个将