Libvirt:QEMU 通过原生 LUKS 文件和主机设备解密

https://blueprints.launchpad.net/nova/+spec/libvirt-qemu-native-luks

QEMU 2.6 [1] 和 Libvirt 2.2.0 [2] 允许 QEMU 原生解密 LUKS 文件和块设备。本文档概述了在 Libvirt Nova virt 驱动程序中使用此新功能所需的更改以及这样做可能带来的好处。

问题描述

Nova 当前支持使用 os-brick 提供的加密器类来使用 LUKS纯文本 dm-crypt 加密卷。这些前端加密器类使用 cryptsetup 在计算主机上解密加密卷。这会在主机上创建一个解密的块设备,然后将其符号链接到原始卷路径并附加到实例。

使用 cryptsetup 和其他外部工具一直是 Nova 和 os-brick 中许多错误的根源,并且是持续的维护开销。

用例

用户应该能够从或附加任何文件或主机块设备卷类型的加密 LUKS 卷到实例,而无需使用主机命令行实用程序,例如 cryptsetup,从而避免在主机上留下未加密的块设备。

提议的变更

当给定的 Libvirt 计算主机尝试附加具有 luks 加密提供程序的加密卷并且主机上存在所需的 QEMU 和 Libvirt 版本时,将使用 QEMU 2.6 提供的原生 LUKS 支持。然后将创建所需的 Libvirt 磁盘加密 XML 和密码 secret,从而允许 QEMU 解密并将卷附加到域。

如果不存在所需的 QEMU 和 LIbvirt 版本,Nova 将回退到当前使用 cryptsetup 解密卷的 LuksEncryptor 加密器。

在分离时,将检查与卷关联的 LibvirtConfigGuestDisk 对象,使用加密属性的存在来确认使用上述哪种方法解密了卷。

如果此属性为 None,将使用原始的 cryptsetup 方法分离卷,从而允许在 Nova、QEMU 或 Libvirt 升级期间分离加密卷。

备选方案

  • 继续使用当前的 cryptsetup 前端加密器。

数据模型影响

REST API 影响

安全影响

  • 与使用 cryptsetup 的情况一样,将不再在主机上留下解密的块设备,如果主机受到损害,这可能导致据称加密的租户数据暴露。

通知影响

其他最终用户影响

此更改对于现有的 LuksEncryptor 用户应该是透明的。用户应该继续像以前一样使用此加密提供程序,允许 Nova 决定何时使用 QEMU 2.6 提供的原生 LUKS 支持或原始的 cryptsetup 加密器。

性能影响

其他部署者影响

应告知部署者,鉴于所需的 QEMU 和 Libvirt 版本,nova 现在将使用不同的方法来解密加密卷。突出显示此更改的简单发布说明就足够了。

开发人员影响

Libvirt virt 驱动程序将具有 os-brick 当前提供的加密器之外的唯一加密器实现。

虽然这意味着此实现不可用于其他 virt 驱动程序或 OpenStack 项目,但很难看出它如何在 Libvirt virt 驱动程序之外提供任何好处。

实现

负责人

主要负责人

lyarwood

工作项

  • 扩展 nova/virt/libvirt/volumes/ 卷驱动程序,以将卷的加密属性传递给 LibvirtConfigGuestDisk

  • 扩展 LibvirtConfigGuestDisk 类以配置磁盘设备的加密元素 [3] 并创建密码所需的 Libvirt secret。

  • 仅当计算主机上附加卷时存在所需的 QEMU 和 Libvirt 版本时,才尝试使用 QEMU 原生解密给定的 LUKS 卷。

  • 否则回退到 cryptsetup 加密器解密卷的方法。

  • 仅当与卷关联的 LibvirtConfigGuestDisk 对象缺少加密属性时,才使用 cryptsetup 分离 LUKS 卷。

依赖项

  • QEMU 2.6 [1]

  • Libvirt 2.2.0 [2]

两者已作为 Ubuntu 17.04 [4] [5] [6] 和 Fedora 25 发布的一部分 [7] [8]

以下 devstack 更改现在通过 Ubuntu Cloud Archive 为基于 Xenial 的 OpenStack CI 作业提供 QEMU 2.8 和 Libvirt 2.5.0,从而可以在 gate 中测试此功能

使用 UCA 进行 libvirt 2.5.0 测试 https://review.openstack.org/#/c/451492/

测试

  • 单元测试。

  • 如果存在所需的 Libvirt 和 QEMU 版本,现有的 tempest 测试将触发此新功能的使用。

文档影响

  • 对 Cinder 卷加密文档的更改有限 [9],因为不再需要在计算主机上使用 cryptsetup

参考资料

历史

修订

发布名称

描述

Pike

引入

Queens

重新提出