10.7. 共享类型访问控制


共享类型是一个由管理员定义的服务类型(type of service),它包括一个项目可见的描述信息,以及一个项目不可见的、称为额外规格(extra specifications)的键值对列表。manila-scheduler 使用额外的规格来做出调度决策,驱动程序控制共享创建。

管理员可以创建和删除共享类型,也可以管理额外规格在 manila 中赋予它们的含义。项目可以列出共享类型,并可使用它们来创建新共享。共享类型可以被创建为 publicprivate。这是定义其他项目是否可以在共享类型列表中看到的共享类型的可见性级别,并使用它来创建新共享。

默认情况下,共享类型创建为公共。在创建共享类型时,使用 --is_public 参数设置为 False 来使您的共享类型私有设为私有,这将阻止其他项目在共享类型列表中看到它,并使用它创建新的共享。另一方面,公共 共享类型可供云中的每个项目使用。

Manila 允许管理员为项目授予或拒绝对 私有 共享类型的访问权限。您还可以获取有关指定私有共享类型访问权限的信息。

注意

由于它们的额外规格有助于在用户创建共享之前过滤或选择后端,因此您可以使用对特定后端选择的客户端限制客户端。

例如,admin 项目中的管理员用户可以创建名为 my_type 的专用共享类型,并在列表中看到它。在下面的控制台示例中,会省略了登录和注销,并且提供了环境变量来显示当前登录的用户。

 $ env | grep OS_
 ...
 OS_USERNAME=admin
 OS_TENANT_NAME=admin
 ...
 $ manila type-list --all
 +----+--------+-----------+-----------+-----------------------------------+-----------------------+
 | ID | Name   | Visibility| is_default| required_extra_specs              | optional_extra_specs  |
 +----+--------+-----------+-----------+-----------------------------------+-----------------------+
 | 4..| my_type| private   | -         | driver_handles_share_servers:False| snapshot_support:True |
 | 5..| default| public    | YES       | driver_handles_share_servers:True | snapshot_support:True |
 +----+--------+-----------+-----------+-----------------------------------+-----------------------+

demo 项目中的 demo 用户可以列出类型,但名为 my_type 的私有共享类型对他不可见。

 $ env | grep OS_
 ...
 OS_USERNAME=demo
 OS_TENANT_NAME=demo
 ...
 $ manila type-list --all
 +----+--------+-----------+-----------+----------------------------------+----------------------+
 | ID | Name   | Visibility| is_default| required_extra_specs             | optional_extra_specs |
 +----+--------+-----------+-----------+----------------------------------+----------------------+
 | 5..| default| public    | YES       | driver_handles_share_servers:True| snapshot_support:True|
 +----+--------+-----------+-----------+----------------------------------+----------------------+

管理员可以为 demo 项目授予专用共享类型的访问权限,其项目 ID 等于 df29a37db5ae48d19b349fe947fada46

 $ env | grep OS_
 ...
 OS_USERNAME=admin
 OS_TENANT_NAME=admin
 ...
 $ openstack project list
 +----------------------------------+--------------------+
 | ID                               | Name               |
 +----------------------------------+--------------------+
 | ...                              | ...                |
 | df29a37db5ae48d19b349fe947fada46 | demo               |
 +----------------------------------+--------------------+
 $ manila type-access-add my_type df29a37db5ae48d19b349fe947fada46

因此,demo 项目中的用户可以查看私有共享类型,并在创建共享时使用它:

 $ env | grep OS_
 ...
 OS_USERNAME=demo
 OS_TENANT_NAME=demo
 ...
 $ manila type-list --all
 +----+--------+-----------+-----------+-----------------------------------+-----------------------+
 | ID | Name   | Visibility| is_default| required_extra_specs              | optional_extra_specs  |
 +----+--------+-----------+-----------+-----------------------------------+-----------------------+
 | 4..| my_type| private   | -         | driver_handles_share_servers:False| snapshot_support:True |
 | 5..| default| public    | YES       | driver_handles_share_servers:True | snapshot_support:True |
 +----+--------+-----------+-----------+-----------------------------------+-----------------------+

要拒绝对指定项目的访问,请使用 manila type-access-remove <share_type> <project_id>

注意

在演示共享类型的目的中,请考虑有两个后端:LVM 作为公共存储和 Ceph 作为私有存储的情况。在这种情况下,您可以使用 用户/组 身份验证方法授予对特定项目的访问权限,并控制访问权限。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.