20.8. 数据加密
使用 选项可以加密在磁盘上存储或通过网络传输的项目数据,如下面描述的 OpenStack 卷加密功能。这高于常规建议,用户在将其发送到供应商前对自己的数据进行加密。
代表项目加密数据的重要性与攻击者可以访问项目数据的供应商承担的风险密切相关。政府可能有一些要求,以及按政策、私人合同等要求,甚至在遵守公有云提供商的私人合同时也是如此。在选择项目加密策略前,请考虑获得风险评估和法律建议。
per-instance 或 per-object 加密会首选使用,按按项目、每个项目和每个云聚合降序排列。本建议涉及实施的复杂性和难度。目前,对于某些项目,实施加密非常困难或根本不可能。实施者应考虑加密项目数据。
通常,数据加密与通过丢弃密钥而可靠地销毁项目和每个实例数据的功能有积极的影响。请注意,在这样做时,以可靠和安全的方式销毁这些密钥会变得非常重要。
向用户加密数据的机会:
- 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 中不是常见或标准,但可以选择动机和感兴趣的实施人员。同样,加密数据仍然加密,因为它通过网络传输。