13.3. 数据加密
存在 选项,用于加密项目数据(无论其存储在磁盘上或通过网络传输),如下面描述的 OpenStack 卷加密功能。在将自己的数据发送到其供应商之前,这比一般建议用户对自己的数据进行加密。
代表项目加密数据的重要性主要与攻击者可以访问项目数据的供应商承担的风险相关。政府可能提出要求,以及每个策略的要求,在私人合同中,甚至针对公共云提供商的私人合同而遵守相关的要求。在选择项目加密策略前,请考虑获取风险评估和法律建议。
每个实例或每个对象加密更首选,按项目降序、每个项目、每主机和云聚合进行降序排列。本建议与实施的复杂性和难度相反。目前,在某些项目中,很难或不可能实施加密,如每个项目也是如此。实施者应该优先考虑加密项目数据。
通常,数据加密与可靠地销毁项目和每个实例数据(只要丢弃密钥)紧密相关。请注意,在这样做时,以可靠和安全的方式销毁这些密钥非常重要。
存在为用户加密数据的机会:
- Object Storage 对象
- 网络数据
13.3.1. 卷加密
OpenStack 中的卷加密功能支持每个项目的隐私。支持以下功能:
- 创建和使用加密卷类型,通过仪表板或命令行界面启动
- 启用加密并选择参数,如加密算法和密钥大小
- iSCSI 数据包中包含的卷数据是加密的
- 如果原始卷已加密,支持加密备份
- 显示卷加密状态的仪表板。包括表示卷已加密,并包含加密参数,如算法和密钥大小
- 使用密钥管理服务接口
13.3.2. 临时磁盘加密
临时磁盘加密功能可以解决数据隐私。临时磁盘是虚拟主机操作系统使用的临时工作空间。如果没有加密,可以在这个磁盘上访问敏感用户信息,并在卸载磁盘后保留 vestigial 信息。支持以下临时磁盘加密功能:
13.3.2.1. 创建和使用加密的 LVM 临时磁盘
Compute 服务目前只支持 LVM 格式的加密临时磁盘。
计算配置文件(/var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf
)在 ephemeral_storage_encryption
部分中具有以下默认参数:
-
cipher = aes-xts-plain64
- 此字段设置用于加密临时存储的密码和模式。NIST 建议为磁盘存储特别推荐的 AES-XTS,使用 XTS 加密模式用于 AES 加密的名称。可用的密码取决于内核支持。在命令行中,键入cryptsetup benchmark
以确定可用选项(以及查看基准测试结果)或转至 /proc/crypto。 -
enabled = false
- 要使用临时磁盘加密,请设置 option:enabled = true
-
key_size = 512
- 请注意,来自后端密钥管理器的密钥大小限制可能需要使用key_size = 256
,这仅提供 AES 密钥大小为 128 位。XTS 还需要自己的"tweak 密钥",除了加密密钥 AES 之外。这通常表示为单个大密钥。在这种情况下,使用 512 位设置,256 位将由 AES 和 256 位 256 位用于 XTS。(请参阅 NIST)
13.3.2.2. 与密钥管理服务交互
密钥管理服务将通过基于每个项目提供临时磁盘加密密钥来支持数据隔离。后端密钥存储支持临时磁盘加密以增强安全性。使用密钥管理服务时,如果不再需要临时磁盘,只需删除密钥即可覆盖临时磁盘存储区域。
13.3.3. Object Storage 对象
Object Storage (swift)支持存储节点上静态的对象数据的可选加密。对象数据的加密旨在降低在未经授权方获得对磁盘的物理访问权限时,用户数据正在读取的风险。
静态数据的加密是由中间件实现的,该加密可能包括在代理服务器 WSGI 管道中。这个功能是 swift 集群的内部,而不是通过 API 公开。客户端不知道数据由此功能在内部向 swift 服务加密;内部加密数据不应通过 swift API 返回到客户端。
以下数据在 swift 中被加密:
-
对象内容,如对象
PUT
请求正文的内容。 -
具有非零内容的对象的实体标签(
ETag
)。 -
所有自定义用户对象元数据值。例如,使用带有
X-Object-Meta-
前缀的标头的PUT
或POST
请求发送元数据。
以上列表中不包含的任何数据或元数据都不会加密,包括:
- 帐户、容器和对象名称
- 帐户和容器自定义用户元数据值
- 所有自定义用户元数据名称
- 对象内容类型值
- 对象大小
- 系统元数据
13.3.4. 块存储性能和后端
启用操作系统时,可以使用 Intel 和 AMD 处理器中当前可用的硬件加速功能来增强 OpenStack 卷加密性能。OpenStack 卷加密功能和 OpenStack Ephemeral Disk Encryption 功能都使用 dm-crypt
保护卷数据。DM-crypt
是 Linux 内核版本 2.6 及更高版本中的透明磁盘加密功能。在使用硬件加速时,两个加密功能的性能影响会最小化。
13.3.5. 网络数据
Compute 节点的项目数据可以通过 IPsec 或其他隧道加密。这种做法在 OpenStack 中不是常见或标准,而是可用于动机和感兴趣的实施人员的选项。同样,加密的数据在网络上传输时仍然加密。