Secure Boot¶
14.0.0 版本新增: (Newton)
23.0.0 版本变更: (Wallaby)
为 libvirt 驱动程序添加了对 Secure Boot 的支持。
Nova 支持为虚拟机配置 UEFI Secure Boot。Secure Boot 旨在确保机器上不运行未签名的内核代码。
启用 Secure Boot¶
目前,仅在使用 libvirt.virt_type 为 kvm 或 qemu 的 libvirt 计算驱动程序时,才支持 UEFI 虚拟机引导加载程序的配置。在两种情况下,都需要将虚拟机配置为使用 UEFI 引导加载程序。
满足这些要求后,您可以检查计算节点资源提供程序上的特性,以验证 UEFI Secure Boot 支持。
$ COMPUTE_UUID=$(openstack resource provider list --name $HOST -f value -c uuid)
$ openstack resource provider trait list $COMPUTE_UUID | grep COMPUTE_SECURITY_UEFI_SECURE_BOOT
| COMPUTE_SECURITY_UEFI_SECURE_BOOT |
配置 flavor 或镜像¶
为虚拟机配置 UEFI Secure Boot 取决于所使用的计算驱动程序。在所有情况下,都必须为虚拟机配置 UEFI 引导加载程序,但根据所使用的计算驱动程序,还有其他要求。
Libvirt
顾名思义,UEFI Secure Boot 要求为虚拟机配置 UEFI 引导加载程序。完成此操作后,可以使用 os:secure_boot extra spec 或等效的镜像元数据属性来配置 UEFI Secure Boot 支持。例如,要配置满足这两个要求的镜像
$ openstack image set \
--property hw_firmware_type=uefi \
--property os_secure_boot=required \
$IMAGE
注意
在 x86_64 主机上,启用 secure boot 还要求配置使用 Q35 机器类型。可以使用 hw_machine_type 镜像元数据属性,或使用 libvirt.hw_machine_type 配置选项,为每个虚拟机配置或自动为在主机上创建的所有虚拟机配置。
也可以显式请求禁用 secure boot。这是默认行为,因此通常当管理员希望通过上传具有相关镜像属性的自己的镜像来显式阻止用户请求 secure boot 时,才需要此请求。例如,要通过 flavor 禁用 secure boot
$ openstack flavor set --property os:secure_boot=disabled $FLAVOR
最后,可以请求在主机支持的情况下启用 secure boot。这只能通过镜像元数据属性来实现。当提出此请求时,只有当主机支持此功能并且满足其他约束(即配置了 UEFI 虚拟机引导加载程序)时,才会启用 secure boot。例如
$ openstack image set --property os_secure_boot=optional $IMAGE
注意
如果同时提供了镜像元数据属性和 flavor extra spec,则它们必须匹配。如果不匹配,将引发错误。