全部產品
Search
文件中心

Elastic Compute Service:構建TDX機密計算環境

更新時間:Aug 19, 2026

本文介紹如何在基於Intel® Trusted Domain Extension(Intel® TDX)技術的ECS執行個體(下文簡稱為TDX執行個體)中構建TDX機密計算環境,並示範如何運行執行個體代碼以驗證TDX功能。

背景資訊

Intel® TDX是一項基於CPU硬體的Elastic Compute Service保護技術,TDX執行個體的CPU寄存器、記憶體資料、中斷處理等均受到CPU硬體的機密保護,雲廠商和外部攻擊者均無法監控或篡改TDX執行個體的內部運行狀態(如啟動並執行進程、計算中的敏感性資料等)。關於Intel® TDX技術的更多資訊,請參見Intel® Trusted Domain Extension(Intel® TDX)

Intel® TDX可以為您的執行個體和應用提供預設的安全保護,即您可以將現有應用隨即轉移至TDX執行個體上並獲得TDX能力帶來的安全保護,而無需重新開發現有的應用程式。

建立TDX執行個體

通過控制台建立

在控制台建立具備TDX特性的執行個體步驟與建立普通執行個體類似,但需要注意一些特定選項。本步驟重點介紹TDX執行個體相關的特定配置,如果您想瞭解其他通用配置,請參見自訂購買執行個體

  1. 訪問ECS控制台-執行個體

  2. 在頁面左側頂部,選擇目標資源所在的資源群組和地區。

  3. 單擊建立實例,按照以下配置建立對應執行個體。

    配置項

    說明

    地區與可用性區域

    支援的地區與可用性區域與執行個體規格有關。請參見支援的地區、規格與鏡像

    本文以華北2(北京)可用性區域I、ecs.g8i.xlarge規格為例。

    執行個體規格

    鏡像

    選中機密虛擬機複選框,然後選擇Alibaba Cloud Linux 3.2104 LTS 64位鏡像

  4. 根據介面提示,完成建立執行個體。

通過OpenAPI或阿里雲CLI建立

您可以調用RunInstances或阿里雲CLI建立支援TDX安全特性的ECS執行個體,需要注意的參數如下表所示。

參數

說明

樣本

RegionId

華北2(北京)

cn-beijing

ZoneId

機密計算目前僅在部分地區的特定可用性區域開放,且不同可用性區域適配的執行個體規格存在差異。請參見支援的地區、規格與鏡像

cn-beijing-i

InstanceType

ecs.g8i.2xlarge

ImageId

指定支援TDX的鏡像ID,當前僅核心版本大於等於5.10.134-16.al8.x86_64的Alibaba Cloud Linux 3.2104 LTS 64位 UEFI 版鏡像支援。

aliyun_3_x64_20G_alibase_20241218.vhd

SecurityOptions.ConfidentialComputingMode

配置機密計算模式。

TDX

CLI樣本

aliyun ecs RunInstances \
  --SecurityOptions.ConfidentialComputingMode TDX \
  --Region cn-beijing \
  --ZoneId cn-beijing-i \
  --SystemDisk.Category cloud_essd \
  --ImageId 'aliyun_3_x64_20G_alibase_20241218.vhd' \
  --InstanceType 'ecs.g8i.2xlarge' \
  --SecurityGroupId 'sg-[SecurityGroupId]' \
  --VSwitchId 'vsw-[VSwitchID]' \
  --KeyPairName [KEY_PAIR_NAME] \
  

操作步驟

步驟一:檢查TDX的啟用狀態

在使用TDX機密計算環境前,建議您先檢查對應執行個體的TDX的啟用狀態,以確保對應執行個體處於安全保護中。

  1. 檢查TDX的啟用狀態。

    lscpu |grep -i tdx_guest

    如以下命令輸出所示,Flags 列表中包含 tdx_guest 則表示 TDX 已被正確啟用。

    [root@iZwzxxxxxxxx:~]# lscpu |grep -i tdx_guest
    Flags:           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc bts rep_good nopl xtopology tsc_known_freq pni pclmulqdq dtes64 ds_cpl ssse3 sdbg fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single sbd ibrs ibpb stibp ibrs_enhanced tdx_guest fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap avx512ifma clflushopts clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 wbnoinvd avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid bus_lock_detect cldemote movdiri movdir64b _vp2intersect md_clear serialize tsxldtrk amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities
  2. 檢查可用的證明報告介面

    TDX 的證明報告(TD Report 與 Quote)由核心暴露給使用者態,介面形態隨核心版本不同。請按鏡像的核心版本選擇檢查方式,有其中之一即可。

    介面

    使用鏡像與核心

    檢查命令

    ConfigFS TSM /sys/kernel/config/tsm/report

    Alibaba Cloud Linux 4、Ubuntu 24.04、Debian 13、Rocky 9.5 及以上(上遊核心 6.7 起)

    ls -d /sys/kernel/config/tsm/report

    字元裝置 /dev/tdx_guest

    Alibaba Cloud Linux 3(核心 5.10.134-16.al8 及以上)

    ls -l /dev/tdx_guest

步驟二:使用TDX機密計算能力

TDX 面向使用者態提供四類原子能力,構成從本地度量到遠程驗證的完整鏈路。

能力

說明

用途

TD Report 產生

TDX Module 返回的本地證明結構,固定 1024 位元組,可綁定調用方給的 64 位元組 REPORTDATA

取本地度量值;用 nonce 或公開金鑰雜湊綁定新鮮性

Quote 產生

Quoting Enclave 對 TD Report 簽名並內嵌 PCK 憑證鏈結,形成可被遠端獨立驗證的憑證

向遠端證明執行個體身份與運行狀態

Quote 驗證

校正 ECDSA 簽名和憑證鏈結,按需拉 collateral(TCB Info、QE Identity、PCK CRL)校正平台 TCB 層級和吊銷狀態

Quote真實性驗證

度量寄存器讀取與擴充

讀 MRTD、RTMR[0~3];解析 ACPI CCEL 事件記錄並與 RTMR 回放比對;向 RTMR[2]、RTMR[3] 擴充自訂度量

驗啟動鏈完整性;把應用程式層事件納入度量

龍蜥社區在 go-tdx-guest 裡提供了 tdx-lab 命令列工具,用例覆蓋上述四類能力,本文展示如何運行對應測試案例:

  1. 擷取並構建

    sudo yum install -y git golang
    git clone https://gitee.com/anolis/go-tdx-guest.git
    cd go-tdx-guest/tools/tdx-lab
    go build -o tdx-lab .
    說明

    Debian、Ubuntu 鏡像請改用sudo apt install -y git golang-go

  2. 擷取執行個體所在地區的阿里雲 PCCS 地址

    token=$(curl -s -X PUT -H "X-aliyun-ecs-metadata-token-ttl-seconds: 5" "http://100.100.100.200/latest/api/token")
    region_id=$(curl -s -H "X-aliyun-ecs-metadata-token: $token" http://100.100.100.200/latest/meta-data/region-id)
    PCCS_HOST=sgx-dcap-server-vpc.${region_id}.aliyuncs.com
  3. 運行測試案例

    # 運行所有測試案例
     ./tdx-lab --skip-early --pccs-url ${PCCS_HOST}
    說明
    當前不承諾tcb狀態為UpToDate,部分情境下Strict Tcb Check失敗的情況符合預期
    完整參數和逐個用例的說明見tools/tdx-lab/README.md

支援的地區、規格與鏡像

地區與規格限制

機密計算目前僅在部分地區的特定可用性區域開放,且不同可用性區域適配的執行個體規格存在差異。具體的地區與規格支援情況如下表所示:

地區及可用性區域

規格

華北2(北京)可用性區域L

ecs.g8i.xlarge及以上規格

華北2(北京)可用性區域I

  • ecs.g8i.xlarge及以上規格;

  • ecs.g9i.xlarge、ecs.c9i.xlarge、ecs.r9i.xlarge及以上規格;

  • ebmg8i規格類型系列。

華東1(杭州)可用性區域J

ecs.r9i.xlarge及以上執行個體規格

中國香港 可用性區域B

ecs.g8i.xlarge及以上執行個體規格

中國香港 可用性區域C

ecs.g8i.xlarge及以上執行個體規格

中國香港 可用性區域D

ecs.g8i.xlarge及以上執行個體規格

新加坡 可用性區域B

ecs.g8i.xlarge及以上執行個體規格

鏡像

重要

推薦使用Alibaba Cloud Linux 3

  • Debian版本大於等於13.1:Debian 13.1、Debian 13.2、Debian 13.3。

  • Rocky版本大於等於9.5:Rocky 9.5、Rocky 9.6、Rocky 9.7、Rocky 10.0、Rocky 10.1

  • Ubuntu版本大於等於24.04:Ubuntu 24.04

  • Alibaba Cloud Linux版本大於等於3:Alibaba Cloud Linux 3、Alibaba Cloud Linux 4。

已知功能限制

  • 開啟TDX特性的ECS的CPU寄存器和記憶體中的資料會通過CPU硬體進行加密保護,因此其效能相較普通ECS執行個體存在一定損失。

  • 受限於TDX動態度量值(RTMR)重設/中斷保護/寄存器狀態恢複等設計,開啟了TDX特性的ECS執行個體不支援內部重啟(即在作業系統內部不支援執行reboot命令)。

  • 暫不支援VNC登入執行個體,但不影響SSH方式登入,例如可以通過Workbench或第三方用戶端登入。如需擷取執行個體運行時所列印的日誌,請參見查看執行個體的系統日誌和螢幕截圖擷取執行個體系統命令列輸出

  • 鏡像限制:

    • 僅支援UEFI鏡像。

    • 暫不支援Windows。

    • 不支援核心版本過老的鏡像,核心版本需大於等於5.10.134-16.al8.x86_64。

  • 暫不支援eRDMA和各類加速器等。

  • Linux guest kernel SWIOTLB buffer已知問題:

    • 可見記憶體較常規執行個體較小,開啟了TDX特性的ECS執行個體內部將使用特定的非加密記憶體(SWIOTLB)用於外設通訊,該記憶體地區的大小預設情況下為ECS執行個體可用記憶體的6%(但不大於1 GiB)。

    • 大規格插入多張ENI彈性網卡可能導致ECS執行個體崩潰,原因為網卡多隊列情況下SWIOTLB記憶體可能不足導致記憶體配置失敗,您可以在控制台將對應ECS執行個體關機並卸載對應彈性網卡以從啟動失敗中恢複。

    • 如果您的執行個體負載涉及大量的IO通訊,則可能遭遇由SWIOTLB不足導致的效能下降。您可以使用以下命令檢查此問題是否存在:

      dmesg| grep 'swiotlb buffer is full'
      重要

      錯誤配置SWIOTLB參數可能導致您的執行個體啟動失敗,建議您在操作前建立磁碟快照,以便在任何錯誤情況下可以安全復原。具體操作,請參見手動建立單個快照

      如您確認該問題存在,您可以嘗試調大SWIOTLB大小以改善ECS的效能,具體操作如下:

      • 將SWIOTLB的大小修改為1 GiB。

        grubby --update-kernel=ALL --args=swiotlb=524288
      • 如果您的核心版本大於5.10.134-18.al8.x86_64 ,可以額外增加參數any以支援使用更大的SWIOTLB,如:

        grubby --update-kernel=ALL --args=swiotlb=2097152,any   # 將SWIOTLB調整為4 GiB
        說明

        SWIOTLB參數取值的計算方法為:目標大小(以MiB為單位)* 512。更多資訊,請參見The kernel's command-line parameters

相關最佳實務

關於TDX機密計算環境的更多實踐,您可以根據業務情境參考以下最佳實務,瞭解應用構建、磁碟保護和容器化部署等方案。