6.2. 项目层次结构
6.2.1. Identity Service 中的分层多租户(HMT) 复制链接链接已复制到粘贴板!
您可以使用 Identity 服务(keystone)中的多租户来嵌套项目。多租户允许子项目从父项目继承角色分配。
6.2.1.1. 创建项目和子项目 复制链接链接已复制到粘贴板!
您可以使用 keystone 域和项目实施层次结构多租户(HMT)。首先创建一个新域,然后在该域内创建项目。然后,您可以向该项目添加子项目。您还可以通过将用户添加到该子项目的 admin
角色,将用户提升到子项目的管理员。
keystone 使用的 HMT 结构目前没有在仪表板中表示。
1.创建名为 corp
的新 keystone 域:
2.在 corp
域中创建父项目(private-cloud
):
3.在 private-cloud
父项目中创建子项目(dev
),同时指定 corp
域:
4.创建名为 qa
的另一个子项目:
您可以使用 Identity API 查看项目层次结构。如需更多信息,请参阅 https://developer.openstack.org/api-ref/identity/v3/index.html?expanded=show-project-details-detail
6.2.1.2. 授予用户访问权限 复制链接链接已复制到粘贴板!
默认情况下,新创建的项目没有分配的角色。为父项目分配角色权限时,您可以包含 --inherited
标志,以指示子项目从父项目中继承分配的权限。例如,具有对父项目的 admin
角色的用户也具有对子项目的 admin
访问权限。
1.查看分配给项目的现有权限:
openstack role assignment list --project private-cloud
$ openstack role assignment list --project private-cloud
2.查看现有角色:
3.授予用户帐户 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
使用 --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
4.查看权限更新的结果:
user1
用户已继承了对 qa
和 dev
项目的访问权限。此外,由于 --inherited
标志应用到父项目,user1
也接受对稍后创建的任何子项目的访问。
6.2.2. 删除访问权限 复制链接链接已复制到粘贴板!
必须单独删除显式和继承的权限。
1.从显式分配的角色中删除用户:
openstack role remove --user user1 --project private-cloud member
$ openstack role remove --user user1 --project private-cloud member
2.查看更改的结果。请注意,继承的权限仍然存在:
3.删除继承的权限:
openstack role remove --user user1 --project private-cloud member --inherited
$ openstack role remove --user user1 --project private-cloud member --inherited
4.查看更改的结果。继承的权限已被删除,生成的输出现在为空:
openstack role assignment list --effective --user user1 --user-domain corp
$ openstack role assignment list --effective --user user1 --user-domain corp
6.2.3. 嵌套配额 复制链接链接已复制到粘贴板!
目前,尚不支持 嵌套配额。因此,您必须针对项目和子项目单独管理配额。
6.2.4. 法国概述 复制链接链接已复制到粘贴板!
使用 Reseller 项目时,目标是具有域层次结构;这些域最终允许您考虑删除部分云,子域代表一个功能齐全的云。这个工作分为几个阶段,如下所示:
6.2.4.1. 1 阶段 复制链接链接已复制到粘贴板!
法国(第 1 阶段)是层次结构多租户(HMT)的扩展,如下所述: 第 6.2.1 节 “Identity Service 中的分层多租户(HMT)”。在以前的版本中,keystone 域最初打算是存储用户和项目的容器,在数据库后端中都有自己的表。现在,域不再存储在自己的表中,并已合并到项目表中:
-
域现在是一个项目,由
is_domain
标志区分。 - 域表示项目层次结构中的顶级项目:域是项目层次结构中的根
API 已更新,以使用
项目
子路径来创建和检索域:-
通过创建项目并将
is_domain
标志设置为 true 来创建新域 -
列出属于 domain 的项目:获取项目,包括
is_domain
查询参数。
-
通过创建项目并将
~