👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
概述
强隔离性:在处理器中建立了新的信任边界,即 “信任域”。每个虚拟机都被分配一个信任域,确保虚拟机之间以及虚拟机与宿主机之间的隔离更加坚固,防止恶意软件跨域攻击。
内存加密:对每个信任域的内存进行加密,这意味着即使在hypervisor层或物理主机上,数据也是以加密形式存在,从而降低了数据泄露的风险。
远程证明:TDX支持远程证明功能,允许信任域所有者验证其虚拟机是否在可信的硬件环境中启动,并且没有被篡改,增强了对基础设施的信任。
安全启动:确保虚拟机仅从经过签名和验证的引导加载程序启动,进一步加强了启动过程的安全性。
兼容性与透明性:尽管提供了高级别的安全性,Intel® TDX设计为对操作系统和应用程序尽可能透明,减少对现有工作负载的修改需求。
前提条件
该实例正在华北2(北京)地域邀测中,如需试用,请联系客户经理申请。
火山引擎提供如下公共镜像用于创建TDX实例,该类镜像提供开箱即用的TDX环境,默认使能TDX功能并内置TDX驱动,您无需手动操作即可使用并验证TDX功能。
Ubuntu 24.04
veLinux 2.0 for TDX
veLinux 2.0 CentOS Compatible for TDX
检查TDX使能状态
登录实例。
执行以下命令,检查TDX的使能状态。
lscpu |grep -i tdx_guest
执行以下命令,检查TDX驱动的安装情况。
ls -l /dev/tdx_guest
验证TDX远程证明
步骤一:生成远程证明报告
(可选)依次执行以下命令,安装远程证明所需的工具。
# velinux/ubuntu版本sudo apt-get updatesudo apt-get install -y libtdx-attest-dev# velinux(centos compatible)版本sudo yum makecachesudo yum install -y libtdx-attest-devel
(可选)编译生成远程证明报告的工具。
进入对应tdx-quote-generation-sample的工作路径。
cd /opt/intel/tdx-quote-generation-sample/
依次执行以下命令,编译生成远程证明报告的工具。
sudo sed '/rtmr_event.version = 1;/,/tdx_att_free_quote(p_quote_buf);/{/tdx_att_free_quote(p_quote_buf);/!d;}' -i test_tdx_attest.csudo make
运行编译出的可执行文件。
sudo ./test_tdx_attest
执行以下命令,查看生成的文件。
ls -al /opt/intel/tdx-quote-generation-sample/
步骤二:验证远程证明报告
执行以下命令,安装远程证明验证工具及其所依赖的软件包。
# velinux/ubuntu版本sudo apt-get install -y tee-appraisal-tool libsgx-dcap-ql-dev libsgx-dcap-quote-verify-dev libsgx-dcap-default-qpl-dev libssl-dev libtdx-appraisal-sample# velinux(centos compatible)版本sudo yum install -y tee-appraisal-tool libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel libubsan libtdx-appraisal-sample
配置火山引擎TDX远程证明服务。
sudo sed "s|\"pccs_url\": \"https:\/\/localhost:8081\/sgx\/certification\/v4/\"|\"pccs_url\": \"https:\/\/tdx-dcap-server-cn-beijing.ecs.volces.com\/sgx\/certification\/v4\/\"|" -i /etc/sgx_default_qcnl.conf
进入tdx-quote-appraisal-sample目录,编译对应的证明工具。
cd /opt/intel/tdx-quote-appraisal-sample/sudo make
生成安全评估策略(JSON格式)。
方式一:使用验证工具自带的默认策略(位于/opt/intel/tdx-quote-appraisal-sample/Policies/default_enclave.json)。
{"policy_array": [{"environment": {"class_id": "45b734fc-aa4e-4c3d-ad28-e43d08880e68",},"reference":{"tdx_attributes":"8000000010000000","tdx_attributes_mask": "7FFFFFFFFFFFFFFF"}}]}
方式二:编写您的自定义策略。
方式三:通过步骤一中生成的TD Report,来生成对应的安全评估策略。
sudo tee_appraisal_tool gen_payload -in <report_path> -out <td_identity_policy>
<report_path>请替换为真实的TD Report路径,本文使用/opt/intel/tdx-quote-generation-sample/report.dat。
<td_identity_policy>请替换为要生成的策略名,本文使用payload.json。
对安全评估策略进行签名。
方式一:使用默认的安全评估策略。
方式二:对自定义策略进行签名(包括通过TD Report生成的安全评估策略)。
sudo tee_appraisal_tool sign_policy -in <td_identity_policy> -key ec_priv.pem -out <signed_td_identity_policy>
<td_identity_policy>请替换为待签名的策略文件路径(.json文件),本文使用/opt/intel/tdx-quote-generation-sample/payload.json。
<signed_td_identity_policy>请替换为签名的策略名(以.jwt后缀命名),本文使用/opt/intel/tdx-quote-generation-sample/payload.jwt。
验证远程证明报告。
方式一:使用验证工具自带的默认安全评估策略,验证远程证明生成的Ouote。
sudo ./verifier -quote <quote_path>
<quote_path>请替换为待验证的Quote路径,本文使用/opt/intel/tdx-quote-generation-sample/quote.dat。
方式二:使用您签名后的自定义策略进行验证(包括通过TD Report生成的安全评估策略)。
sudo ./verifier -quote <quote_path> -td_identity_policy <td_identity_policy>
<quote_path>请替换为待验证的Quote路径,本文使用/opt/intel/tdx-quote-generation-sample/quote.dat。
<td_identity_policy>请替换为您生成的策略路径,本文使用/opt/intel/tdx-quote-appraisal-sample/payload.jwt。
TDX实例限制说明
TDX实例暂不支持VNC登录。
TDX实例的CPU寄存器和内存中的数据会通过CPU硬件进行加密保护,因此其性能相较常规ECS实例存在一定损失。
当前仅支持使用 Ubuntu 24.04 通用公共镜像和 veLinux 2.0 for TDX 、veLinux 2.0 CentOS Compatible for TDX 定制版公共镜像,若您使用自定义镜像创建TDX实例可能会导致实例无法使用。
Linux guest kernel SWIOTLB buffer已知问题:
SWIOTLB:Single-page Input/Output Transfer Lookaside Buffer,单页输入输出转换后备缓冲区。
可见内存较常规实例较小,开启了TDX特性的ECS实例内部将使用特定的非加密内存(SWIOTLB)用于外设通信,该内存区域的大小默认情况下为ECS实例可用内存的6%(但不大于1 GiB)。
大规格实例插入多张弹性网卡可能导致ECS实例夯机,原因是网卡多队列情况下SWIOTLB内存可能不足导致内存分配失败,您可以在控制台将对应ECS实例关机并卸载对应弹性网卡以从启动失败中恢复。
如果您的实例负载涉及大量的I/O通信,则可能遭遇由SWIOTLB不足导致的性能下降。您可以执行以下命令检查该问题是否存在:
dmesg| grep 'swiotlb buffer is full'
打开/etc/default/grub文件。
vim /etc/default/grub
在GRUB_CMDLINE_LINUX字段后加入SWIOTLB相关参数。例如将GRUB_CMDLINE_LINUX修改为GRUB_CMDLINE_LINUX=".... swiotlb=524288"以将SWIOTLB的大小修改为1 GiB。
SWIOTLB参数取值的计算方法为:目标大小(以MiB为单位)* 512。更多信息,请参见The kernel's command-line parameters。
执行以下命令,更新grub.cfg配置文件使修改生效。
# velinux/ubuntu版本sudo update-grub# velinux(centos compatible)版本sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg --update-bls-cmdline