Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
6.7. 块存储
OpenStack Block Storage (cinder)是一种向自助服务提供软件(服务和库)的服务,用于管理永久的块级存储设备。这会创建按需访问块存储资源,以用于 Compute (nova)实例。这通过将块存储池虚拟化为各种后端存储设备(可以是软件实施或传统硬件存储产品)来创建软件定义型存储。这的主要功能是管理块设备的创建、附加和分离。消费者不需要了解后端存储设备的类型或其所在的位置。
计算实例使用行业标准存储协议(如 iSCSI、ATA over Ethernet 或 Fibre-Channel)存储和检索块存储。这些资源可使用 OpenStack 原生标准 HTTP RESTful API 管理和配置。
6.7.1. 卷 Wiping
擦除块存储设备的方法有多种。传统方法是将 lvm_type
设置为 thin,然后使用 volume_clear
参数。或者,如果卷加密功能我们已描述,如果删除了卷加密密钥,则不需要卷加密功能。
在以前的版本中,lvm_type=default
用于表示擦除。虽然此方法 仍可以正常工作,但不建议
设置 secure delete。
volume_clear
参数可以接受 zero
或 shred
作为参数。零
可将单个从零写到设备。shred
操作将写入预定的位模式的三个通过。
6.7.2. 将配置文件的用户/组所有权设置为 root/cinder
配置文件包含组件可以平稳运行所需的关键参数和信息。如果非特权用户被有意或意外地修改或删除任何 par ater 或文件本身,则会导致严重可用性问题导致拒绝服务到其他最终用户。因此,此类关键配置文件的用户所有权必须设置为 root,并且组所有权必须设置为 cinder
。
主机上不存在 cinder
组。使用 ls -l 将显示组所有者的 GID。
sudo ls -l /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf -rw-r-----. 1 root 42407 188012 Dec 11 09:34 /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf sudo stat -L -c "%U %G" /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf root UNKNOWN
使用以下命令,检查 cinder.conf
配置文件的用户和组所有权是否已分别设置为 root 和 cinder:
sudo docker exec -it cinder_api stat -L -c "%U %G" /etc/cinder/cinder.conf root cinder
6.7.3. 为配置文件设置严格的权限
检查 cinder.conf
配置文件的权限是否已设置为 640
或 stricter。
$ stat -L -c "%a" /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf
6.7.4. 使用 keystone 进行身份验证
在 /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf
中,检查 [DEFAULT]
部分下的 auth_strategy
的值是否已设置为 keystone
,而不是 noauth
。
6.7.5. 为身份验证启用 TLS
在 /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf
中,检查 [keystone_authtoken]
部分下的 auth_uri
的值设置为一个以 https:// ' 开头的身份 API 端点,以及
是否设为 [keystone_authtoken]
下参数 'insecure 的值False
。
6.7.6. 确保块存储使用 TLS 与 Compute 通信
在 cinder.conf
中,检查 [DEFAULT]
部分下的 glance_api_servers
的值是否已设置为以 https://
开头,并且参数 glance_api_insecure
的值设置为 False
。
6.7.7. 设置请求的正文的最大大小
如果没有定义每个请求的最大正文大小,攻击者可以制作一个大容量的任意 OSAPI 请求,从而导致服务崩溃,最终导致服务攻击。分配 t he maximum 值可确保任何恶意的超值被禁止确保服务持续可用。
查看 cinder.conf
中的 [oslo_middleware]
部分下的 max_request_body_size
是否已设置为 114688
。
6.7.8. 启用卷加密
未加密的卷数据使卷托管平台对于攻击者而言尤为高值目标,因为它允许攻击者为许多不同的虚拟机读取数据。此外,物理存储介质库来自其他计算机被盗、重新挂载和访问。加密卷数据和卷备份可帮助缓解这些风险,并为卷托管平台提供防御性。块存储(c inder)可以在写入磁盘前对卷数据进行加密,因此请考虑启用卷加密,并使用 Barbican 进行私钥存储。