20.8. 数据加密
实施者存在用于加密项目数据的 选项,只要它存储在磁盘或通过网络传输,如下方所述的 OpenStack 卷加密功能。这高于一般建议,用户先加密自己的数据,然后再将其发送到供应商。
代表项目加密数据的重要性主要与攻击者可以访问项目数据的风险有关。政府可能满足要求,以及根据政策的要求、私人合同,甚至根据公共云提供商的私人合同要求。在选择项目加密策略前,请考虑获得风险评估和法律建议。
每个实例或每个对象加密可优先选择,以降序、每个项目、每个主机和每个云聚合。这个建议是针对实施的复杂性和难度。目前,对于某些项目,实施加密非常困难或根本不可能。实施者应考虑对项目数据进行加密的严重考虑。
通常,数据加密与可靠销毁项目和按实例数据的能力有关,只需丢弃密钥即可。应该注意,这样做非常重要,以可靠和安全的方式销毁这些密钥。
存在加密用户数据的机会:
- Object Storage 对象
- 网络数据
20.8.1. 卷加密 复制链接链接已复制到粘贴板!
OpenStack 中的卷加密功能支持基于每个项目的隐私性。支持以下功能:
- 创建和使用加密卷类型,通过仪表板或命令行界面启动
- 启用加密并选择参数,如加密算法和密钥大小
- iSCSI 数据包中包含的卷数据是加密的
- 如果原始卷加密,支持加密的备份
- 仪表板表示卷加密状态。包括表示卷已加密,并包含加密参数,如算法和密钥大小
- 与密钥管理服务接口
20.8.2. Object Storage 对象 复制链接链接已复制到粘贴板!
Object Storage (swift)支持在存储节点上对对象数据进行可选加密。对象数据的加密旨在降低在未经授权的方获得对磁盘的物理访问权限时读取用户数据的风险。
静态数据的加密由中间件实现,这些中间件可能包含在代理服务器 WSGI 管道中。该功能是 swift 集群内部,不通过 API 公开。客户端不知道数据由此功能在内部加密到 swift 服务;内部加密数据应该永远不会通过 swift API 返回给客户端。
在 swift 中剩余的数据时,以下数据会被加密:
-
对象内容,如对象
PUT
请求正文的内容。 -
具有非零内容的对象实体标签(
ETag
)。 -
所有自定义用户对象元数据值。例如,使用带有
X-Object-Meta-
前缀的标头的PUT
或POST
请求发送元数据。
以上列表中未包含的任何数据或元数据都不会被加密,包括:
- 帐户、容器和对象名称
- 帐户和容器自定义用户元数据值
- 所有自定义用户元数据名称
- 对象 Content-Type 值
- 对象大小
- 系统元数据
20.8.3. 块存储性能和后端 复制链接链接已复制到粘贴板!
在启用操作系统时,您可以使用 Intel 和 AMD 处理器中提供的硬件加速功能来提高 OpenStack 卷加密性能。
OpenStack 卷加密功能在主机上使用 dm-crypt
或原生 QEMU
加密支持来保护卷数据。红帽建议您在创建加密卷时使用 LUKS
卷加密类型。
20.8.4. 网络数据 复制链接链接已复制到粘贴板!
Compute 节点的项目数据可以通过 IPsec 或其他隧道加密。这种做法在 OpenStack 中并不常见或标准,但可以选择动机和感兴趣的实施者。同样,加密的数据仍加密,因为它通过网络传输。