7.7. 为最终用户客户端授予共享访问权限
您必须向最终用户客户端授予对共享的访问权限,以便用户可以从共享中读取数据并将数据写入共享。
您可以通过实例的 IP 地址授予客户端计算实例对 NFS 共享的访问权限。CIFS 共享的 user
规则和 CephFS 共享的 cephx
规则有类似的特征。对于 用户和
cephx
访问类型,如果需要,您可以在 多个客户端间使用相同的客户端标识符
。
在客户端(如计算实例)上挂载共享前,您必须使用类似如下的命令授予客户端对共享的访问权限:
$ manila access-allow <share> <accesstype> \ --access-level <accesslevel> <clientidentifier>
替换以下值:
-
共享
:创建的共享的共享名称或 ID,如 第 7.2 节 “创建 NFS、CephFS 或 CIFS 共享” 所述。 accesstype
:在共享中请求的访问权限类型。有些类型包括:-
用户
:使用 按用户或组名称进行身份验证。 -
IP
:使用 通过其 IP 地址对实例进行身份验证。 cephx
:用来通过原生 CephFS 客户端用户名进行身份验证。注意访问类型取决于共享的协议。对于 CIFS,您可以使用
用户
。对于 NFS 共享,您必须使用ip
。对于原生 CephFS 共享,您必须使用cephx
。
-
访问级别
:可选;默认值为rw
。-
rw
:对共享的读写访问。 -
ro
: 对共享的只读访问权限。
-
Clientidentifier
: 根据accesstype
.-
为
ip
accesstype
使用 IP 地址。 -
使用一个 CIFS 用户或组作为
user
accesstype
。 -
为
cephx
accesstype
使用用户名字符串。
-
为
7.7.1. 授予对 NFS 共享的访问权限
云用户可以通过 IP 地址提供对 NFS 共享的访问。
您可以将以下步骤与 IPv4 或 IPv6 地址一起使用。
流程
检索您计划挂载共享的客户端计算实例的 IP 地址。请确定您选择与可以访问共享的网络对应的 IP 地址。在本例中,它是 StorageNFS 网络的 IP 地址:
$ openstack server list -f yaml - Flavor: m1.micro ID: 0b878c11-e791-434b-ab63-274ecfc957e8 Image: manila-test Name: demo-instance0 Networks: demo-network=198.51.100.4, 10.0.0.53; StorageNFS=198.51.100.160 Status: ACTIVE $ manila access-allow <share> ip 198.51.100.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 | 198.51.100.160 | access_level | rw | state | queued_to_apply | id | 875c6251-c17e-4c45-8516-fe0928004fff +-----------------+---------------------------------------+
验证
验证访问配置是否成功:
$ manila access-list <share> +--------------+-------------+--------------+--------------+--------+ ... | id | access_type | access_to | access_level | state | ... +--------------+-------------+--------------+--------------+--------+ | 875c6251-... | ip | 198.51.100.160 | rw | active | ... +--------------+------------+--------------+--------------+---------+ ...
7.7.2. 授予原生 CephFS 共享的访问权限
云用户可以通过 Ceph 客户端用户名提供对原生 CephFS 共享的访问。共享文件系统服务(manila)可防止使用预先存在的 Ceph 用户,因此您必须创建唯一的 Ceph 客户端用户名。
若要挂载共享,您需要 Ceph 客户端用户名和访问密钥。您可以使用共享文件系统服务 API 检索访问密钥。默认情况下,访问密钥对项目命名空间中的所有用户可见。您可以为同一用户提供对项目命名空间中不同共享的访问权限。然后,用户可以使用客户端计算机上的 CephFS 内核客户端来访问共享。
仅将原生 CephFS 驱动程序与可信客户端一起使用。有关原生 CephFS 后端安全性的信息,请参阅 部署 Red Hat Ceph Storage 和 Red Hat OpenStack Platform 中的 原生 CephFS 后端安全性。
流程
授予用户对原生 CephFS 共享的访问权限:
$ manila access-allow <share> cephx <user>
-
将
<share
> 替换为共享名称或共享 ID。 -
将 &
lt;user&
gt; 替换为 cephx 用户。
-
将
收集用户的访问密钥:
$ manila access-list <share>
7.7.3. 授予 CIFS 共享的访问权限
云用户可以通过 Active Directory 服务中存在的用户名授予对 CIFS 共享的访问权限。共享文件系统服务(manila)不会在 Active Directory 服务器上创建新用户。它仅通过安全服务验证用户名,访问具有无效用户名的规则 会导致错误
状态。
如果云管理员将 driver_handles_share_servers
参数的值设置为 true
,则云用户通过添加安全服务来配置 Active Directory 服务。如果云管理员将 DHSS 参数的值设置为 false
,则云管理员将配置 Active Directory 服务并将其与存储网络相关联。
要挂载共享,您必须指定用户的 Active Directory 用户名和密码。您无法通过共享文件系统服务获取此密码。
流程
授予用户对 CIFS 共享的访问权限:
$ manila access-allow <share> user <user>
-
将
<share
> 替换为共享名称或共享 ID。 -
将
<user
> 替换为与 Active Directory 用户对应的用户名。
-
将
7.7.4. 撤销对共享的访问
共享的所有者可以撤销对共享的访问的原因。完成以下步骤以撤销之前授予共享的访问。
流程
撤销对共享的访问权限:
$ manila access-deny <share> <access-id>
-
将
<share
> 替换为共享名称或共享 ID。 将
<access-id
> 替换为共享的访问 ID。例如:
$ manila access-list share-01 +--------------+-------------+--------------+--------------+--------+ | id | access_type | access_to | access_level | state | ... +--------------+-------------+--------------+--------------+--------+ ... | 875c6251-... | ip | 198.51.100.160 | rw | active | ... +--------------+-------------+--------------+--------------+--------+ $ manila access-deny share-01 875c6251-c17e-4c45-8516-fe0928004fff $ manila access-list share-01 +--------------+------------+--------------+--------------+--------+ ... | id | access_type| access_to | access_level | state | ... +--------------+------------+--------------+--------------+--------+ ... +--------------+------------+--------------+--------------+--------+ ...
-
将
如果您有一个具有读写权限的现有客户端,则必须撤销对共享的访问权限,并添加一个只读规则(如果您希望客户端具有只读权限)。