Share via


受信任的硬體身分識別管理

受信任的硬體身分識別管理服務能夠處理位於 Azure 中所有受信任執行環境 (TEE) 的憑證快取管理。 亦提供受信任的運算基礎 (TCB) 資訊,以強制執行證明解決方案的最低基準。

受信任的硬體身分識別管理和證明互動

受信任的硬體身分識別管理會定義 Azure 機密運算 (ACC) 節點的 Azure 安全性基準,並且從 TEE 提供者快取宣傳資料。 證明服務和 ACC 節點可以使用快取的資訊來驗證 TEE。 下圖顯示證明服務或節點、受信任的硬體身分識別管理和記憶體保護區主機之間的互動。

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

常見問題集

如何搭配 Intel 處理器使用受信任的硬體身分識別管理?

若要產生 Intel SGX 和 Intel TDX 報價,Intel 報價產生程式庫 (QGL) 需要存取報價產生/驗證宣傳資料。 所有或部分的此附注必須從受信任的硬體身分識別管理擷取。 您可以使用 Intel 報價提供者程式庫 (QPL)Azure 資料中心證明基本類型 (DCAP) 用戶端程式庫來擷取它。

Azure 證明所使用的 Azure 內部快取服務 API 的「下一個更新」日期似乎已過期。 這是否仍在運作中,而且可以使用嗎?

tcbinfo 欄位包含 TCB 資訊。 受信任的硬體身分識別管理服務預設提供較舊的 tcbinfo 資訊。 從 Intel 更新至最新的 tcbinfo 資訊,會導致尚未移轉至最新 Intel SDK 的客戶發生證明失敗,而且可能會導致中斷。

開啟記憶體保護區 SDK 和 Azure 證明不會查看 nextUpdate 日期,而且會通過證明。

什麼是 Azure DCAP 程式庫?

Azure 資料中心證明基本類型 (DCAP) 程式庫,這是 Intel 報價提供者程式庫 (QPL) 的替代,直接從受信任的硬體身分識別管理服務擷取報價產生附注和報價驗證宣傳資料。 直接從受信任的硬體身分識別管理服務擷取宣傳資料可確保所有 Azure 主機在 Azure 雲端中都已立即提供附注,以減少外部相依性。 目前建議的 DCAP 程式庫版本是 1.11.2。

哪裡可以下載最新的 Azure DCAP 程式庫?

使用下列連結來下載套件:

針對較新版本的 Ubuntu (例如,Ubuntu 22.04),您必須使用 Intel QPL

為什麼受信任的硬體身分識別管理和 Intel 有不同的基準?

受信任的硬體身分識別管理和 Intel 提供不同基準層級的受信任運算基礎。 當客戶假設 Intel 有最新的基準時,他們必須確保符合所有需求。 如果客戶尚未更新為指定的需求,此方法可能會導致中斷。

受信任的硬體身分識別管理採用較慢的方法更新 TCB 基準,因此客戶可用自己的步調進行必要的變更。 此方法雖然提供較舊的 TCB 基準,但客戶若尚未符合新 TCB 基準的需求,則不會中斷。 這就是為什麼受信任硬體身分識別管理的 TCB 基準與 Intel 的版本不同。 我們想要讓客戶符合新 TCB 基準根據其步調所施加的需求,而不是強制他們更新並造成中斷,而需要重新排列其工作流程的優先順序。

有了 Intel Xeon E 處理器,我可以直接從 Intel PCS 取得我的憑證。 為什麼從第 4 代 Intel Xeon 可擴展處理器開始,我需要從受信任的硬體身分識別管理取得憑證嗎? 我如何取得這些憑證?

從第 4 代 Intel Xeon® 可擴展處理器開始,Azure 會使用平台資訊清單在 Intel® 的註冊服務上執行間接註冊,並將產生的 PCK 憑證儲存在 Azure 使用間接註冊的受信任的硬體身分識別管理 (THIM) 服務上,因為 Intel 的註冊服務在此案例中不會儲存平台的根金鑰,而這會反映在 PCK 憑證的 CachedKeys 旗標的 false 中。 使用間接註冊時,所有與 Intel PCS 的後續通訊都需要平台資訊清單,Azure 不會提供給虛擬機器 (VM)。 相反地,VM 必須連絡 THIM 以接收 PCK 憑證。 若要擷取 PCK 憑證,您可以使用 Intel QPLAzure DCAP 程式庫

如何搭配 Intel QPL 使用受信任的硬體身分識別管理?

客戶可能會想要彈性地使用 Intel QPL 與受信任的硬體身分識別管理互動,而不需要從 Microsoft 下載另一個相依性 (也就是 Azure DCAP 用戶端程式庫)。 想要搭配受信任的硬體身分識別管理服務使用 Intel QPL 的客戶,必須調整 Intel QPL 組態檔,sgx_default_qcnl.conf

用來產生 Intel SGX 或 Intel TDX 報價的報價產生/驗證宣傳資料可以分割成:

  • PCK 憑證。 若要擷取,客戶必須使用受信任的硬體身分識別管理端點。
  • 所有其他報價產生/驗證宣傳資料。 若要擷取,客戶可以使用受信任的硬體身分識別管理端點或 Intel 佈建認證服務 (PCS) 端點。

Intel QPL 組態檔 (sgx_default_qcnl.conf) 包含三個索引鍵來定義宣傳資料端點。 pccs_url 金鑰會定義用來擷取 PCK 憑證的端點。 collateral_service 金鑰可以定義用來擷取所有其他報價產生/驗證宣傳資料的端點。 如果未定義 collateral_service 金鑰,則會從使用 pccs_url 金鑰定義的端點擷取所有報價驗證宣傳資料。

下表顯示如何設定這些索引鍵。

名稱 可能的端點
pccs_url 受信任的硬體身分識別管理端點:https://global.acccache.azure.net/sgx/certification/v3
collateral_service 受信任的硬體身分識別管理端點 (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 
    

如何在機密虛擬機器 (CVM) 中要求宣傳資料?

在機密虛擬機器 (CVM) 訪客中使用下列範例來要求包含 VCEK 憑證和憑證鏈結的 AMD 宣傳資料。 如需此宣傳資料及其來源的詳細資訊,請參閱版本化晶片簽署金鑰 (VCEK) 憑證和 KDS 介面規格

URI 參數

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

要求本文

名稱 類型​​ 描述
Metadata 布林值 設定為 True 可傳回宣傳資料。

範例要求

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

回覆

名稱 描述
200 OK 列出 JSON 格式內 HTTP 內容的可用宣傳資料。
Other Status Codes 說明作業為何失敗

定義

關鍵 描述
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. 使用資源群組中的一個 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> 
        
    • 將 CVM 節點集區新增至現有的 AKS 叢集:

      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

    NAME 狀態 ROLES 年齡 VERSION
    aks-nodepool1-31718369-0 就緒 代理程式 6m44s v1.12.8
  3. 建立含有下列內容的 curl.yaml 檔案。 其會定義執行 curl 容器的作業,以從受信任的硬體身分識別管理端點擷取 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 檔案包含下列自引數。

    名稱 類型​​ 描述
    Metadata 布林值 設定為 True 可傳回宣傳資料。
  4. 套用 curl.yaml 檔案來執行作業:

    kubectl apply -f curl.yaml 
    
  5. 檢查並等候 Pod 完成其作業:

    kubectl get pods 
    

    以下是範例回應:

    名稱 就緒 狀態 Restarts 年齡
    Curl-w7nt8 0/1 已完成 0 72 s
  6. 執行下列命令以取得作業記錄,並驗證其是否正常運作。 成功的輸出應包含 vcekCerttcbmcertificateChain

    kubectl logs job/curl  
    

下一步