全部產品
Search
文件中心

Elastic Compute Service:基於異構機密計算執行個體構建支援安全度量的大語言模型推理環境

更新時間:Dec 31, 2025

隨著大語言模型技術的普及,越來越多的企業開始嘗試利用該技術來提升業務能力。因此,如何安全的管理模型及使用者資料變得尤為重要,本文介紹基於異構機密計算執行個體構建支援安全度量大語言模型推理環境的最佳實務。

背景資訊

阿里雲異構機密計算執行個體(gn8v-tee)在CPU TDX機密計算執行個體的基礎上,進一步將GPU引入到可信執行環境(TEE)中,以保護CPU和GPU之間的資料轉送以及GPU內部的資料計算。本文介紹基於異構機密計算執行個體,將英特爾TDX的安全測量和遠程認證功能整合到大規模語言模型(LLM)推理服務中的方案,從而為LLM服務構建強大的安全身分識別驗證和隱私保護工作流程。該方案確保對模型及使用者資料進行安全管理,進而在整個服務生命週期內維護其完整性,防止未經授權的訪問。

上述方案遵循如下兩個設計原則:

  • 機密性:確保模型和使用者資料僅在機密計算執行個體的機密安全邊界內處理,並防止將明文暴露到外部環境中。

  • 完整性:保證LLM推理服務環境中的所有組件(推理服務架構、模型檔案、互動式介面等)的代碼、資料和配置具有防篡改特性,同時支援嚴格的第三方審計驗證流程。

方案的安全原理介紹

該方案中涉及到的安全原理包含可信度量和遠程認證,關於這兩種原理的介紹如下。

  • 可信度量

    Intel Trust Domain Extensions (TDX) 通過將虛擬機器隔離在受硬體保護的信任域 (TDs, Trusted Domains) 中來增強虛擬機器的安全性,在啟動過程中,TDX 模組使用兩個主要寄存器記錄 TD 客戶機的狀態:

    • Build Time Measurement Register (MRTD):捕獲與客戶虛擬機器的初始配置和啟動鏡像相關的測量值。

    • Runtime Measurement Registers (RTMR):根據需要記錄初始狀態、核心映像、命令列選項和其他運行時服務和參數的測量值。

    上述Measurement可確保 TD 和正在啟動並執行應用程式在整個生命週期中的完整性。在本方案中,模型服務和核心參數的測量(包括與 Ollama 和 DeepSeek 模型以及Open WebUI架構相關的測量)可以反映在 RTMR 中。

  • 遠程認證

    TDX 中的遠程認證為遠程方提供了TD機密虛擬機器完整性和真實性的加密認證。該過程包括下述關鍵步驟:

    • TD Quote的擷取:

      1. 用戶端向Open WebUI請求提供完整的遠程認證服務。

      2. Open WebUI後端擷取受硬體簽名保護的遠程證明報告。該報告包括 MRTD 和 RTMR,反映正在啟動並執行模型服務環境的當前完整性狀態。這份簽署的測量報告被稱為Quote。

    • TD Quote的認證:用戶端將Quote發送到受信任的證明服務,以根據預定義的策略進行驗證,並在處理敏感資訊之前與模型服務建立信任。

    說明

    關於阿里雲遠程證明服務的更多內容,請參見遠程證明服務

通過整合可信度量和證明機制,可以為大語言模型推理服務構建了一個強大的安全架構,旨在驗證遠程模型服務的完整性和真實性,這對於資料安全與隱私的保護至關重要。

技術架構

上述方案在阿里雲上的整體技術架構如下所示。

image

關於上述架構中涉及的相關組件的說明如下。

  • 用戶端

    終端使用者訪問大語言模型服務的互動介面(UI),負責發起會話、驗證遠端模型服務環境可信性,並與後端模型服務進行安全通訊。

  • 遠程證明服務

    基於阿里雲遠程證明服務,用於驗證模型推理服務環境的安全狀態,包括平台可信計算基(TCB, Trusted Computing Base)以及推理模型服務環境。

  • 推理服務元件

    • Ollama:是一個處理模型推理服務要求的模型服務架構,本方案中使用的版本為v0.5.7

    • DeepSeek 模型:本方案中使用DeepSeek-R1-70B(int4 量化)蒸餾版模型。

    • Open WebUI:運行於機密虛擬機器內部的 Web 互動介面,通過 RESTful API 接收使用者模型服務要求,本方案中使用的版本為v0.5.20

    • CCZoo開源專案:本方案使用到的Confidential AI源碼,本方案中使用的版本為v1.2。關於該開源專案的更多資訊,請參見CCZoo

說明

Confidential Computing Zoo(CCZoo)是一組針對雲端運算業務情境的安全解決方案集合,旨在協助開發人員更輕鬆地構建自己的端到端機密計算解決方案。涉及的現代安全技術有(但不限於):TEE(可信執行環境,如 Intel® SGX 和 TDX)、HE(同態加密)及其硬體加速、遠程認證、LibOS、加密及其硬體加速。涉及的業務情境包括(但不限於):雲原生 AI 推理、聯邦學習、巨量資料分析、密鑰管理、RPC(Remote Process Call,如 gRPC)等。

工作流程

該方案的具體工作流程及說明如下。

image

  1. 服務啟動及度量流程

    運行環境度量:平台TCB模組針對運行模型服務的運行環境進行完整性度量,度量結果儲存在位於TCB中的TDX Module中。

  2. 推理會話初始化階段

    建立會話:用戶端(瀏覽器)向Open WebUI發起新的會話請求。

  3. 遠程證明階段

    1. 證明請求:用戶端發起會話請求時,會向服務後端同時請求一個證明模型運行環境的可信性證明(TDX Quote),該證明可以用來驗證遠程服務環境的可信性,包含使用者會話管理服務 Open WebUI和模型服務(Ollama + DeepSeek)的可信性。

    2. 證明產生:Open WebUI服務後端將使用者會話建立過程中的證明請求轉寄至基於Intel TDX的機密虛擬機器(Confidential VM)中,機密虛擬機器會在其中基於CPU硬體產生包含完整憑證鏈結的TDX遠程證明報告(TDX Quote)。

    3. 證明驗證:用戶端將接收到的證明(Quote)提交至遠程證明服務(Attestation Service)進行驗證。證明服務通過驗證該次證明的有效性(包括數位簽章、憑證鏈結及安全性原則),返回證明結果,確認遠端模型服務環境的安全性狀態與完整性。

  4. 機密大模型推理服務階段

    1. 遠程證明成功:用戶端可以充分信任遠端模型服務,因為其運行在高度安全且可信的模式下。這種保證意味著,對於終端使用者而言,資料泄露的風險極低(儘管任何系統都存在一定程度的風險)。

    2. 遠程證明失敗:證明服務將返回錯誤資訊,表明遠程證明失敗。在這種情況下,使用者或者系統可以選擇中止後續的服務要求,或者在收到存在安全風險的提示後繼續提供服務。然而,此時遠端模型服務可能會面臨資料安全風險。

操作步驟

步驟一:建立異構機密計算執行個體

重要

使用Ollama下載的模型資料將被儲存至/usr/share/ollama/.ollama/models目錄。由於模型檔案通常較大(以DeepSeek-R1 70b量化模型為例,模型檔案大小約為40 GB),建議您在建立執行個體時綜合考慮所需啟動並執行模型大小,以選擇合適的雲端硬碟容量。建議雲端硬碟容量為模型檔案大小的2至3倍。

通過控制台建立

在控制台建立具備異構機密計算特性的執行個體步驟與建立普通執行個體類似,但需要注意一些特定選項。本步驟重點介紹異構機密計算執行個體相關的特定配置,如果您想瞭解其他通用配置,請參見自訂購買執行個體

  1. 訪問ECS控制台-執行個體

  2. 在頁面左側頂部,選擇目標資源所在的資源群組和地區。地區

  3. 單擊建立執行個體,按照以下配置建立對應執行個體。

    配置項

    說明

    地區與可用性區域

    華北2(北京)可用性區域L

    執行個體規格

    僅支援ecs.gn8v-tee.4xlarge及以上執行個體規格。

    鏡像

    選擇Alibaba Cloud Linux 3.2104 LTS 64位鏡像。

    公網IP

    分配公網IPv4地址。保證後續可以從NVIDIA官網下載驅動程式。

    重要

    建立8 GPU卡機密執行個體時,請勿添加額外的輔助彈性網卡,此操作可能導致執行個體啟動失敗。

    原因及補救

    啟用TDX特性的ECS執行個體會使用一塊特定的非加密記憶體地區(SWIOTLB)進行外設通訊。該記憶體地區大小有限(預設為執行個體可用記憶體的6%,上限1 GiB)。

    在建立8 GPU卡機密執行個體時,掛載多張彈性網卡可能會耗盡SWIOTLB記憶體,導致記憶體配置失敗,從而使執行個體無法啟動。

    若執行個體啟動失敗,可通過以下方案補救:

    • 方案一:停止執行個體,並解除綁定額外輔助彈性網卡。

    • 方案二:重新建立僅有一塊主網卡的執行個體。

    如需為8 GPU卡機密執行個體添加多塊彈性網卡,可在完成步驟一將SWIOTLB buffer調整為8GB後,綁定彈性網卡到ECS執行個體

  4. 根據介面提示,完成建立執行個體。

通過OpenAPI或阿里雲CLI建立

您可以調用RunInstances或阿里雲CLI建立支援TDX安全特性的ECS執行個體,需要注意的參數如下表所示。

參數

說明

樣本

RegionId

華北2(北京)

cn-beijing

ZoneId

可用性區域L

cn-beijing-l

InstanceType

選擇ecs.gn8v-tee.4xlarge及以上執行個體規格

ecs.gn8v-tee.4xlarge

ImageId

指定支援異構機密的鏡像ID,當前僅核心版本大於等於5.10.134-18.al8.x86_64的Alibaba Cloud Linux 3.2104 LTS 64位鏡像支援。

aliyun_3_x64_20G_alibase_20250117.vhd

CLI樣本:

命令中<SECURITY_GROUP_ID>為安全性群組ID、<VSWITCH_ID>為交換器ID、<KEY_PAIR_NAME>為SSH金鑰組名稱。
aliyun ecs RunInstances \
  --RegionId cn-beijing \
  --ZoneId cn-beijing-l \
  --SystemDisk.Category cloud_essd \
  --ImageId 'aliyun_3_x64_20G_alibase_20250117.vhd' \
  --InstanceType 'ecs.gn8v-tee.4xlarge' \
  --SecurityGroupId '<SECURITY_GROUP_ID>' \
  --VSwitchId '<VSWITCH_ID>' \
  --KeyPairName <KEY_PAIR_NAME>

步驟二:構建TDX遠程證明環境

TDX Report是由CPU硬體直接產生的代表了TDX執行個體身份的資料結構,其包含了TDX執行個體的屬性(ATTRIBUTES)動態度量值(RTMR)TCB SVN等關鍵資訊,並以密碼學方法保護其完整性。更多資訊,請參見Intel TDX Module

  1. 匯入阿里雲機密計算yum軟體源。

    • 公網地址格式:https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo

    • VPC內網地址格式:https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo

      請將上述地址中的[Region-ID]替換為TDX執行個體所在地區的ID。當前僅支援在華北2(北京)地區建立TDX執行個體,華北2(北京)地區中的VPC內網匯入樣本:

      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. 配置阿里雲TDX遠程證明服務。

    配置/etc/sgx_default_qcnl.conf檔案中的PCCS_URL,當前僅支援將PCCS_URL指向阿里雲華北2(北京)的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

步驟三:安裝Ollama

  1. 使用Workbench登入Linux執行個體

  2. 運行如下命令,安裝Ollama。

    curl -fsSL https://ollama.com/install.sh | sh
    說明

    上述指令碼為Ollama官方提供的安裝指令碼,如果在安裝過程中因網路問題導致安裝失敗,您可以參考Ollama官網,選擇其他安裝方式以完成Ollama的安裝,具體操作,請參見ollama安裝指南

步驟四:通過Ollama下載並運行DeepSeek-R1

因模型檔案較大,因此下載耗時較長,建議您使用tmux工具來保持會話,防止下載操作異常中斷。

  1. 安裝tmux工具。

    運行如下命令,安裝tmux工具。

    sudo yum install -y tmux
  2. 通過Ollama下載並運行DeepSeek-R1。

    運行如下命令,建立一個tmux會話,並在tmux會話中通過Ollama下載運行DeepSeek-R1模型。

    # 為tmux建立一個名稱為run-deepseek的會話
    tmux new -s "run-deepseek"
    # 在tmux會話中下載並運行deepseek-r1模型
    ollama run deepseek-r1:70b

    回顯資訊樣本如下,表明模型下載完成並啟動成功,您可以輸入/bye以退出模型互動流程。

    ......
    verifying sha256 digest 
    writing manifest 
    success 
    >>> 
    >>> Send a message (/? for help)
  3. (條件可選)重新串連tmux會話。

    如果您需要在網路連接斷開後重新恢複tmux會話,請運行如下命令。

    tmux attach -t run-deepseek

步驟五:編譯Open WebUI

如需Open WebUI支援基於TDX的安全度量服務,您需要下載TDX安全度量外掛程式,並基於Open WebUI源碼手動編譯Open WebUI,以使其支援基於TDX的安全度量服務。具體操作步驟如下。

重要

下述樣本中,以工作目錄為/home/ecs-user為例進行示範,實際使用中,請根據您的具體情況進行替換。

  1. 安裝所需的依賴軟體及環境

    1. 安裝Node.js。

      運行如下命令,安裝Node.js。

      sudo yum install -y nodejs
      說明

      如果使用包管理器安裝Node.js出現問題,可以嘗試使用nvm(Node Version Manager)安裝Node.js指定版本。

      # 下載並安裝nvm
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
      # 載入nvm環境變數
      source ~/.bashrc
      # 安裝Node.js 20.18.1版本
      nvm install 20.18.1
      # 使用該版本
      nvm use 20.18.1
      # 驗證版本
      node --version
    2. 安裝Miniforge 3並配置其環境變數。

      運行如下命令,安裝Miniforge 3,並配置其環境變數,以便管理open-webui虛擬環境。

      # 擷取Miniforge3安裝包
      wget https://github.com/conda-forge/miniforge/releases/download/24.11.3-2/Miniforge3-24.11.3-2-Linux-x86_64.sh
      # 使用非互動式方式安裝miniforge3至/home/ecs-user/miniforge3目錄
      bash Miniforge3-24.11.3-2-Linux-x86_64.sh -bu -p /home/ecs-user/miniforge3
      # 設定Miniforge3的環境變數
      export PATH="/home/ecs-user/miniforge3/bin:$PATH"
    3. 初始化Conda並驗證其版本資訊。

      運行如下命令,完成Conda初始化並驗證其版本資訊。

      # 初始化 Conda
      conda init
      source ~/.bashrc
      
      # 驗證版本資訊
      conda --version
  2. 手動編譯Open WebUI。

    1. 下載TDX安全度量外掛程式。

      運行如下命令,下載TDX安全度量外掛程式並切換至v1.2分支。

      cd /home/ecs-user
      git clone https://github.com/intel/confidential-computing-zoo.git
      git config --global --add safe.directory /home/ecs-user/confidential-computing-zoo
      cd confidential-computing-zoo
      git checkout v1.2
    2. 拉取Open WebUI源碼。

      運行如下命令,拉取Open WebUI源碼並切換至v0.5.20分支。

      cd /home/ecs-user
      git clone https://github.com/open-webui/open-webui.git
      
      # 切換至tag:v0.5.20分支
      git config --global --add safe.directory /home/ecs-user/open-webui
      cd /home/ecs-user/open-webui
      git checkout v0.5.20
      
      # 合入CCZoo提供的patch,該patch增加了open-webui對TDX遠程認證相關的功能
      cd /home/ecs-user
      cp /home/ecs-user/confidential-computing-zoo/cczoo/confidential_ai/open-webui-patch/v0.5.20-feature-cc-tdx-v1.0.patch .
      git apply --ignore-whitespace --directory=open-webui/ v0.5.20-feature-cc-tdx-v1.0.patch
    3. 建立open-webui環境並啟用。

      運行如下命令,建立open-webui環境並啟用,用於運行編譯後的Open WebUI環境。

      conda create --name open-webui python=3.11
      conda activate open-webui
    4. 安裝 "擷取TDX Quote" 外掛程式。

      cd /home/ecs-user/confidential-computing-zoo/cczoo/confidential_ai/tdx_measurement_plugin/
      pip install Cython
      python setup.py install

      上述命令執行完成後,運行如下命令,驗證安裝是否正常。回顯資訊無報錯,表明安裝成功。

      python3 -c "import quote_generator"
    5. 編譯Open WebUI。

      # 安裝依賴
      cd /home/ecs-user/open-webui/
      # 配置npm源
      npm config set registry http://registry.npmmirror.com
      sudo npm install
      # 編譯
      sudo npm run build

      編譯完成後,運行如下命令,複製產生的build檔案夾至backend目錄並重新命名為frontend。

      rm -rf ./backend/open_webui/frontend
      cp -r build ./backend/open_webui/frontend
      說明

      此時,阿里雲遠程證明服務已成功配置在編譯好的Open WebUI中。您可以在/home/ecs-user/open-webui/external/acs-attest-client/index.js檔案中找到相關配置資訊。

    6. 配置Open WebUI後端服務開機檔案。

      運行如下命令,為Open WebUI後端服務配置開機檔案,並為其添加可執行許可權。

      tee /home/ecs-user/open-webui/backend/dev.sh << 'EOF'
      #設定服務地址連接埠,預設連接埠為 8080
      PORT="${PORT:-8080}"
      uvicorn open_webui.main:app --port $PORT --host 0.0.0.0 --forwarded-allow-ips '*' --reload
      EOF
      
      # 為開機檔案添加可執行許可權
      chmod +x /home/ecs-user/open-webui/backend/dev.sh
    7. 安裝Open WebUI運行所需的依賴庫。

      cd /home/ecs-user/open-webui/backend/
      pip install -r requirements.txt -U
      conda deactivate

步驟六:運行Open WebUI並驗證TDX認證資訊

  1. 運行大模型,並啟動Open WebUI服務。

    1. (條件可選)如果Ollama服務未運行,您可以通過運行如下命令,啟動Ollama服務。

      ollama serve
    2. 運行如下命令,使用Ollama運行DeepSeek-R1模型。

      ollama run deepseek-r1:70b
    3. 運行如下命令,啟用open-webui虛擬環境。

      conda activate open-webui
    4. 運行如下命令,啟動Open WebUI後端服務。

      cd /home/ecs-user/open-webui/backend && ./dev.sh

      回顯資訊樣本如下,表明Open WebUI後端服務啟動成功。

      ......
      INFO  [open_webui.env] Embedding model set: sentence-transformers/all-MiniLM-L6-v2
      /root/miniforge3/envs/open-webui/lib/python3.12/site-packages/pydub/utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
        warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
      WARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
      
       ██████╗ ██████╗ ███████╗███╗   ██╗    ██╗    ██╗███████╗██████╗ ██╗   ██╗██╗
      ██╔═══██╗██╔══██╗██╔════╝████╗  ██║    ██║    ██║██╔════╝██╔══██╗██║   ██║██║
      ██║   ██║██████╔╝█████╗  ██╔██╗ ██║    ██║ █╗ ██║█████╗  ██████╔╝██║   ██║██║
      ██║   ██║██╔═══╝ ██╔══╝  ██║╚██╗██║    ██║███╗██║██╔══╝  ██╔══██╗██║   ██║██║
      ╚██████╔╝██║     ███████╗██║ ╚████║    ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
       ��═════╝ ╚═╝     ╚══════╝╚═╝  ╚═══╝     ╚══╝╚══╝ ╚══════╝╚═════╝  ╚═════╝ ╚═╝
      
      
      v0.5.20 - building the best open-source AI user interface.
      
      https://github.com/open-webui/open-webui
  2. 通過瀏覽器訪問Open WebUI服務。

    1. 添加安全性群組訪問允許存取規則。

      在您的異構機密計算執行個體的安全性群組中,添加允許用戶端訪問8080連接埠的規則。具體操作,請參見添加安全性群組規則

    2. 通過瀏覽器訪問Open WebUI服務。

      開啟本地瀏覽器訪問如下地址:http://{ip_address}:{port},請根據具體情況替換對應的參數。

      • {ip_address}:Open WebUI所在執行個體的公網IP地址。

      • {port}:預設連接埠號碼為8080。

      如果遠程證明成功,對話方塊中的第一個表徵圖上會出現綠色標記,如下圖所示。否則標記顯示為紅色。

      image

      說明

      每次點擊New Chat按鈕後,後端服務會自動擷取TDX 機密計算環境的Quote data發送至遠程證明服務並返回認證結果。初始狀態下,此表徵圖顯示紅色。表示遠程證明未完成或失敗,遠程證明成功後顯示綠色。

  3. 驗證TDX認證資訊。

    您可以將滑鼠移至上方在對話方塊中的第一個表徵圖上,可以看到解析TDX Quote詳細的認證資訊。

    image

    您可以通過瀏覽器開發人員工具查看詳細資料,顯示結果樣本如下。

    image

常見問題

pip安裝軟體時軟體包下載速度慢

  • 問題現象:使用pip安裝軟體包時軟體包下載速度較慢,或者下載失敗。

  • 問題原因:訪問pip官方的軟體源網路不穩定。

  • 解決方案:您可以參考如下方案,使用阿里雲的鏡像加速來解決該問題。

    全域使用加速(推薦)

    將如下內容添加至您的~/.pip/pip.conf檔案。

    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/

    單次安裝使用加速

    執行pip install 命令時,可通過增加-i參數指定軟體源地址以加速安裝。下述樣本中,以安裝torch軟體包為例進行示範,請根據具體情況進行替換。

    pip install torch -i https://mirrors.aliyun.com/pypi/simple/

編譯Open WebUI時,遇到Cannot find package報錯

  • 問題現象:編譯Open WebUI時,遇到Cannot find package 報錯。

  • 問題原因:編譯環境缺少對應的軟體包。

  • 解決方案:您需要使用npm安裝預設的軟體包後重新進行編譯。下述樣本中,以安裝pyodide軟體包為例進行示範,請根據具體情況進行替換。

    npm install pyodide

相關文檔

Open WebUI 原生設計僅支援HTTP協議,為了增加對資料安全傳輸,您可以藉助阿里雲CLB部署HTTPS認證,具體操作,請參見使用CLB部署HTTPS業務(單向認證)