OpenClaw vs HermesAgent 对比分析(二):安全架构专题 — AI Agent 的安全边界在哪里
**核心观点**:安全不是"做不做",而是"做到什么程度"- **OpenClaw策略**:零信任,强制隔离,有专用SSRF防护组件,80+安全文件- **HermesAgent策略**:务实信任,危险命令检测分类,Docker沙箱- **密钥管理**:OpenClaw用SecretRef机制,HermesAgent用.env文件- **插件隔离**:OpenClaw有按需插件隔离,HermesA
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的务实策略:
- ✅危险命令检测分类
- ✅Docker沙箱隔离
- ✅.env密钥管理
- ✅分级审批(安全需确认/危险)
中期(渐进增强)
逐步引入OpenClaw的工程化策略:
- 🔒集中安全组件(参考OpenClaw的src/security/)
- 🔒 SSRF防护
- 🔒 密钥Vault存储
- 🔒 操作实施审批
长期(企业级)
- 📋 插件权限声明和隔离
- 📋 内容安全策略文档
- 📋 安全合规(SOC2、GDPR)
- 📋 渗透测试常态化
八、小结
安全不是"做不做"的问题,而是"做到什么程度"的问题
- OpenClaw 走的是安全工程化的道路——集中组件、零信任、插件隔离、密钥管理
- HermesAgent 走的是安全务实的道路——危险检测、分类审批、Docker隔离
对于Avagent来说,应该初期采用HermesAgent的务实策略快速上线,中期逐步引入OpenClaw的工程化安全理念
安全是一场持久战的马拉松,不是一蹴而就的工程
系列导航
*本文基于OpenClaw (2026.4.16) 与HermesAgent (v0.10.0) 源码分析
更多推荐




所有评论(0)