Shielded Instance受保护实例加强了裸金属(BM)和虚拟机(VM)上的固件安全性,以防御恶意的引导程序或软件注入。
受保护实例通过Secure Boot、Measured Boot和Trusted Platform Module(TPM)来强化计算实例的固件安全性。
Secure Boot与TPM可用于所有受支持的裸金属(BM: Bare Mental)和虚机(VM)实例。
Measured Boot仅适用于VM实例;若希望在裸金属BM实例上使用Measured Boot,可采用开源的解决方案。
裸金属BM实例上,可同时或单独启动启用Secure Boot和TPM。
虚拟机VM实例上,Measured Boot和TPM必须与Secure Boot一起使用,即VM实例上启用Measured Boot时,也将会启用Secure Boot和TPM。
2.1 Secure Boot安全启动
安全启动,是一种统一可扩展固件接口(UEFI)功能,可防止未经授权的启动加载程序和操作系统启动。
验证签名——在系统启动前,Secure Boot将进行验证已签名固件的签名是否正确,以防止在操作系统加载之前运行诸如“rootkit”、“bootkit”和未经授权的软件。
Secure Boot不允许运行未正确签名的引导组件。
Rootkit是在内核模式下运行的低级恶意软件。
Bootkit替换掉原系统的引导加载程序和系统引导,使用引导套件而不是引导加载程序。
Rootkit和Bootkit具有与操作系统相同的权限,并且可以捕获诸如按钮和本地登录等功能,这些恶意引导可使用所捕获的信息进行未经授权的文件传输,并同时进行破坏操作系统。
安全启动有助于防止恶意代码在启动序列的早期加载。
2.2 Measured Boot测量引导
Measured Boot测量引导,可确保引导加载程序和内核以及引导驱动程序的完整性,以防止对VM进行恶意篡改,是对安全启动的补充。
同时启用Measured Boot和Secure Boot可提供最强的安全性:
Secure Boot确保启动过程中的每一个组件都有一个位于有效签名列表中的签名。
Measured Boot可让我们跟踪启动测量,以了解固件在何时发生变化。
Measured Boot通过存储引导组件(例如:引导加载程序、驱动程序和操作系统)的测量值来增强引导的安全性。
首次启动受保护实例时,Measured Boot使用初始测量值来创建基线(该基线测量也称为黄金测量)。
进行初始测量后,系统启动时,会将新的启动数据与基线测量进行比较,以验证每次启动是否相同。测量比较保证操作系统从干净的预引导环境启动。
Measured Boot使用可信平台模块TPM来安全地存储其测量值。
2.3 Trusted Platform Module可信平台模块
可信平台模块,是一个专门用于存储的安全芯片模块,其目的是用于存储“测量引导”的测量值。
在VM实例上,当启用Measured Boot时,可信平台模块TPM也会自动启用,因为Measured Boot需要用到TPM。
Measured Boot进行的测量——存储在TPM内的平台配置寄存器(PCR:Platform Configuration Registers)中,PCR是TPM中的一个内存位置,用于保存测量值,该测量值汇总了所有按顺序呈现的测量结果。
2.4 验证失败
若安全启动验证失败,用户将无法通过SSH连接到该实例或该实例将无法启动。
若测量引导验证失败,实例详情页会显示一个红色盾牌。
注意:
(1)若遇到安全启动失败,可在启动的Serial Console的日志中找到有关失败原因的详细信息。
(2)若对受保护实例进行故障排除,请不要终止实例,并记下实例OCID和捕获Serial Console控制台的日志文件。
受保护实例成功启动后,控制台历史数据中会显示类似如下的信息:
SB_EVENT: { "Secure_Boot_Overall_Status" : 0, "status" : "Pass", "msg" : "SB_Event on Exit Boot Services" }
若启用了“安全启动”,并且固件的签名不正确,则实例不会启动。
如果由于VM Image映像未签名或签名无效,导致了安全启动失败,控制台历史数据中会出现类似以下的内容信息:
SB_EVENT: { "status":
"Fail", "msg": "The EFI executable failed to load.
It's not signed, or the signature (or hash) did not
match entries in DB", "EFI_Image_Type" : "FromOpROM",
"EFI_Image_Path":
"PciRoot(0x0)/Pci(0x2,0x0)/Offset(0x10A00,0x245FF)",
"SB_Variable_Match" :
"NO_CERT_MATCH" }
若加载了不受支持的内核,将无法通过SSH连接到实例。
如果由于加载了不受支持的内核,导致了安全启动失败,请选择受支持的内核并重试,在控制台历史数据中会出现类似如下信息:
SB_EVENT: { "status":
"Pass", "msg": "The EFI executable loaded
successfully", "EFI_Image_Type" : "FromFixedMedia",
"EFI_Image_Path" : "PciRoot(0x0)/Pci(0x12,0x7)/Pci(0x0 ... 2000)//EFI/redhat/shimx64.efi",
"SB_Variable_Match" : "DB_CERT_MATCH", "CertSubject"
: "Microsoft Corporation UEFI CA 2011", "ImageDigest" :
"DD35B574D149AA48E3611FFCC336ACD76FDE79AD817B081FE5CC093789B92E90" }
error:
../../grub-core/loader/i386/efi/linux.c:215:(hd0,gpt2)/vmlinuz-5.14.0-1.el8uek.
rc2.x86_64 has invalid signature.
error: ../../grub-core/loader/i386/efi/linux.c:94:you
need to load the kernel
first.
若启用了Measured Boot并且启动顺序不正确,则实例将启动,但实例详情页出现一个红色盾牌。
若启用了Measured Boot并添加了新的PCR值,则实例将启动,但实例详情页出现一个黄色盾牌。
若遇到了Measured Boot失败,并且PCR值正确或添加了新值,则可重置黄金测量值。
受保护实例目前支持如下规格(Shape):
VM.Standard2.1
VM.Standard2.2
VM.Standard2.4
VM.Standard2.8
VM.Standard2.16
VM.Standard2.24
BM.Standard2.52
BM.Standard.E3
BM.DenseIO2.52
注意:Measured Boot仅在VM实例上可用。
受保护实例目前支持如下镜像:
Oracle Linux 8.x
Oracle Linux 7.x
Oracle Linux 6.x
CentOS 8.x
CentOS 7.x
Ubuntu 18.04
Ubuntu 16.04
受保护不支持live migration(活动迁移)或reboot migration(重启迁移)。
更多参考:https://docs.oracle.com/en-us/iaas/Content/Compute/References/shielded-instances.htm#migrate
启用了TPM的裸金属实例(BM)无法迁移,因TPM硬件不可迁移。
不支持自定义镜像。
不支持在受保护的VM实例上更新签名数据库(DBX:Forbidden Signatures Databases)。
受保护实例上进行更新DBX,可能阻止实例启动;若要更新DBX,请使用包含DBX更新的镜像来创建一个新的受保护的VM实例。
当终止受保护实例时,对应机器的所有者密钥(MOK:Machine Owner Keys)都会被删除。
当使用Linux 7.x创建受保护实例后,重新启动时,PCR值可能会更改,从而导致出现红色盾牌,可通过过重置黄金测量值来解决。
更多参考:https://docs.oracle.com/en-us/iaas/Content/knownissues.htm#shielded-pcr-values,如下图:

当编辑受保护实例,仅实例的名称可更改。实例启动后,不可更改实例的规格shape,而且不可更改迁移配置。
5.1.创建受保护实例
类似创建常用的计算实例,不过需要注意的是:
(1)在选择镜像时,需要选择有盾牌图标的兼容镜像,如下:

(2)在选择规格时,需要选择带有盾牌图标的兼容规格,如下:

(3)显示高级选项,如下:

•安全启动:选择此选项可在实例上启用“安全启动Secured Boot”。
•测量启动:对于VM实例,选择此选项可在实例上启用Measured Boot。
注意:Measured Boot不适用于裸金属实例。
•可信平台模块:在VM实例上,当选择Measured Boot是,会自动勾选安全启动和TPM选项。
裸金属实例上,可启用TPM。
(4)受保护实例详情页,注意盾牌图标,如下:


5.2.编辑受保护实例

仅实例名称可更改,如下:

5.3.下载PCR值或重置PCR值
当受保护实例选择了Mearsure Boot选项时,则在实例详情页,有如下Shielded Instance标签页信息:

当出现红色盾牌,可点击Reset golden measurements重置黄金测量可恢复正常,如下:

受保护实例迁移有如下限制:
VM虚拟机实例:
– 受保护实例不支持live迁移和reboot迁移,如需要迁移,则必须手动迁移。
更多参考:https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/movinganinstance.htm#manual
– 如有使用TPM的VM实例迁移,则迁移期间不会保留TPM数据,新实例将具有新的PCR值。
裸金属实例:
– 受保护实例不支持live迁移或reboot迁移,如需要迁移,则必须手动迁移。
– 如有使用TPM的BM实例迁移,则实例无法迁移,因TPM硬件不可迁移。
– 若将机密存储在BM实例上的物理TPM中,则OCI在TPM中没有数据副本。迁移实例然后从停止状态重新启动后,需要重置您的软件以使用新的物理TPM。
场景1:需要基于裸金属BM来搭建自己的虚拟化平台,可考虑选择受保护实例,这样可防止硬件层对虚拟化Hyper-V层对影响。
场景2:针对多人共享或共用的公共计算实例时,类似堡垒机或跳板机的情况,则可考虑受保护计算实例,任何人对主机启动安全的更改,都将影响到盾牌状态的变化。
场景3:需要特别增强安全性对BM或VM实例,则可考虑选择受保护实例,在Trusted Boot上的到最高的防护。
Shielded实例最新文档,请参考官网:
https://docs.oracle.com/en-us/iaas/Content/Compute/References/shielded-instances.htm

作者简介
Tommy Tan,甲骨文云平台资深咨询顾问。专注于甲骨文安全以及PaaS相关产品和解决方案。具有超过13年的项目咨询、服务与实施经验。您可以通过tommy.tan@oracle.com与他联系。




