Siapkan Intel® TDX pada Instance ECS dan verifikasi dengan kode contoh remote attestation.
Latar Belakang
Intel® TDX adalah teknologi perlindungan berbasis perangkat keras untuk Instance ECS. Pada instans TDX, register CPU, data memori, penanganan interupsi, dan status runtime lainnya dilindungi secara rahasia oleh perangkat keras CPU. Penyedia cloud maupun penyerang eksternal tidak dapat memantau atau mengubah status runtime internal instans TDX, seperti proses yang sedang berjalan dan data sensitif selama komputasi. Lihat Intel® Trusted Domain Extension (Intel® TDX).
Intel® TDX mengamankan instans dan aplikasi secara default. Aplikasi yang sudah ada dapat dimigrasikan ke instans TDX tanpa perlu pengembangan ulang.
Prasyarat
Konsol
Membuat instans TDX mirip dengan membuat instans standar. Hanya konfigurasi khusus TDX yang dijelaskan di sini. Untuk konfigurasi umum, lihat Buat instans secara kustom.
Buka ECS console - Instances.
Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya.
-
Klik Create Instance dan konfigurasikan parameter berikut.
Parameter
Deskripsi
Wilayah dan zona
Wilayah dan zona yang didukung bervariasi tergantung tipe instans. Lihat Wilayah, tipe instans, dan image yang didukung.
Contoh ini menggunakan China (Beijing) Zona I dan ecs.g8i.xlarge.
Tipe instans
Image
Pilih kotak centang Confidential VM, lalu pilih image Alibaba Cloud Linux 3.2104 LTS 64-bit.

-
Selesaikan konfigurasi tersisa untuk membuat instans.
CLI dan API
Panggil operasi RunInstances atau gunakan Alibaba Cloud CLI untuk membuat Instance ECS yang mendukung TDX. Konfigurasikan parameter berikut.
|
Parameter |
Deskripsi |
Contoh |
|
RegionId |
China (Beijing) |
cn-beijing |
|
ZoneId |
Hanya tersedia di zona tertentu. Tipe instans bervariasi tergantung zona. Lihat Wilayah, tipe instans, dan image yang didukung. |
cn-beijing-i |
|
InstanceType |
ecs.g8i.2xlarge |
|
|
ImageId |
ID image yang mendukung TDX. Hanya image UEFI Alibaba Cloud Linux 3.2104 LTS 64-bit dengan kernel 5.10.134-16.al8.x86_64 atau lebih baru yang didukung. |
aliyun_3_x64_20G_alibase_20241218.vhd |
|
SecurityOptions.ConfidentialComputingMode |
Mode komputasi rahasia. |
TDX |
Contoh 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-<YourSecurityGroupId>' \
--VSwitchId 'vsw-<YourVSwitchId>' \
--KeyPairName <YourKeyPairName> \
Prosedur
Langkah 1: Verifikasi bahwa TDX diaktifkan
Verifikasi bahwa TDX diaktifkan pada instans Anda sebelum melanjutkan.
-
Periksa apakah TDX diaktifkan.
lscpu |grep -i tdx_guestJika output berisi
tdx_guest, berarti TDX telah diaktifkan.
-
Periksa apakah driver TDX telah diinstal.
ls -l /dev/tdx_guestJika output berisi /dev/tdx_guest, berarti driver TDX telah diinstal.

Langkah 2: Bangun lingkungan TDX
Sebagian besar aplikasi dapat dimigrasikan ke instans TDX tanpa perlu pengembangan ulang. Untuk memanfaatkan keamanan TDX secara maksimal, gunakan fitur-fitur yang dijelaskan di bawah ini.
TDX Report adalah struktur data yang dihasilkan oleh CPU yang merepresentasikan identitas instans TDX. Struktur ini berisi informasi penting seperti ATTRIBUTES, Runtime-extendable Measurement Registers (RTMRs), dan Trusted Computing Base Security Version Numbers (TCB SVNs), serta menggunakan metode kriptografi untuk melindungi integritasnya. Lihat Intel TDX Module.
-
Tambahkan repositori yum komputasi rahasia Alibaba Cloud.
-
Format endpoint publik:
https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo. -
Format endpoint VPC:
https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo.Ganti [Region-ID] dengan ID wilayah instans TDX. Contoh berikut menggunakan metadata instans untuk mendapatkan ID wilayah secara dinamis:
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) sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://enclave-${region_id}.oss-${region_id}-internal.aliyuncs.com/repo/alinux/enclave-expr.repo
-
-
Instal tool pembangunan dan kode contoh.
sudo yum groupinstall -y "Development Tools" sudo yum install -y sgxsdk libtdx-attest-devel -
Bangun contoh TDXReportParse.
-
Masuk ke direktori TDXReportParse.
cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/TDXReportParse -
Bangun TDXReportParse.
sudo make
-
-
Jalankan file yang dapat dieksekusi hasil kompilasi.
sudo ./tdx_report_parseNO_DEBUGdalam bidangattributesmenunjukkan mode non-debug (mode aman).
Verifikasi remote attestation TDX
Di lingkungan TDX Alibaba Cloud, remote attestation memverifikasi keandalan platform dan integritas serta kerahasiaan kode yang dijalankan di atasnya. Lihat Layanan remote attestation.
-
Platform: stack perangkat keras dan virtualisasi yang digunakan Alibaba Cloud.
-
Kode yang dijalankan di platform: sistem operasi (seperti Alibaba Cloud Linux) dan aplikasi (seperti Nginx dan Java) di lingkungan TDX.
-
Instal dependensi remote attestation TDX.
sudo yum install -y gcc gcc-c++ make openssl-devel git jq sudo yum install -y tdx-quote-generation-sample tee-appraisal-tool libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel tdx-quote-verification-sample -
Konfigurasikan layanan remote attestation TDX Alibaba Cloud.
Atur
PCCS_URLdi/etc/sgx_default_qcnl.conf. Contoh berikut menggunakan metadata instans untuk mendapatkan ID wilayah secara dinamis dan mengonfigurasi layanan DCAP: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) sudo sed -i.$(date "+%m%d%y") 's|PCCS_URL=.*|PCCS_URL=https://sgx-dcap-server.${region_id}.aliyuncs.com/sgx/certification/v4/|' /etc/sgx_default_qcnl.conf -
Masuk ke direktori tdx-quote-generation-sample dan bangun aplikasi.
cd /opt/alibaba/tdx-quote-generation-sample sudo make -
Hasilkan quote.
-
Hasilkan
report_datasecara acak dan terbitkan quote:sudo ./app -
Tentukan
report_datadan terbitkan quote:sudo ./app -d <report_data_in_hex>-
<report_data_in_hex>adalah string heksadesimal sepanjang 64 byte. -
Data kustom dalam
report_data_in_hexdisertakan dalam quote yang dihasilkan. -
Karena panjangnya terbatas,
report_data_in_hexbiasanya berupa nilai hash, seperti hash kunci publik untuk kesepakatan kunci.
CatatanContohnya:
sudo ./app -d 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef sudo ./app -d $(cat data.dat | xxd -p) -
Jika output serupa dikembalikan, berarti quote berhasil dihasilkan.

-
-
Verifikasi quote.
-
Konfigurasikan dan tandatangani kebijakan appraisal.
PentingLakukan operasi ini di lingkungan tepercaya dan aman, bukan di lingkungan produksi.
Definisikan kebijakan appraisal keamanan Anda dalam format JSON.
-
Sebagai contoh, kebijakan berikut memverifikasi bahwa Instance ECS TDX Anda berjalan dalam keadaan terenkripsi dan tidak dapat di-debug (mode aman).
-
Anda juga dapat menambahkan parameter untuk memverifikasi integritas OS dan aplikasi. Lihat Intel DCAP Appraisal Engine Developer Guide.
{ "policy_array":[ { "environment":{ "class_id":"45b734fc-aa4e-4c3d-ad28-e43d08880e68", "description":"Application TD TCB 1.5" }, "reference":{ "tdx_attributes":"0000000010000000", "#NOTE": "0000000010000000 means for NO_DEBUG and SPTE_VE_DISABLE" } } ] }
Gunakan kebijakan default (di
/opt/alibaba/tdx-quote-verification-sample/Policies/tenant_td_policy.json) atau tulis kebijakan kustom untuk menghasilkan Policy Token guna verifikasi. Token ini dapat ditransfer ke lingkungan mana pun tempat remote attestation diperlukan.cd /opt/alibaba/tdx-quote-verification-sample sudo make Policies/tenant_td_policy.jwtJika output serupa dikembalikan, berarti Policy Token berhasil dihasilkan.

-
-
Bangun komponen lainnya untuk remote attestation TDX.
cd /opt/alibaba/tdx-quote-verification-sample sudo make allJika output serupa dikembalikan, berarti komponen berhasil dibangun.

-
Verifikasi quote.
PentingGanti
<path_to_quote>dengan path quote aktual, seperti/opt/alibaba/tdx-quote-generation-sample/quote.dat.-
Verifikasi quote terhadap kebijakan di
Policies/tenant_td_policy.json. Hasilnya ditampilkan ke stdout sebagai JWT../verifier -quote <path_to_quote>Contoh output:

-
Gunakan RelyingParty untuk memverifikasi signature JWT.
./verifier -quote <path_to_quote> |./relying_party -v |grep "json payload" |awk -F 'payload:' '{print $2}'|jqCatatan-
Periksa bidang
overall_appraisal_resultdalamappraisal_resultuntuk memastikan apakah attester memenuhi kebijakan appraisal Anda../verifier -quote <path_to_quote> |./relying_party -v |grep "json payload" |awk -F 'payload:' '{print $2}'|jq '.[0].result.overall_appraisal_result' -
report_datayang ditentukan saat pembuatan quote juga muncul dalam hasil verifikasi (di bidang tdx_reportdata). Gunakan nilai ini untuk logika bisnis seperti pertukaran kunci../verifier -quote <path_to_quote> |./relying_party -v -a|grep "json payload" |awk -F 'payload:' '{print $2}'|jq '.. | .tdx_reportdata? | select(. != null)'
Contoh output (beberapa bidang dihilangkan):
[ { "result": { "appraisal_check_date": 1710400829000000000, "nonce": 502551065253582, "certification_data": [ { "certification_data": { "qe_identity_issuer_chain": "LS0t...", "root_ca_crl": "MzA4...", "pck_crl": "LS0t...", "pck_crl_issuer_chain": "LS0t...", "tcb_info": "eyJ0...", "qe_identity": "eyJl...", "tcb_info_issuer_chain": "LS0t..." } } ], "overall_appraisal_result": 1, "appraised_reports": [ { "appraisal_result": 1, "detailed_result": [ { "td_mrownerconfig_check": true, "td_xfam_check": true, "td_mrservicetd_check": true, "td_attributes_check": true, "td_rtmr3_check": true, "td_mrtd_check": true, "td_mrowner_check": true, "td_rtmr0_check": true, "td_mrconfigid_check": true, "td_rtmr1_check": true, "td_rtmr2_check": true } ], "policy": { "environment": { "description": "Application TD TCB 1.5", "class_id": "45b734fc-aa4e-4c3d-ad28-e43d08880e68" }, "signature": "-6C0-...", "reference": { ... }, "signing_key": { "kty": "EC", "crv": "P-384", "alg": "ES384", "y": "CeW8...", "x": "NmSa..." } }, "report": { "environment": { "Description": "Application TD TCB", "class_id": "45b734fc-aa4e-4c3d-ad28-e43d08880e68" }, "measurement": { "tdx_mrownerconfig": "0000...", "tdx_mrservicetd": "3D03...", "tdx_xfam": "00000000000642E7", "tdx_mrtd": "0A40...", "tdx_mrowner": "0000...", "tdx_attributes": "0000000010000000", "tdx_mrconfigid": "0000...", "tdx_reportdata": "D98B...", "tdx_rtmr3": "0000...", "tdx_rtmr2": "0000...", "tdx_rtmr1": "6368...", "tdx_rtmr0": "D0FD..." } } }, { "appraisal_result": 1, "detailed_result": [ { "platform_provider_id_check": true, "sgx_types_check": true, "cached_keys_check": true, "smt_enabled_check": true, "accepted_tcb_level_date_tag_check": true, "advisory_ids_check": true, "expiration_date_check": true, "tcb_eval_num_check": true, "earliest_accepted_tcb_level_date_tag_check": true, "tcb_status_check": true, "dynamic_platform_check": true } ], "policy": { "environment": { "description": "Alibaba Cloud Evaluation Num Policy for TDX Platform", "class_id": "f708b97f-0fb2-4e6b-8b03-8a5bcd1221d3" }, "signature": "l00p...", "reference": { "accepted_tcb_status": [ "UpToDate" ], "allow_dynamic_plaform": true, "min_eval_num": 16 }, "signing_key": { "kty": "EC", "crv": "P-384", "alg": "ES384", "y": "7hlr...", "x": "OSbD..." } }, "report": { "environment": { "description": "TDX Platform TCB", "class_id": "f708b97f-0fb2-4e6b-8b03-8a5bcd1221d3" }, "measurement": { "earliest_issue_date": "2018-05-21T10:45:10Z", "is_cached_keys_policy": true, "fmspc": "90C06F000000", "is_smt_enabled": true, "earliest_expiration_date": "2024-04-02T10:22:51Z", "root_ca_crl_num": 1, "root_key_id": "9309...", "pck_crl_num": 1, "tcb_eval_num": 16, "latest_issue_date": "2024-03-13T15:45:02Z", "tcb_status": [ "UpToDate" ], "tcb_level_date_tag": "2023-08-09T00:00:00Z", "is_dynamic_platform": true, "sgx_types": 1 } } }, { "appraisal_result": 1, "detailed_result": [ { "td_qe_expiration_date_check": true, "td_qe_tcb_eval_num_check": true, "td_qe_earliest_accepted_tcb_level_date_tag_check": true, "td_qe_tcb_status_check": true, "td_qe_accepted_tcb_level_date_tag_check": true } ], "policy": { "environment": { "description": "Alibaba Cloud Num Policy for Verified TDQE", "class_id": "3769258c-75e6-4bc7-8d72-d2b0e224cad2" }, "signature": "l00p...", "reference": { "accepted_tcb_status": [ "UpToDate" ], "min_eval_num": 16 }, "signing_key": { "kty": "EC", "crv": "P-384", "alg": "ES384", "y": "7hlr...", "x": "OSbD..." } }, "report": { "environment": { "Description": "RAW TDX QE Report", "class_id": "3769258c-75e6-4bc7-8d72-d2b0e224cad2" }, "measurement": { "earliest_expiration_date": "2025-05-21T10:50:10Z", "earliest_issue_date": "2018-05-21T10:45:10Z", "root_key_id": "9309...", "tcb_eval_num": 16, "latest_issue_date": "2018-05-21T10:50:10Z", "tcb_status": [ "UpToDate" ], "tcb_level_date_tag": "2023-08-09T00:00:00Z" } } } ] } } ] -
-
-
Wilayah, tipe instans, dan image yang didukung
Batasan wilayah dan tipe instans
Komputasi rahasia hanya tersedia di zona tertentu. Tipe instans yang didukung bervariasi tergantung zona.
|
Wilayah dan zona |
Tipe instans |
|
China (Beijing) Zona L |
ecs.g8i.xlarge dan lebih besar |
|
China (Beijing) Zona I |
|
|
China (Hangzhou) Zona J |
ecs.r9i.xlarge dan lebih besar |
|
China (Hong Kong) Zona B |
ecs.g8i.xlarge dan lebih besar |
|
China (Hong Kong) Zona C |
ecs.g8i.xlarge dan lebih besar |
|
China (Hong Kong) Zona D |
ecs.g8i.xlarge dan lebih besar |
|
Singapore Zona B |
ecs.g8i.xlarge dan lebih besar |
Gambar
Kami menyarankan Anda menggunakan Alibaba Cloud Linux 3.
-
Debian13.1atau lebih baru: Debian 13.1, Debian 13.2, Debian 13.3. -
Rocky9.5atau lebih baru: Rocky 9.5, Rocky 9.6, Rocky 9.7, Rocky 10.0, Rocky 10.1. -
Ubuntu24.04atau lebih baru: Ubuntu 24.04. -
Alibaba Cloud Linux3atau lebih baru: Alibaba Cloud Linux 3, Alibaba Cloud Linux 4.
Batasan
-
Instans TDX mungkin memiliki performa lebih rendah dibandingkan instans biasa karena register CPU dan data memori dienkripsi oleh perangkat keras CPU.
-
Karena reset RTMR, perlindungan interupsi, dan pemulihan status register, instans TDX tidak mendukung reboot dalam OS. Anda tidak dapat menjalankan perintah
rebootdi dalam OS. -
Login VNC tidak didukung. Gunakan SSH melalui Workbench atau klien pihak ketiga sebagai gantinya. Untuk log runtime, lihat Lihat log sistem dan tangkapan layar instans atau GetInstanceConsoleOutput.
-
Batasan image:
-
Hanya image UEFI yang didukung.
-
Windows tidak didukung.
-
Image dengan kernel lawas tidak didukung. Versi kernel harus 5.10.134-16.al8.x86_64 atau lebih baru.
-
-
eRDMA dan berbagai jenis akselerator tidak didukung.
-
Isu yang diketahui terkait buffer SWIOTLB kernel guest Linux:
-
Memori yang terlihat oleh OS lebih sedikit dibandingkan instans biasa. Instans TDX menyisihkan memori tidak terenkripsi (SWIOTLB) untuk komunikasi perangkat periferal. Secara default, area ini sebesar 6% dari memori yang tersedia, hingga maksimal 1 GiB.
-
Menambahkan multiple elastic network interfaces (ENIs) ke instans besar dapat menyebabkan crash akibat kekurangan memori SWIOTLB dalam skenario kartu jaringan multi-antrian. Hentikan instans di konsol dan lepas ENI untuk memulihkan.
-
Beban kerja I/O tinggi mungkin mengalami degradasi performa akibat kekurangan SWIOTLB. Periksa dengan:
dmesg| grep 'swiotlb buffer is full'PentingPengaturan SWIOTLB yang salah dapat menyebabkan kegagalan boot. Buat snapshot sebelum melanjutkan agar Anda dapat melakukan rollback jika terjadi error.
Jika masalah ini terjadi, tingkatkan ukuran SWIOTLB:
-
Atur ukuran SWIOTLB menjadi 1 GiB.
grubby --update-kernel=ALL --args=swiotlb=524288 -
Untuk versi kernel lebih baru dari
5.10.134-18.al8.x86_64, tambahkan parameteranyuntuk mendukung ukuran SWIOTLB yang lebih besar:grubby --update-kernel=ALL --args=swiotlb=2097152,any # Mengatur SWIOTLB menjadi 4 GiB.CatatanHitung nilai parameter SWIOTLB: Ukuran target (dalam MiB) × 512. Lihat The kernel's command-line parameters.
-
-