安全模型
OpenClaw 的安全模型确保在多通道、多会话环境中,AI 的操作权限得到合理控制——特别是在群组和公开通道中。
源码位置
src/security/
├── audit.ts # 安全审计日志 (核心模块)
├── audit-extra.ts # 扩展审计上下文
├── audit-fs.ts # 文件系统审计
├── fix.ts # 安全修复
├── skill-scanner.ts # 技能安全扫描
├── windows-acl.ts # Windows ACL 管理
├── external-content.ts # 外部内容验证
└── channel-metadata.ts # 通道安全上下文安全层次
执行环境
| 会话类型 | 执行环境 | 信任级别 |
|---|---|---|
| main (1:1 私聊) | 宿主机直接执行 | 完全信任 |
| group (无沙箱) | 宿主机 + 工具策略 | 受限信任 |
| group (沙箱) | Docker 容器 | 最小信任 |
Docker 沙箱
非 main 会话(群组/通道)可以启用 Docker 沙箱模式。在沙箱中:
- 工具在隔离容器中执行
- 无法访问宿主机文件系统
- 网络访问受限
- 资源使用有上限
通道白名单
Source: src/channels/channel-config.ts
每个通道可以配置 allowFrom,限制谁可以发送消息:
typescript
// AllowFrom configuration
interface AllowFromConfig {
// List of allowed sender IDs
// Supports wildcards and patterns
// Per-channel and per-group configuration
}节点命令策略
Source: src/gateway/node-command-policy.ts
远程节点(iOS/Android 设备)的命令执行有专门的策略控制:
typescript
// Node command policy (simplified)
// Controls what commands remote nodes can execute
// Validates command against allowed patterns
// Prevents unauthorized host access from remote devices安全审计
Source: src/security/audit.ts
审计模块记录所有安全相关事件:
| 审计事件 | 说明 |
|---|---|
| 认证尝试 | 成功/失败的认证 |
| 工具执行 | 工具名称、参数、结果 |
| 文件访问 | 读写操作记录 |
| 配置变更 | 配置修改记录 |
| 权限变更 | 白名单、角色变更 |
技能安全扫描
Source: src/security/skill-scanner.ts
安装技能前会进行安全扫描:
typescript
// Skill scanner
// - Check for suspicious patterns
// - Validate manifest integrity
// - Scan for known vulnerabilities小结
- 三层安全模型:认证 → 访问控制 → 执行隔离
- Docker 沙箱 为非 main 会话提供隔离执行环境
- 通道白名单 (allowFrom) 控制消息来源
- 节点命令策略 限制远程设备的执行权限
- 安全审计 记录所有安全关键事件
- 技能扫描 在安装前检查安全性
下一章:日志系统