隨著大語言模型技術的普及,越來越多的企業開始嘗試利用該技術來提升業務能力。因此,如何安全的管理模型及使用者資料變得尤為重要,本文介紹基於異構機密計算執行個體構建支援安全度量大語言模型推理環境的最佳實務。
背景資訊
阿里雲異構機密計算執行個體(gn8v-tee)在CPU TDX機密計算執行個體的基礎上,進一步將GPU引入到可信執行環境(TEE)中,以保護CPU和GPU之間的資料轉送以及GPU內部的資料計算。本文介紹基於異構機密計算執行個體,將英特爾TDX的安全測量和遠程認證功能整合到大規模語言模型(LLM)推理服務中的方案,從而為LLM服務構建強大的安全身分識別驗證和隱私保護工作流程。該方案確保對模型及使用者資料進行安全管理,進而在整個服務生命週期內維護其完整性,防止未經授權的訪問。
上述方案遵循如下兩個設計原則:
機密性:確保模型和使用者資料僅在機密計算執行個體的機密安全邊界內處理,並防止將明文暴露到外部環境中。
完整性:保證LLM推理服務環境中的所有組件(推理服務架構、模型檔案、互動式介面等)的代碼、資料和配置具有防篡改特性,同時支援嚴格的第三方審計驗證流程。
技術架構
上述方案在阿里雲上的整體技術架構如下所示。
關於上述架構中涉及的相關組件的說明如下。
用戶端
終端使用者訪問大語言模型服務的互動介面(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)等。
工作流程
該方案的具體工作流程及說明如下。

服務啟動及度量流程
運行環境度量:平台TCB模組針對運行模型服務的運行環境進行完整性度量,度量結果儲存在位於TCB中的TDX Module中。
推理會話初始化階段
建立會話:用戶端(瀏覽器)向Open WebUI發起新的會話請求。
遠程證明階段
證明請求:用戶端發起會話請求時,會向服務後端同時請求一個證明模型運行環境的可信性證明(TDX Quote),該證明可以用來驗證遠程服務環境的可信性,包含使用者會話管理服務 Open WebUI和模型服務(Ollama + DeepSeek)的可信性。
證明產生:Open WebUI服務後端將使用者會話建立過程中的證明請求轉寄至基於Intel TDX的機密虛擬機器(Confidential VM)中,機密虛擬機器會在其中基於CPU硬體產生包含完整憑證鏈結的TDX遠程證明報告(TDX Quote)。
證明驗證:用戶端將接收到的證明(Quote)提交至遠程證明服務(Attestation Service)進行驗證。證明服務通過驗證該次證明的有效性(包括數位簽章、憑證鏈結及安全性原則),返回證明結果,確認遠端模型服務環境的安全性狀態與完整性。
機密大模型推理服務階段
遠程證明成功:用戶端可以充分信任遠端模型服務,因為其運行在高度安全且可信的模式下。這種保證意味著,對於終端使用者而言,資料泄露的風險極低(儘管任何系統都存在一定程度的風險)。
遠程證明失敗:證明服務將返回錯誤資訊,表明遠程證明失敗。在這種情況下,使用者或者系統可以選擇中止後續的服務要求,或者在收到存在安全風險的提示後繼續提供服務。然而,此時遠端模型服務可能會面臨資料安全風險。
操作步驟
步驟一:建立異構機密計算執行個體
使用Ollama下載的模型資料將被儲存至/usr/share/ollama/.ollama/models目錄。由於模型檔案通常較大(以DeepSeek-R1 70b量化模型為例,模型檔案大小約為40 GB),建議您在建立執行個體時綜合考慮所需啟動並執行模型大小,以選擇合適的雲端硬碟容量。建議雲端硬碟容量為模型檔案大小的2至3倍。
通過控制台建立
在控制台建立具備異構機密計算特性的執行個體步驟與建立普通執行個體類似,但需要注意一些特定選項。本步驟重點介紹異構機密計算執行個體相關的特定配置,如果您想瞭解其他通用配置,請參見自訂購買執行個體。
訪問ECS控制台-執行個體。
在頁面左側頂部,選擇目標資源所在的資源群組和地區。
單擊建立執行個體,按照以下配置建立對應執行個體。
配置項
說明
地區與可用性區域
華北2(北京)可用性區域L
執行個體規格
僅支援ecs.gn8v-tee.4xlarge及以上執行個體規格。
鏡像
選擇Alibaba Cloud Linux 3.2104 LTS 64位鏡像。
公網IP
分配公網IPv4地址。保證後續可以從NVIDIA官網下載驅動程式。
重要建立8 GPU卡機密執行個體時,請勿添加額外的輔助彈性網卡,此操作可能導致執行個體啟動失敗。
根據介面提示,完成建立執行個體。
通過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。
匯入阿里雲機密計算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
安裝編譯工具及相關範例程式碼。
sudo yum groupinstall -y "Development Tools" sudo yum install -y sgxsdk libtdx-attest-devel配置阿里雲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
運行如下命令,安裝Ollama。
curl -fsSL https://ollama.com/install.sh | sh說明上述指令碼為Ollama官方提供的安裝指令碼,如果在安裝過程中因網路問題導致安裝失敗,您可以參考Ollama官網,選擇其他安裝方式以完成Ollama的安裝,具體操作,請參見ollama安裝指南。
步驟四:通過Ollama下載並運行DeepSeek-R1
因模型檔案較大,因此下載耗時較長,建議您使用tmux工具來保持會話,防止下載操作異常中斷。
安裝tmux工具。
運行如下命令,安裝tmux工具。
sudo yum install -y tmux通過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)(條件可選)重新串連tmux會話。
如果您需要在網路連接斷開後重新恢複tmux會話,請運行如下命令。
tmux attach -t run-deepseek
步驟五:編譯Open WebUI
如需Open WebUI支援基於TDX的安全度量服務,您需要下載TDX安全度量外掛程式,並基於Open WebUI源碼手動編譯Open WebUI,以使其支援基於TDX的安全度量服務。具體操作步驟如下。
下述樣本中,以工作目錄為/home/ecs-user為例進行示範,實際使用中,請根據您的具體情況進行替換。
安裝所需的依賴軟體及環境
安裝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安裝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"初始化Conda並驗證其版本資訊。
運行如下命令,完成Conda初始化並驗證其版本資訊。
# 初始化 Conda conda init source ~/.bashrc # 驗證版本資訊 conda --version
手動編譯Open WebUI。
下載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拉取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建立open-webui環境並啟用。
運行如下命令,建立open-webui環境並啟用,用於運行編譯後的Open WebUI環境。
conda create --name open-webui python=3.11 conda activate open-webui安裝 "擷取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"編譯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檔案中找到相關配置資訊。配置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安裝Open WebUI運行所需的依賴庫。
cd /home/ecs-user/open-webui/backend/ pip install -r requirements.txt -U conda deactivate
步驟六:運行Open WebUI並驗證TDX認證資訊
運行大模型,並啟動Open WebUI服務。
(條件可選)如果Ollama服務未運行,您可以通過運行如下命令,啟動Ollama服務。
ollama serve運行如下命令,使用Ollama運行DeepSeek-R1模型。
ollama run deepseek-r1:70b運行如下命令,啟用open-webui虛擬環境。
conda activate open-webui運行如下命令,啟動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
通過瀏覽器訪問Open WebUI服務。
添加安全性群組訪問允許存取規則。
在您的異構機密計算執行個體的安全性群組中,添加允許用戶端訪問8080連接埠的規則。具體操作,請參見添加安全性群組規則。
通過瀏覽器訪問Open WebUI服務。
開啟本地瀏覽器訪問如下地址:http://{ip_address}:{port},請根據具體情況替換對應的參數。
{ip_address}:Open WebUI所在執行個體的公網IP地址。
{port}:預設連接埠號碼為8080。
如果遠程證明成功,對話方塊中的第一個表徵圖上會出現綠色標記,如下圖所示。否則標記顯示為紅色。
說明每次點擊New Chat按鈕後,後端服務會自動擷取TDX 機密計算環境的Quote data發送至遠程證明服務並返回認證結果。初始狀態下,此表徵圖顯示紅色。表示遠程證明未完成或失敗,遠程證明成功後顯示綠色。
驗證TDX認證資訊。
您可以將滑鼠移至上方在對話方塊中的第一個表徵圖上,可以看到解析TDX Quote詳細的認證資訊。

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

常見問題
pip安裝軟體時軟體包下載速度慢
編譯Open WebUI時,遇到Cannot find package報錯
相關文檔
Open WebUI 原生設計僅支援HTTP協議,為了增加對資料安全傳輸,您可以藉助阿里雲CLB部署HTTPS認證,具體操作,請參見使用CLB部署HTTPS業務(單向認證)。