4.3. 授予共享访问权限

在客户端(如计算实例)上挂载共享前,您必须使用类似如下的命令授予客户端对共享的访问权限:

# manila access-allow <share> <accesstype> --access-level <accesslevel>  <clientidentifier>

替换以下值:

  • 共享 - 第 4.1.5 节 “创建共享” 中创建的共享的共享名称或 ID。
  • accesstype - 共享上要请求的访问权限类型。有些类型包括:

    • 用户 :使用 按用户或组名进行身份验证。
    • IP :使用 通过其 IP 地址对实例进行身份验证。
    • cephx: 使用 通过原生 CephFS 客户端用户名进行身份验证。

      注意

      访问类型取决于共享的协议。对于 NFS 共享,只允许 ip 访问类型。对于 CIFS,用户访问 类型适当。对于原生 CephFS 共享,您必须使用 cephx

  • accesslevel - 可选,默认为 rw

    • rw :对共享的读写访问权限.
    • ro: 共享的只读访问权限。
  • clientidentifier - 因 accesstype 而异。

    • ip accesstype 使用 IP 地址。
    • 对于 user accesstype,使用 CIFS 用户或组。
    • cephx accesstype 使用用户名字符串。

4.3.1. 授予对共享的访问权限

您必须向最终用户客户端授予对共享的访问权限,以便用户可以从共享中读取数据并写入数据。

使用这个流程通过实例的 IP 地址授予客户端计算实例对 NFS 共享的访问权限。CIFS 共享的 user 规则和 CephFS 共享的 cephx 规则有类似的特征。对于 用户和 cephx 访问类型,如果需要,您可以在 多个客户端间使用相同的客户端标识符

注意

在示例中,客户端的 IP 地址系列版本不重要。此流程中的步骤使用 IPv4 地址,但步骤与 IPv6 相同。

流程

  1. 检索您计划挂载共享的客户端计算实例的 IP 地址。请确定您选择了与可以访问共享的网络对应的 IP 地址。在本例中,它是 StorageNFS 网络的 IP 地址:

    (user) [stack@undercloud-0 ~]$ openstack server list -f yaml
    - Flavor: m1.micro
      ID: 0b878c11-e791-434b-ab63-274ecfc957e8
      Image: manila-test
      Name: demo-instance0
      Networks: demo-network=172.20.0.4, 10.0.0.53;
      StorageNFS=172.17.5.160
      Status: ACTIVE
    
    (user) [stack@undercloud-0 ~]$ manila access-allow share-01 ip 172.17.5.160
    注意

    对共享的访问权限具有自己的 ID (accessid)。

    +-----------------+---------------------------------------+
    | Property        | Value                                 |
    +-----------------+---------------------------------------+
    | access_key      | None
    | share_id        | db3bedd8-bc82-4100-a65d-53ec51b5cba3
    | created_at      | 2018-09-17T21:57:42.000000
    | updated_at      | None
    | access_type     | ip
    | access_to       | 172.17.5.160
    | access_level    | rw
    | state           | queued_to_apply
    | id              | 875c6251-c17e-4c45-8516-fe0928004fff
    +-----------------+---------------------------------------+
  2. 验证访问配置是否成功:

    (user) [stack@undercloud-0 ~]$ manila access-list share-01
    
    +--------------+-------------+--------------+--------------+--------+ ...
    | id           | access_type | access_to    | access_level | state  | ...
    +--------------+-------------+--------------+--------------+--------+
    | 875c6251-... | ip          | 172.17.5.160 | rw       	   | active | ...
    +--------------+------------+--------------+--------------+---------+ ...

4.3.2. 撤销对共享的访问

共享的所有者可以撤销对共享的访问的原因。完成以下步骤以撤销之前对共享的访问。

流程

  1. 撤销对共享的访问权限:

    # manila access-deny <share> <accessid>
    注意

    <share > 替换为共享名称或共享 ID。

    例如:

    (user) [stack@undercloud-0 ~]$ manila access-list share-01
    +--------------+-------------+--------------+--------------+--------+
    | id           | access_type | access_to    | access_level | state  | ...
    +--------------+-------------+--------------+--------------+--------+ ...
    | 875c6251-... | ip          | 172.17.5.160 | rw       	   | active | ...
    +--------------+-------------+--------------+--------------+--------+
    
    (user) [stack@undercloud-0 ~]$ manila access-deny share-01 875c6251-c17e-4c45-8516-fe0928004fff
    
    (user) [stack@undercloud-0 ~]$ manila access-list share-01
    
    +--------------+------------+--------------+--------------+--------+ ...
    | id           | access_type| access_to    | access_level | state  | ...
    +--------------+------------+--------------+--------------+--------+ ...
    +--------------+------------+--------------+--------------+--------+ ...
注意

如果您有一个具有读写权限的现有客户端,则必须撤销其对共享的访问权限,并在您希望客户端具有只读权限时添加只读规则。