Trusted Hardware Identity Management

Trusted Hardware Identity Management サービスは、Azure に存在するすべての信頼できる実行環境 (TEE) の証明書のキャッシュ管理を処理します。 また、構成証明ソリューションの最小ベースラインを適用するためのトラステッド コンピューティング ベース (TCB) 情報も提供します。

Trusted Hardware Identity Management と構成証明の相互作用

Trusted Hardware Identity Management は、Azure Confidential Computing (ACC) ノードの Azure セキュリティ ベースラインを定義し、TEE プロバイダーからの資料をキャッシュします。 構成証明サービスと ACC ノードでは、キャッシュされた情報を使用して TEE を検証できます。 次の図は、構成証明サービスまたはノード、Trusted Hardware Identity Management、エンクレーブ ホスト間の相互作用を示しています。

Diagram that illustrates interactions between an attestation service or node, Trusted Hardware Identity Management, and an enclave host.

よく寄せられる質問

Intel プロセッサで Trusted Hardware Identity Management を使用する方法

Intel SGX クォートと Intel TDX クォートを生成するために、Intel Quote Generation Library (QGL) はクォート生成/検証資料にアクセスできる必要があります。 この資料の全部または一部は、Trusted Hardware Identity Management からフェッチする必要があります。 これは Intel Quote Provider Library (QPL) または Azure Data Center Attestation Primitives (DCAP) クライアント ライブラリを使用してフェッチできます。

Azure Attestation によって使用される Azure 内部キャッシュ サービス API の "次の更新" 日が期限切れになっているようです。 まだ有効で、使用できますか?

tcbinfo フィールドには TCB 情報が含まれています。 Trusted Hardware Identity Management サービスは、既定で古い tcbinfo 情報を提供します。 Intel から提供される最新の tcbinfo 情報に更新すると、まだ最新の Intel SDK に移行していない顧客で構成証明エラーが発生し、機能が停止する可能性があります。

ただし、Open Enclave SDK と Microsoft Azure Attestation では nextUpdate の日付を参照しないため、構成証明に合格します。

Azure DCAP ライブラリとは?

Intel Quote Provider Library (QPL) に代わる Azure Data Center Attestation Primitives (DCAP) ライブラリは、見積もり作成資料と見積もり検証資料を Trusted Hardware Identity Management サービスから直接フェッチします。 Trusted Hardware Identity Management サービスから直接資料をフェッチすることで、すべての Azure ホストが Azure クラウド内で資料をすぐに利用できるようになり、外部依存を減らすことができます。 DCAP ライブラリの現在の推奨バージョンは 1.11.2 です。

最新の Azure DCAP ライブラリはどこでダウンロードできますか?

パッケージをダウンロードするには、次のリンクを使用します。

新しいバージョンの Ubuntu (Ubuntu 22.04 など) の場合は、Intel QPL を使用する必要があります。

Trusted Hardware Identity Management と Intel のベースラインが異なるのはなぜですか?

Trusted Hardware Identity Management と Intel では、異なるベースライン レベルのトラステッド コンピューティング ベースが提供されます。 Intel のベースラインが最新であるとお客様が想定する場合、すべての要件が満たされていることを確認する必要があります。 この方法では、お客様が指定された要件に更新していない場合、破損につながる可能性があります。

Trusted Hardware Identity Management では、TCB ベースライン更新はゆっくりとしたアプローチで行っているため、お客様は自分のペースで必要な変更を行えます。 このアプローチでは古い TCB ベースラインが提供されますが、お客様が新しい TCB ベースラインの要件を満たしていない場合、破損が生じることはありません。 このため、Trusted Hardware Identity Management の TCB ベースラインは、Intel のベースラインとは異なるバージョンです。 当社は顧客に更新を強制してワークストリームの優先順位付けの再考を必要とする混乱を生じさせるのではなく、新しい TCB ベースラインの要件を顧客が自分のペースで満たせるようにしたいと考えています。

Intel Xeon E プロセッサを使用すると、証明書を直接 Intel PCS から取得できます。 第 4 世代以降の Intel Xeon スケーラブル プロセッサで、Trusted Hardware Identity Management から証明書を取得する必要があるのはなぜですか? また、これらの証明書をフェッチするにはどうすればよいですか?

第 4 世代の Intel® Xeon® スケーラブル プロセッサ以降、Azure はプラットフォーム マニフェストを使用して Intel の登録サービスで間接登録を実行し、結果の PCK 証明書を、Azure が間接登録を使用する Trusted Hardware Identity Management (THIM) サービスに格納します。これは、この場合、Intel の登録サービスではプラットフォームのルート キーが格納されず、これは PCK 証明書の CachedKeys フラグの false によって反映されるためです。 間接登録が使用されるので、Intel PCS への次のすべての通信にプラットフォーム マニフェストが必要になります。Azure はこれを仮想マシン (VM) に提供しません。 代わりに、VM は、PCK 証明書を受信するために THIM にアクセスする必要があります。 PCK 証明書を取得するには、Intel QPL または Azure DCAP ライブラリのいずれかを使用できます。

Trusted Hardware Identity Management で Intel QPL を使用する方法

お客様にとっては、別の依存関係 (Azure DCAP クライアント ライブラリなど) を Microsoft からダウンロードすることなく、Intel QPL を使用して Trusted Hardware Identity Management と対話できることが望ましい場合があります。 お客様が Trusted Hardware Identity Management サービスで Intel QPL を使用する場合は、Intel QPL の構成ファイル (sgx_default_qcnl.conf) を調整する必要があります。

Intel SGX クォートまたは Intel TDX クォートを生成するために使用されるクォート生成/検証資料は、次のものに分割できます。

  • PCK 証明書。 これを取得するには、お客様は Trusted Hardware Identity Management エンドポイントを使用する必要があります。
  • その他のすべてのクォート生成/検証資料。 これを取得するには、お客様は Trusted Hardware Identity Management エンドポイントまたは Intel Provisioning Certification Service (PCS) エンドポイントを使用できます。

Intel QPL 構成ファイル (sgx_default_qcnl.conf) には、資料エンドポイントの定義のための 3 つのキーが含まれています。 pccs_url キーで、PCK 証明書の取得に使用されるエンドポイントが定義されます。 collateral_service キーを使用して、他のすべてのクォート生成/検証資料の取得に使用されるエンドポイントを定義できます。 collateral_service キーが定義されていない場合は、すべての見積もり検証資料が、pccs_url キーで定義されているエンドポイントから取得されます。

次の表に、これらのキーを設定する方法を示します。

名前 使用可能なエンドポイント
pccs_url Trusted Hardware Identity Management エンドポイント: https://global.acccache.azure.net/sgx/certification/v3
collateral_service Trusted Hardware Identity Management エンドポイント (https://global.acccache.azure.net/sgx/certification/v3) または Intel PCS エンドポイント。 sgx_default_qcnl.conf ファイルには、collateral_service キー内の最新のエンドポイントが常に一覧表示されます。

次のコード スニペットは、Intel QPL 構成ファイルの例です。

    { 
        "pccs_url": "https://global.acccache.azure.net/sgx/certification/v3/", 
        "use_secure_cert": true, 
        "collateral_service": "https://global.acccache.azure.net/sgx/certification/v3/",  
        "pccs_api_version": "3.1", 
        "retry_times": 6, 
        "retry_delay": 5, 
        "local_pck_url": "http://169.254.169.254/metadata/THIM/sgx/certification/v3/",
        "pck_cache_expire_hours": 24, 
        "verify_collateral_cache_expire_hours": 24, 
        "custom_request_options": { 
            "get_cert": { 
                "headers": { 
                    "metadata": "true" 
                }, 
                "params": { 
                    "api-version": "2021-07-22-preview" 
                } 
            } 
        } 
    }   

次の手順では、Intel QPL 構成ファイルを変更し、変更をアクティブにする方法について説明します。

Windows の場合

  1. 変更を構成ファイルに加えます。

  2. ファイルに対して、次のレジストリの場所とキー/値からの読み取りアクセス許可があることを確認します。

    [HKEY_LOCAL_MACHINE\SOFTWARE\Intel\SGX\QCNL]
    "CONFIG_FILE"="<Full File Path>"
    
  3. AESMD サービスを再起動します。 たとえば、管理者として PowerShell を開き、次のコマンドを実行します。

    Restart-Service -Name "AESMService" -ErrorAction Stop
    Get-Service -Name "AESMService"
    

Linux の場合

  1. 変更を構成ファイルに加えます。 たとえば、次のコマンドを使用して変更に Vim を使用できます。

    sudo vim /etc/sgx_default_qcnl.conf
    
  2. AESMD サービスを再起動します。 いずれかのターミナルを開き、次のコマンドを実行します。

    sudo systemctl restart aesmd 
    systemctl status aesmd 
    

機密仮想マシンで資料を要求するにはどうすればよいですか?

VCEK 証明書と証明書チェーンを含む AMD 資料を要求するには、機密仮想マシン (CVM) ゲストで次のサンプルを使用します。 この資料の詳細とその出所については、「バージョン管理されたチップ保証キー (VCEK) 証明書と KDS インターフェイス仕様」を参照してください。

URI パラメーター

GET "http://169.254.169.254/metadata/THIM/amd/certification"

要求本文

名前 種類 Description
Metadata Boolean True に設定すると、資料を返すことができます。

要求のサンプル

curl GET "http://169.254.169.254/metadata/THIM/amd/certification" -H "Metadata: true"

Responses

名前 説明
200 OK HTTP 本文で使用可能な資料を JSON 形式で一覧表示します。
Other Status Codes 操作に失敗した理由を説明します

定義

Key 説明
VcekCert RFC 5280 で定義されている X.509v3 証明書
tcbm トラステッド コンピューティング ベース
certificateChain AMD SEV キー (ASK) 証明書と AMD ルート キー (ARK) 証明書

CVM ノードの Azure Kubernetes Service コンテナーに AMD 資料を要求するにはどうすればよいですか?

機密コンテナーで AMD 資料を要求する次の手順に従います。

  1. まず、CVM ノードに Azure Kubernetes Service (AKS) クラスターを作成するか、既存のクラスターに CVM ノード プールを追加して行います。

    • CVM ノードに AKS クラスターを作成します。

      1. CVM がサポートされている地域のいずれかにリソース グループを作成します。

        az group create --resource-group <RG_NAME> --location <LOCATION> 
        
      2. リソース グループに 1 つの CVM ノードを含む AKS クラスターを作成します。

        az aks create --name <CLUSTER_NAME> --resource-group <RG_NAME> -l <LOCATION> --node-vm-size Standard_DC4as_v5 --nodepool-name <POOL_NAME> --node-count 1
        
      3. kubectl を構成してクラスターに接続します。

        az aks get-credentials --resource-group <RG_NAME> --name <CLUSTER_NAME> 
        
    • 既存の AKS クラスターに CVM ノード プールを追加します。

      az aks nodepool add --cluster-name <CLUSTER_NAME> --resource-group <RG_NAME> --name <POOL_NAME > --node-vm-size Standard_DC4as_v5 --node-count 1 
      
  2. kubectl get コマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。

    kubectl get nodes 
    

    次の出力例は、前の手順で作成した単一ノードを示しています。 ノードの状態が Ready であることを確認してください。

    名前 状態 ROLES AGE VERSION
    aks-nodepool1-31718369-0 Ready エージェント 6m44s v1.12.8
  3. 次の内容を含む curl.yaml ファイルを作成します。 これは、curl コンテナーを実行して、Trusted Hardware Identity Management エンドポイントから AMD の資料をフェッチするジョブを定義します。 Kubernetes ジョブの詳細については、Kubernetes のドキュメントを参照してください。

    apiVersion: batch/v1 
    kind: Job 
    metadata: 
      name: curl 
    spec: 
      template: 
        metadata: 
          labels: 
            app: curl 
        spec: 
          nodeSelector: 
            kubernetes.azure.com/security-type: ConfidentialVM 
          containers: 
            - name: curlcontainer 
              image: alpine/curl:3.14 
              imagePullPolicy: IfNotPresent 
              args: ["-H", "Metadata:true", "http://169.254.169.254/metadata/THIM/amd/certification"] 
          restartPolicy: "Never" 
    

    curl.yaml ファイルには、次の引数が含まれています。

    名前 種類 Description
    Metadata Boolean True に設定すると、資料を返すことができます。
  4. curl.yaml ファイルを適用してジョブを実行します。

    kubectl apply -f curl.yaml 
    
  5. ポッドがジョブを完了するのを確認して待ちます。

    kubectl get pods 
    

    次は応答の例です。

    名前 Ready 状態 Restarts Age
    Curl-w7nt8 0/1 完了 0 72 秒
  6. 次のコマンドを実行してジョブ ログを取得し、動作しているかどうかを検証します。 正常な出力には、vcekCerttcbmcertificateChain が含まれているはずです。

    kubectl logs job/curl  
    

次のステップ