すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:TDX 機密コンピューティング環境の構築

最終更新日:Jan 07, 2026

このトピックでは、Intel® TDX 対応の Elastic Compute Service (ECS) インスタンス上に Trust Domain Extensions (TDX) 機密コンピューティング環境を構築し、インスタンスの TDX 機能を検証する方法について説明します。

背景情報

Intel® TDX は、CPU ハードウェアベースのテクノロジーであり、ECS インスタンスにハードウェア支援による隔離と暗号化を提供して、CPU レジスタ、メモリデータ、割り込みインジェクションなどのランタイムデータを保護します。Intel® TDX は、より高いレベルのデータプライバシーを実現し、実行中のプロセスや処理中の機密データへの不正アクセスに関連するリスクを軽減するのに役立ちます。Intel® TDX の詳細については、「Intel® Trust Domain Extensions (Intel® TDX)」をご参照ください。

Intel® TDX は、ご利用の ECS インスタンスとアプリケーションに、デフォルトですぐに利用できる保護機能を提供します。アプリケーションコードを変更することなく、アプリケーションを TDX 対応インスタンスに移行できます。

image

TDX 対応インスタンスの作成

コンソール

ECS コンソールで TDX 対応インスタンスを作成する手順は、通常のインスタンスを作成する手順と似ています。特定のパラメーターにご注意ください。次のセクションでは、TDX 対応インスタンスに固有のパラメーターについて説明します。すべてのインスタンスに共通するその他のパラメーターについては、「カスタム起動タブでのインスタンスの作成」をご参照ください。

  1. ECS コンソール - インスタンスに移動します。

  2. 上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。地域

  3. [インスタンスの作成] をクリックし、パラメーターを設定します。次の表にパラメーターを示します。

    パラメーター

    説明

    ネットワークとゾーン

    選択したネットワークとゾーンによって、利用可能なインスタンスタイプが異なります。

    • 北京ゾーン I:ecs.g8i.xlarge 以上のインスタンスタイプのみがサポートされます。

    • 北京ゾーン L:ecs.gn8v-tee.4xlarge 以上のインスタンスタイプのみがサポートされます。

    • シンガポールゾーン B:ecs.g8i.xlarge 以上のインスタンスタイプのみがサポートされます。

    インスタンスタイプ

    イメージ

    [機密 VM] を選択し、イメージバージョンとして [Alibaba Cloud Linux 3.2104 LTS 64 ビット] を選択します。

    説明

    gn8v-tee 関連のインスタンスタイプは、CPU と GPU の機密コンピューティング機能がデフォルトで有効になっており、[機密 VM] オプションはありません。

    image

  4. プロンプトに従ってインスタンスを作成します。

API/CLI

RunInstances 操作を呼び出すか、Alibaba Cloud CLI を使用して TDX 対応インスタンスを作成できます。次の表に、関連するパラメーターを示します。

パラメーター

説明

値の例

RegionId

中国 (北京) リージョンを選択します。

cn-beijing

ZoneId

  • 北京ゾーン I:ecs.g8i.xlarge 以上のインスタンスタイプを選択します。

  • 北京ゾーン L:ecs.gn8v-tee.4xlarge 以上のインスタンスタイプを選択します。

cn-beijing-i

InstanceType

ecs.g8i.2xlarge

ImageId

TDX をサポートするイメージの ID を指定します。カーネルバージョンが 5.10.134-16.al8.x86_64 以降の Alibaba Cloud Linux 3.2104 LTS 64 ビット Unified Extensible Firmware Interface (UEFI) イメージのみが TDX をサポートします。

aliyun_3_x64_20G_alibase_20241218.vhd

SecurityOptions.ConfidentialComputingMode

機密コンピューティングモードを指定します。

説明

gn8v-tee 関連のインスタンスタイプは、CPU と GPU の機密コンピューティング機能がデフォルトで有効になっています。このパラメーターを設定する必要はありません。

TDX

Alibaba Cloud CLI を使用して TDX 対応インスタンスを作成する例

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] \
  

操作手順

ステップ 1:TDX が有効になっているかの確認

ECS インスタンス上に TDX 機密コンピューティング環境を構築する前に、インスタンスで TDX が有効になっていることを確認してください。

  1. TDX が有効になっているか確認します。

    lscpu |grep -i tdx_guest

    次のコマンド出力は、TDX が有効になっていることを示します。tdx-install

  2. TDX ドライバーがインストールされているか確認します。

    ls -l /dev/tdx_guest

    次のコマンド出力は、TDX ドライバーがインストールされていることを示します。image

ステップ 2:TDX 機密コンピューティング環境の構築

説明

ほとんどの場合、アプリケーションコードを変更することなく、非 TDX 環境から TDX 環境にアプリケーションを移行できます。通常のインスタンスと同じように TDX 対応インスタンスを使用できます。ご利用の ECS インスタンスの TDX 保護を最大限に活用するために、次のセクションで説明する機能を使用することを推奨します。

TDX レポートは、TDX 対応インスタンスの ID を表すために CPU ハードウェアによって生成されるデータ構造です。TDX レポートには、属性 (ATTRIBUTES)ランタイム拡張可能メジャーメントレジスタ (RTMR)信頼できるコンピューティングベース (TCB) のセキュリティバージョン番号 (SVN) など、TDX 対応インスタンスに関する重要な情報が含まれています。TDX レポートは、暗号化メソッドを使用して情報の完全性を保証します。詳細については、「Intel TDX Module」をご参照ください。

  1. Alibaba Cloud 機密コンピューティング用の YUM ソフトウェアリポジトリをインポートします。

    • YUM ソフトウェアリポジトリのパブリック URL は、https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo のフォーマットです。

    • YUM ソフトウェアリポジトリの内部 URL は、https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo のフォーマットです。

    上記の URL の [Region-ID] を、TDX 対応インスタンスの実際のリージョン ID に置き換えてください。TDX 対応インスタンスは、中国 (北京) リージョンでのみ作成できます。中国 (北京) リージョンに固有の内部 URL から YUM ソフトウェアリポジトリをインポートするには、次のコマンドを実行します:

    region="cn-beijing"
    
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://enclave-${region}.oss-${region}-internal.aliyuncs.com/repo/alinux/enclave-expr.repo
  2. コンパイルツールとサンプルコードをインストールします。

    sudo yum groupinstall -y "Development Tools"
    sudo yum install -y sgxsdk libtdx-attest-devel
  3. サンプルの TDXReportParse コードをコンパイルします。

    1. TDXReportParse ディレクトリにアクセスします。

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/TDXReportParse
    2. TDXReportParse をコンパイルします。

      sudo make
  4. コンパイルされた実行可能ファイルを実行します。

    sudo ./tdx_report_parse

    次のコマンド出力が返されます。TDX 対応インスタンスが保護されている場合、インスタンスは非デバッグ状態にあり、attributes 行に NO_DEBUG が表示されます。image

リモートアテステーションサービスを使用した TDX 機能の検証

Alibaba Cloud TDX 暗号化環境では、リモートアテステーションサービスを使用して、プラットフォームの信頼性、およびプラットフォーム上で実行されているコードの完全性と機密性を検証できます。詳細については、「リモートアテステーションサービス」をご参照ください。

  • プラットフォームとは、Alibaba Cloud が使用するハードウェアプラットフォームと仮想化ソフトウェアスタックです。

  • プラットフォーム上で実行されているコードとは、Alibaba Cloud Linux などのオペレーティングシステムや、TDX 対応インスタンスで実行されている NGINX や Java などのアプリケーションです。

  1. 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
  2. Alibaba Cloud TDX リモートアテステーションサービスを設定します。

    /etc/sgx_default_qcnl.conf ファイルで PCCS_URL パラメーターを指定します。PCCS_URL パラメーターは、中国 (北京) リージョンの Distributed Cooperative Access Points (DCAP) サービスを指すようにのみ指定できます。

    sudo sed -i.$(date "+%m%d%y") 's|PCCS_URL=.*|PCCS_URL=https://sgx-dcap-server.cn-beijing.aliyuncs.com/sgx/certification/v4/|' /etc/sgx_default_qcnl.conf
  3. tdx-quote-generation-sample ディレクトリにアクセスし、tdx-quote-generation-sample ファイルをコンパイルします。

    cd /opt/alibaba/tdx-quote-generation-sample
    sudo make
  4. 次のいずれかの操作を実行して、システムがリモートアテステーションレポート (Quote とも呼ばれます) を生成できるようにします:

    • システムがランダムに report_data を生成し、Quote を生成できるようにします。

      sudo ./app
    • report_data を指定して Quote を生成します。

      sudo ./app -d <report_data_in_hex>
        説明
        • report_data_in_hex パラメーターは、最大 64 バイトの 16 進数文字列です。

        • 生成される Quote に含まれる report_data_in_hex パラメーターにカスタムデータを指定できます。

        • 長さの制限があるため、report_data_in_hex パラメーターの値はハッシュ値です。たとえば、report_data_in_hex パラメーターは公開鍵のハッシュ値に設定されます。このハッシュ値は、後続のキー交換プロセスで使用できます。

        コマンド例:

        sudo ./app -d 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
        sudo ./app -d $(cat data.dat | xxd -p)

    リモートアテステーションレポート (Quote) が生成されると、次の図に示すようなコマンド出力が返されます。

    image

  5. リモートアテステーションレポート (Quote) を検証します。

    1. 評価ポリシーを設定し、署名します。

      重要

      既知の安全な環境を使用することを推奨します。本番環境を使用して評価ポリシーを生成しないでください。

      評価ポリシーは JSON フォーマットで定義できます。

      • たとえば、次の評価ポリシーを設定して、ご利用の TDX 対応 ECS インスタンスが暗号化された非デバッグ状態で実行されているかどうかを検証できます。これは、インスタンスが保護されていることを示します。

      • また、評価ポリシーに追加のパラメーターを含めて、オペレーティングシステムとアプリケーションの完全性を検証することもできます。評価ポリシーの詳細については、「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"
                    }
                }
            ]
        }

      /opt/alibaba/tdx-quote-verification-sample/Policies/tenant_td_policy.json ファイルのデフォルトポリシーを使用するか、カスタムポリシーをコンパイルして、後続の検証のためにポリシートークンを使用できます。ポリシートークンは、後続の検証のためにリモートアテステーションレポートを生成する任意の環境に転送できます。

      cd /opt/alibaba/tdx-quote-verification-sample
      sudo make Policies/tenant_td_policy.jwt

      ポリシートークンが生成されると、次の図に示すようなコマンド出力が返されます。

      image

    2. TDX リモートアテステーションが依存する他のコンポーネントをコンパイルします。

      cd /opt/alibaba/tdx-quote-verification-sample
      sudo make all

      依存コンポーネントがコンパイルされると、次の図に示すようなコマンド出力が返されます。

      image

    3. リモートアテステーションレポート (Quote) を検証します。

      重要

      次のコマンドの <path_to_quote> パラメーターの値を、リモートアテステーションレポート (Quote) の実際のパスに置き換えてください。例:/opt/alibaba/tdx-quote-generation-sample/quote.dat

      • Policies/tenant_td_policy.json ファイルのポリシーに基づいて、リモートアテステーション用に生成された Quote が検証され、対応する検証結果が JSON Web トークン (JWT) フォーマットから標準フォーマットに変換されます。

        ./verifier -quote <path_to_quote>

        次の図に示すようなコマンド出力が返されます。

        image

      • RelyingParty を使用して JWT 署名の ID を検証します。

        ./verifier -quote <path_to_quote> |./relying_party -v |grep "json payload" |awk -F 'payload:' '{print $2}'|jq 

        次の図に示すようなコマンド出力が返されます。コマンド出力では、特定のフィールドのみが表示されます。

        説明

        簡単にするために、appraisal_resultoverall_appraisal_result フィールドをチェックして、エビデンスが評価ポリシーに準拠しているかどうかを確認できます。

        ./verifier -quote <path_to_quote> |./relying_party -v |grep "json payload" |awk -F 'payload:' '{print $2}'|jq '.[0].result.overall_appraisal_result'

        さらに、Quote の生成時に指定された report_data パラメーターも、リモートアテステーションサービスの検証結果に含まれています。report_data の値を使用して、キー交換などのビジネスロジックを実装できます。

        ./verifier -quote <path_to_quote> |./relying_party -v -a|grep "json payload" |awk -F 'payload:' '{print $2}'|jq '.. | .tdx_reportdata?  | select(. != null)'
        [
          {
            "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"
                    }
                  }
                }
              ]
            }
          }
        ]

既知の問題と機能制限

  • TDX 対応インスタンスは、CPU ハードウェアベースの暗号化を提供して CPU レジスタとメモリ状態を保護します。その結果、TDX 対応インスタンスの全体的なパフォーマンスが影響を受けます。

  • RTMR、割り込み保護、およびレジスタ状態の回復の設計上の制限により、インスタンス内から TDX 対応インスタンスを再起動することはできません。TDX 対応インスタンスのオペレーティングシステムで reboot コマンドを実行してインスタンスを再起動することはできません。

  • Virtual Network Computing (VNC) を使用して TDX 対応インスタンスにログインすることはできません。Workbench やサードパーティクライアントなどのツールを使用して、SSH 経由で TDX 対応インスタンスにログインできます。TDX 対応インスタンスの実行時に生成されたログを取得できます。詳細については、「システムログとスクリーンショットの表示」または「GetInstanceConsoleOutput」をご参照ください。

  • イメージには次の制限が適用されます:

    • UEFI イメージのみがサポートされます。

    • Windows イメージはサポートされていません。

    • カーネルバージョンが 5.10.134-16.al8.x86_64 以降のイメージがサポートされます。

  • Elastic Remote Direct Memory Access (eRDMA) とアクセラレータはサポートされていません。

  • 以下の既知の問題は、Linux カーネルの Software Input Output Translation Lookaside Buffer (SWIOTLB) に関連しています:

    • TDX 対応インスタンスで使用可能なメモリ量は、通常のインスタンスで使用可能なメモリ量よりも少なくなります。TDX 対応インスタンスは、周辺機器との通信のために、非暗号化メモリ内の SWIOTLB と呼ばれる特定のエリアを使用します。デフォルトでは、SWIOTLB は TDX 対応インスタンスの利用可能な総メモリの 6% を消費し、サイズは 1 GiB を超えません。

    • 複数の Elastic Network Interface (ENI) を large インスタンスタイプの TDX 対応インスタンスにバインドすると、ネットワークインターフェースコントローラー (NIC) のマルチキューシナリオで SWIOTLB が不足してメモリ割り当てに失敗した場合に、インスタンスがフリーズすることがあります。ECS コンソールで TDX 対応インスタンスを停止し、インスタンスから ENI をアンバインドすることで、インスタンスを回復できます。

    • インスタンスのワークロードに大量の I/O 操作が含まれる場合、SWIOTLB の不足により TDX 対応インスタンスのパフォーマンスが低下する可能性があります。次のコマンドを実行して、上記の問題が存在するかどうかを確認できます:

      dmesg| grep 'swiotlb buffer is full'
      重要

      SWIOTLB 関連のパラメーター設定が正しくないと、インスタンスの起動に失敗する可能性があります。エラー発生時のデータロールバックを容易にするために、続行する前にインスタンス上のディスクのスナップショットを作成することを推奨します。詳細については、「手動でのスナップショットの作成」をご参照ください。

      上記の問題が存在する場合、次の手順を実行して SWIOTLB サイズを増やすことで、インスタンスのパフォーマンスを向上させることができます:

      • 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 パラメーターの値は、次の数式を使用して計算できます:必要な SWIOTLB サイズ (MiB) × 512。詳細については、「The kernel's command-line parameters」をご参照ください。