このトピックでは、Intel® Trusted Domain Extension (Intel® TDX) ベースの Elastic Compute Service (ECS) インスタンス (以下、TDX インスタンス) で TDX 機密コンピューティング環境を構築し、テストケースを実行して TDX 機能を検証する方法について説明します。
背景情報
Intel® TDX は、ECS インスタンス向けのハードウェアベースの保護技術です。TDX インスタンスでは、CPU ハードウェアが CPU レジスタ、メモリデータ、割り込み処理、その他のランタイム状態を機密情報として保護します。クラウドプロバイダーも外部の攻撃者も、実行中のプロセスや計算中の機密データなど、TDX インスタンスの内部ランタイム状態を監視したり改ざんしたりすることはできません。詳細については、「Intel® Trusted Domain Extension (Intel® TDX)」をご参照ください。
Intel® TDX は、デフォルトでインスタンスとアプリケーションを保護します。既存のアプリケーションは、再開発することなく TDX インスタンスに移行できます。
前提条件
コンソール
TDX インスタンスの作成は、標準インスタンスの作成と同様です。ここでは、TDX 固有の設定についてのみ説明します。一般的な設定については、「カスタム購入でインスタンスを作成する」をご参照ください。
ECS コンソール - インスタンスに移動します。
上部メニューで、対象リソースのリージョンとリソースグループを選択します。
インスタンスの作成 をクリックし、次のパラメーターを設定します。
パラメータ
説明
リージョンとゾーン
サポートされているリージョンとゾーンは、インスタンスタイプによって異なります。詳細については、「サポートされているリージョン、インスタンスタイプ、イメージ」をご参照ください。
この例では、中国 (北京) ゾーン I と ecs.g8i.xlarge を使用します。
インスタンスタイプ
イメージ
機密 VM チェックボックスを選択し、次に Alibaba Cloud Linux 3.2104 LTS 64 ビット イメージを選択します。
残りの設定を完了して、インスタンスを作成します。
CLI と API
RunInstances API を呼び出すか、Alibaba Cloud CLI を使用して、TDX が有効な ECS インスタンスを作成します。次のパラメータを設定します。
パラメータ | 説明 | 例 |
RegionId | 中国 (北京) | 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_20240315.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_20240315.vhd' \
--InstanceType 'ecs.g8i.2xlarge' \
--SecurityGroupId 'sg-<YourSecurityGroupId>' \
--VSwitchId 'vsw-<YourVSwitchId>' \
--KeyPairName <YourKeyPairName> \
操作手順
ステップ 1:TDX の有効化確認
次に進む前に、インスタンスで TDX が有効になっていることを確認してください。
TDX が有効になっているかどうかを確認します。
lscpu |grep -i tdx_guest出力に
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利用可能なアテステーションレポートインターフェイスを確認します。
カーネルは、TDX アテステーションレポート (TD Report と Quote) をユーザーモードに公開します。インターフェイスはカーネルバージョンによって異なります。イメージのカーネルバージョンに合った確認コマンドを選択してください。いずれかのコマンドで確認できれば十分です。
インターフェイス
適用可能なイメージとカーネル
確認コマンド
ConfigFS TSM
/sys/kernel/config/tsm/reportAlibaba Cloud Linux 4、Ubuntu 24.04、Debian 13.1、Rocky 9.5 以降 (アップストリームカーネル 6.7 以降)
ls -d /sys/kernel/config/tsm/reportキャラクタデバイス
/dev/tdx_guestAlibaba Cloud Linux 3 (kernel 5.10.134-16.al8 or later)
ls -l /dev/tdx_guest
ステップ 2:TDX 機密コンピューティング機能の使用
TDX は、ユーザーモードに 4 つのアトミックな機能を提供します。これらは、ローカル測定からリモート検証までの完全なチェーンを形成します。
機能 | 説明 | 目的 |
TD Report 生成 | TDX モジュールによって返されるローカルアテステーション構造体です。サイズは 1,024 バイトに固定されており、呼び出し元によって提供される 64 バイトの | ローカル測定を取得し、ノンスまたは公開鍵ハッシュを使用して鮮度を保証します。 |
Quote 生成 | Quoting Enclave が TD Report に署名し、PCK 証明書チェーンを埋め込むことで、リモート側が独立して検証できるクレデンシャルを生成します。 | インスタンスの ID とランタイム状態をリモート側に証明します。 |
Quote 検証 | ECDSA 署名と証明書チェーンを検証し、必要に応じて TCB Info、QE Identity、PCK CRL などのコラテラルを取得して、プラットフォーム TCB レベルと失効ステータスを確認します。 | Quote が本物であることを検証します。 |
測定レジスタの読み取りと拡張 |
| ブートチェーンの完全性を検証し、アプリケーション層のイベントを測定に含めます。 |
OpenAnolis コミュニティは、go-tdx-guest で tdx-lab コマンドラインツールを提供しています。そのテストケースは、上記の 4 つの機能に対応しています。以降の手順では、それらのテストケースの実行方法を説明します。
ツールを取得し、ビルドします。
sudo yum install -y git golang git clone https://gitee.com/anolis/go-tdx-guest.git cd go-tdx-guest/tools/tdx-lab GOPROXY='https://goproxy.cn,direct' go build -o tdx-lab .説明Debian および Ubuntu イメージの場合は、代わりに
sudo apt install -y git golang-goを実行します。インスタンスが存在するリージョンの Alibaba Cloud 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テストケースを実行します。
# すべてのテストケースを実行 ./tdx-lab --skip-early --pccs-url ${PCCS_HOST}説明TCB ステータスが
UpToDateであることは保証されていないため、一部のシナリオでStrict Tcb Checkが失敗することが想定されています。完全なパラメーターリストと各テストケースの説明については、「tools/tdx-lab/README.md」をご参照ください。
サポートされているリージョン、インスタンスタイプ、イメージ
リージョンとインスタンスタイプの制限
機密コンピューティングは、特定のゾーンでのみ利用可能です。サポートされているインスタンスタイプは、ゾーンによって異なります。
リージョンとゾーン | インスタンスタイプ |
中国 (北京) ゾーン L | ecs.g8i.xlarge 以上 |
中国 (北京) ゾーン I |
|
中国 (杭州) ゾーン J | ecs.r9i.xlarge 以上 |
中国 (香港) ゾーン B | ecs.g8i.xlarge 以上 |
中国 (香港) ゾーン C | ecs.g8i.xlarge 以上 |
中国 (香港) ゾーン D | ecs.g8i.xlarge 以上 |
シンガポール ゾーン B | ecs.g8i.xlarge 以上 |
イメージ
Alibaba Cloud Linux 3 の使用を推奨します。
Debian13.1以降: Debian 13.1、Debian 13.2、Debian 13.3。Rocky9.5以降: Rocky 9.5、Rocky 9.6、Rocky 9.7、Rocky 10.0、Rocky 10.1。Ubuntu24.04以降: Ubuntu 24.04。Alibaba Cloud Linux3以降: Alibaba Cloud Linux 3、Alibaba Cloud Linux 4。
制限事項
TDX インスタンスは、CPU レジスタとメモリデータが CPU ハードウェアによって暗号化されるため、通常のインスタンスよりもパフォーマンスが低下する場合があります。
RTMR のリセット、割り込み保護、およびレジスタ状態の回復により、TDX インスタンスは OS 内での再起動をサポートしていません。OS 内で
rebootコマンドを実行することはできません。VNC ログオンはサポートされていません。代わりに、Workbench またはサードパーティ製クライアント経由で SSH を使用してください。ランタイムログについては、「インスタンスシステムログとスクリーンショットの表示」または「GetInstanceConsoleOutput」をご参照ください。
イメージの制限事項:
UEFI イメージのみがサポートされています。
Windows はサポートされていません。
古いカーネルを使用したイメージはサポートされていません。カーネルバージョンは 5.10.134-16.al8.x86_64 以降である必要があります。
eRDMA および各種アクセラレータはサポートされていません。
Linux ゲストカーネル SWIOTLB バッファに関する既知の問題:
通常のインスタンスと比較して、OS から認識できるメモリが少なくなります。TDX インスタンスは、周辺機器との通信用に暗号化されていないメモリ (SWIOTLB) を予約します。デフォルトでは、この領域は利用可能なメモリの 6% で、最大 1 GiB です。
大規模なインスタンスに複数の Elastic Network Interface (ENI) をアタッチすると、マルチキューネットワークカードの環境では SWIOTLB メモリが不足し、クラッシュする可能性があります。コンソールでインスタンスを停止し、ENI をデタッチして回復してください。
高 I/O ワークロードでは、SWIOTLB が不足してパフォーマンスが低下する可能性があります。次のコマンドで確認してください。
dmesg| grep 'swiotlb buffer is full'重要SWIOTLB の設定が正しくない場合、起動に失敗する可能性があります。作業を進める前にスナップショットを作成して、エラーが発生した場合にロールバックできるようにしてください。
この問題が発生した場合は、SWIOTLB サイズを増やしてください。
SWIOTLB サイズを 1 GiB に設定します。
grubby --update-kernel=ALL --args=swiotlb=5242885.10.134-18.al8.x86_64より後のカーネルバージョンでは、より大きな SWIOTLB サイズをサポートするためにanyパラメーターを追加します:grubby --update-kernel=ALL --args=swiotlb=2097152,any # SWIOTLB を 4 GiB に設定します。説明SWIOTLBパラメータ値の計算:目標サイズ (MiB 単位) × 512。詳細については、「The kernel's command-line parameters」をご参照ください。
ベストプラクティス
TDX 機密コンピューティング環境に関する詳細なガイダンスについては、特定のビジネスシナリオに基づいて、以下のベストプラクティスをご参照ください。これらのリソースでは、アプリケーションの構築、ディスク保護、コンテナ化されたデプロイメント戦略について説明しています。
TDX インスタンスで機密 AI アプリケーションを迅速にデプロイする必要がある場合は、「One-click Build of OpenClaw Confidential AI Agent on g9i TDX Confidential Computing Instances」をご参照ください。
機密コンピューティングインスタンスでディスクデータを保護し、ルートファイルシステムのディスク測定と完全性検証を実行する方法については、「Disk measurement and encryption protection for confidential computing instances」をご参照ください。
機密コンピューティング環境でコンテナ化されたワークロードを実行する必要がある場合は、「Deploy CoCo on Alibaba Cloud bare metal」をご参照ください。