OpenClaw vs HermesAgent 对比分析(二):安全架构专题 — AI Agent 的安全边界在哪里

系列导读:AI Agent 、安全架构从曾经的"nice to have"变成"must have"。本文对比分析两个项目的安全策略实现和架构设计

上一章记忆系统专题对比 | 下一章多通道能力专题对比


一、AI Agent 安全为什么重要

安全架构类型是显而易见的——用户越权操作 →Agent失控

用户:帮我执行命令
    ↓
    ↓
Agent决策:
├─ 读取敏感文件
├─ 判断是否合法
├─ 执行或拒绝        ← 这里需要安全控制
└─ 清理痕迹          ← 这里需要审计

Agent自主决策意味着用户可能下达不完全安全的指令。我们需要更强大的安全控制


二、安全架构对比总览

维度 OpenClaw HermesAgent
安全策略框架 零信任,强制隔离 务实信任,分层防护
SSRF防护 ✅专业组件 ❌无专业防护
执行环境 ✅Docker沙箱 ✅多种后端
执行审批 ✅分层策略 ✅等级分类
密钥管理 ✅secrets组件 ✅.env文件
内容安全 ✅内容策略文档 ✅内联检测
插件隔离 ✅按需隔离 ❌进程内嵌入
网络控制 ✅SSRF策略 部分(Docker网络限制)
安全代码量 ~80+ 文件 分散在各组件

三、OpenClaw 的安全架构

OpenClaw 将安全作为核心优先,投入了大量工程资源

3.1 专用安全组件

src/security/     (80 文件)
├── ssrf/         SSRF防护策略
├── policies/     安全策略引擎
├── approval/     执行审批模块
├── sandbox/      沙箱管理
└── content/      内容安全

3.2 SSRF防护

SSRF(Server-Side Request Forgery)是Agent最常见的安全风险之一——Agent可能请求访问内网敏感服务、云元数据等

受保护范围:
- DNS Rebinding攻击
- IPv6地址映射
- 短生命周期指向
- 云元数据服务

3.3 分层安全策略

OpenClaw的通道和插件有独立的安全策略

interface SecurityPolicy {
  // 终端命令
  terminal: {
    allowedCommands: string[];
    blockedCommands: string[];
    requireConfirmation: boolean;
    sandboxMode: "docker" | "none";
  };
  
  // 网络请求
  network: {
    allowedDomains: string[];
    blockedDomains: string[];
    ssrfProtection: boolean;
  };
  
  // 文件操作
  filesystem: {
    allowedPaths: string[];
    blockedPaths: string[];
    maxFileSize: number;
  }
}

3.4 密钥管理

src/secrets/(08文件)提供了独立的密钥管理

// SecretRef语法
config = {
  apiKey: "${secret:openai/api-key}",  // 引用密钥库中的密钥
  dbPassword: "${secret:postgres/password}",
};

密钥存储在独立的vault中,配置文件中只保存引用,避免了密钥泄漏

3.5 插件隔离

OpenClaw的插件不直接访问核心内部代码

插件 →plugin-sdk 接口层 →核心内部

核心代码不能deep-import插件内部代码,新型插件无法访问核心内部实现

3.6 内容安全

OpenClaw有专门的AGENT-CONTENT-POLICY.md,定义了内容安全策略


四、HermesAgent 的安全架构

HermesAgent的安全策略更务实和灵活,没有集中的安全组件

4.1 危险命令检测

# tools/approval.py
DANGEROUS_PATTERNS = [
    r"rm\s+-rf",              # 递归删除
    r"format",                # 格式化
    r"DROP\s+TABLE",          # 删除数据库表
    r"sudo\s+",               # 提权
    r">\s*/dev/",             # 写入设备
    r"curl.*\|\s*bash",       # 远程命令执行
    r"wget.*\|\s*sh",         # 远程命令执行
    r"mkfs",                  # 文件系统格式化
    r"dd\s+if=",              # 磁盘操作
    r":\s*(){ :|:&\s*};:",   # Fork炸弹
]

4.2 三级安全分类

class SafetyLevel(Enum):
    SAFE = "safe"                    # 直接执行
    NEEDS_CONFIRM = "needs_confirm"  # 需要用户确认
    DANGEROUS = "dangerous"          # 需要拒绝+报告

4.3 Docker沙箱隔离

# tools/environments/docker.py
container = docker_client.containers.run(
    image=config.image,
    command=command,
    mem_limit=config.memory_limit,      # 内存限制
    network_disabled=not config.network, # 网络控制
    read_only=config.read_only,          # 文件系统只读
    user="nobody",                       # 非特权用户
)

4.4 密钥管理

# hermes_cli/config.py
# 使用 .env 文件 + python-dotenv 加载
from dotenv import load_dotenv
load_dotenv("~/.hermes/.env")

# 环境变量 API Key
api_key = os.environ.get("ANTHROPIC_API_KEY")

简单直接,不如OpenClaw的SecretRef机制安全

4.5 进程管理

# tools/process_registry.py
class ProcessRegistry:
    def register_process(self, proc: subprocess.Popen, metadata: dict):
        """记录进程,维护生命周期"""
        ...
    
    def kill_all(self):
        """清理所有进程"""
        for proc in self._processes.values():
            proc.terminate()

五、深度对比分析

5.1 SSRF防护

维度 OpenClaw HermesAgent
专用组件 ✅src/security/ssrf/ ❌无
防护范围 DNS Rebinding、IPv6、重定向、云元数据
网络隔离 策略引擎 + Docker网络 Docker网络限制

OpenClaw在SSRF防护方面遥遥领先。这是有道理的——OpenClaw作为多通道Agent,需要处理各种不同的URL,SSRF风险更高

5.2 执行安全控制

维度 OpenClaw HermesAgent
危险命令检测 策略引擎 + 分类 分类
审批机制 按通道/插件配置 全局统一
沙箱 Docker沙箱 6种后端
实施程度 完整 部分

两者都有危险命令检测和沙箱,但OpenClaw的配置更细致

5.3 插件安全

维度 OpenClaw HermesAgent
隔离机制 按需的插件隔离 无隔离(进程内嵌入)
代码安全 Manifest声明
权限控制 插件需声明权限 无权限控制
版本控制 minVersion要求

OpenClaw的插件隔离是一项重要的安全投资。这意味着插件不能直接访问核心内部代码,新型插件无法利用核心内部实现

5.4 密钥安全

维度 OpenClaw HermesAgent
存储方式 密钥vault + SecretRef .env明文文件
引用方式 配置文件中${secret:…} 环境变量转换
保留支持 ✅有 ❌无
审计追踪 ✅有 ❌无

六、安全策略的选择

OpenClaw:“Zero Trust”(零信任)

所有操作默认不信任
    ↓
    ↓
每个操作都需要通过安全策略引擎
    ↓
    ↓
不同通道/插件有不同策略
    ↓
    ↓
所有操作有实施审批

适用:多用例、多通道、面向企业的场景

HermesAgent:“Pragmatic Trust”(务实信任)

默认信任操作
    ↓
    ↓
危险操作分类处理
    ↓
    ↓
处理后的操作分层处理
    ↓
    ↓
危险操作需要用户确认

适用:个人用例、小团队、快速迭代的场景


七、对Avagent的安全策略建议

初期(MVP)

采用HermesAgent的务实策略:

  1. ✅危险命令检测分类
  2. ✅Docker沙箱隔离
  3. ✅.env密钥管理
  4. ✅分级审批(安全需确认/危险)

中期(渐进增强)

逐步引入OpenClaw的工程化策略:

  1. 🔒集中安全组件(参考OpenClaw的src/security/)
  2. 🔒 SSRF防护
  3. 🔒 密钥Vault存储
  4. 🔒 操作实施审批

长期(企业级)

  1. 📋 插件权限声明和隔离
  2. 📋 内容安全策略文档
  3. 📋 安全合规(SOC2、GDPR)
  4. 📋 渗透测试常态化

八、小结

安全不是"做不做"的问题,而是"做到什么程度"的问题

  • OpenClaw 走的是安全工程化的道路——集中组件、零信任、插件隔离、密钥管理
  • HermesAgent 走的是安全务实的道路——危险检测、分类审批、Docker隔离

对于Avagent来说,应该初期采用HermesAgent的务实策略快速上线,中期逐步引入OpenClaw的工程化安全理念

安全是一场持久战的马拉松,不是一蹴而就的工程


系列导航


*本文基于OpenClaw (2026.4.16) 与HermesAgent (v0.10.0) 源码分析

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐