libvit 驱动程序启动使用无状态固件的实例

https://blueprints.launchpad.net/nova/+spec/libvirt-stateless-firmware

自 v8.6.0 版本起,libvirt 允许启动使用无状态固件的实例,这可以禁用超visor的潜在攻击面。这项工作旨在引入所需的功能,以便用户可以使用此功能。

问题描述

Libvirt v8.6.0 引入了启动使用无状态固件实例的新功能。当实例使用此功能启用以及 UEFI 启动时,实例使用只读固件镜像,不包含 NVRAM 文件。此功能对于机密计算用例很有用,因为它可防止从超visor向固件变量注入恶意代码。它还允许对实例启动链中涉及的元素的更完整测量,这是远程证明的关键要求。这在 libvirt 指南 中有描述。

然而,此 libvirt 功能无法在当前 nova 启动的实例中启用,因为 nova 没有设置无状态选项。此外,nova 始终将 nvram 文件注入到 libvirt 域 XML 中。

用例

  1. 作为云管理员,为了让我的用户对正在运行的实例的安全性更有信心,我希望允许我的用户为他们的实例强制使用无状态固件。

  2. 作为用户,我希望防止恶意软件通过超visor注入的固件变量造成的风险,特别是对于加载非常机密数据的实例。

提议的变更

我们建议添加一个新的镜像属性来请求无状态固件,以便用户可以使用无状态固件创建他们的实例。

  • 在 os-traits 中添加新的 COMPUTE_SECURITY_STATELESS_FIRMWARE 特性。

  • 使 libvirt 驱动程序检查 libvirt 的当前版本,并在版本等于或更新于 v8.6.0 时报告 supports_stateless_firmware 功能。此功能应映射到 COMPUTE_SECURITY_STATELESS_FIRMWARE 特性。

  • 添加新的 hw_firmware_stateless 镜像属性,该属性接受布尔值,默认值为 false。如果将该属性设置为 true,则 nova 将其转换为需要 COMPUTE_SECURITY_STATELESS_FIRMWARE 特性。

  • 更改 libvirt 驱动程序,以便在实例的实例元数据包含将 hw_firmware_stateless 属性设置为 true 时,将 stateless 选项添加到 libvirt 域 XML 的 loader 元素中,并跳过注入 nvram 文件。

备选方案

数据模型影响

将使用一个新的特性和新的镜像属性来表示 libvirt 中无状态固件功能的可用性和请求。

REST API 影响

安全影响

通知影响

其他最终用户影响

最终用户将能够通过现有的镜像属性机制为他们的实例使用无状态固件。

性能影响

其他部署者影响

为了让用户能够使用此功能,操作员需要在部署中部署 libvirt v8.6.0 或更高版本。

开发人员影响

升级影响

实现

负责人

主要负责人

kajinamit (irc: tkajinam)

其他贡献者

工作项

  1. 在 os-traits 中添加新的 COMPUTE_SECURITY_STATELESS_FIRMWARE 特性。

  2. 使 libvirt 驱动程序检查 libvirt 版本,并根据检测到的版本,将无状态固件的可用性作为 COMPUTE_SECURITY_STATELESS_FIRMWARE 特性,在计算节点功能中呈现。

  3. 将新的 hw_firmware_stateless 镜像属性添加到 ImageMeta 对象

  4. 更新调度器实用程序,以便在实例镜像属性中的 hw_firmware_stateless 属性设置为 true 时,需要 COMPUTE_SECURITY_STATELESS_FIRMWARE 特性

  5. 当实例镜像属性包含将 hw_firmware_stateless 属性设置为 true 时,使 libvirt 驱动程序在 loder 元素中设置 stateless="yes"

  6. 更新文档

  7. 更新 glance 中的镜像属性模式,以验证新的 hw_firmware_stateless 属性。

应根据新的逻辑添加单元测试和功能测试。

未来工作

依赖项

Libvirt v8.6.0 或更高版本。

测试

fakelibvirt 测试驱动程序需要进行调整,以模拟低于 v8.6.0 版本的 libvirt 和 v8.6.0 或更高版本的 libvirt。

需要扩展或添加相应的单元/功能测试,以涵盖

  • libvirt 检测无状态固件支持

  • 使用特性在域 XML 配置中包含额外的无状态加载器选项。

文档影响

  • 更新 功能支持矩阵,以包含无状态固件支持。

  • 更新现有的 AMD SEV 指南,以包含有关无状态固件的信息。

参考资料

历史

修订版

发布名称

描述

2024.2 达尔马提安

引入