安全
Hermes Agent 采用纵深防御(Defense-in-Depth)安全模型,多层安全机制保护你的系统。
安全架构概览
DM 配对
8 位配对码,1 小时有效期,速率限制,5 次失败锁定
容器隔离
Docker 安全加固,只读根文件系统,资源限制,网络隔离
SSRF 防护
阻止私有网络访问,阻止云元数据端点,域名白名单
Tirith 扫描
工具执行前的预安全扫描
环境变量控制
技能作用域隔离,配置驱动传递,MCP 凭证过滤
网站黑名单
可配置的网站访问黑名单
DM 配对
DM 配对机制防止未授权用户通过消息平台与代理交互:
yaml
security:
dm_pairing:
enabled: true
code_length: 8 # 配对码长度
ttl: 3600 # 有效期(秒)= 1 小时
rate_limit: 5 # 每分钟尝试次数限制
max_failures: 5 # 最大失败次数后锁定
配对流程
- 用户在消息平台发送私聊消息给 Bot
- Bot 返回一个 8 位配对码和说明
- 用户在 CLI 或管理界面输入配对码完成配对
- 配对成功后,用户可以正常与代理交互
- 配对码在 1 小时后过期
容器隔离
使用 Docker 后端执行终端命令时,应用以下安全加固:
yaml
terminal:
backend: docker
docker:
image: ubuntu:22.04
auto_remove: true
security:
# 只读根文件系统
read_only_root: true
# 禁止权限提升
no_new_privileges: true
# 资源限制
resource_limits:
memory: "512m"
cpu: "1.0"
pids: 100
# 网络隔离
network_mode: none
# 命令白名单
allowed_commands:
- python3
- node
- npm
- git
- pip
# 安全选项
security_opt:
- no-new-privileges:true
- seccomp:default
SSRF 防护
防止服务端请求伪造(SSRF)攻击:
yaml
security:
ssrf_protection:
# 阻止私有网络地址
block_private_networks: true
# 阻止云元数据端点(169.254.169.254)
block_cloud_metadata: true
# 允许的域名白名单(空 = 允许所有非阻止域名)
allowed_domains: []
# 阻止的额外 IP 范围
blocked_ip_ranges: []
Tirith 预执行扫描
Tirith 是 Hermes 的安全扫描引擎,在工具执行前进行安全检查:
- 分析工具调用的参数和目标
- 检测潜在的危险操作
- 根据安全策略决定是否允许执行
- 记录安全事件日志
环境变量安全
技能作用域隔离
每个技能只能访问其被授权的环境变量:
yaml
# 技能级别的环境变量控制
skills:
my-skill:
env:
allowed:
- PUBLIC_API_URL
- MY_SKILL_TOKEN
blocked:
- ADMIN_PASSWORD
- DATABASE_URL
MCP 凭证处理
- 传递给 MCP 服务器的环境变量经过过滤
- 敏感凭证不会被传递到不信任的服务器
- 日志中的凭证自动脱敏(redaction)
上下文文件注入防护
防止通过上下文文件注入恶意内容:
- 上下文文件大小限制
- 文件路径验证
- 内容格式检查
智能审批
三级审批模式控制工具执行的自动授权:
| 模式 | 说明 |
|---|---|
manual | 所有工具调用都需要手动确认 |
smart | 低风险操作自动批准,高风险操作需要确认 |
off | 所有工具调用自动批准(仅限可信环境) |
yaml
security:
approvals:
mode: smart
auto_approve_tools:
- search
- session_search
- memory
- skills
- todo
网站黑名单
yaml
security:
website_blocklist:
enabled: true
domains:
- malwaresite.example.com
- phishing.example.com
生产环境安全检查清单
在生产环境部署 Hermes Agent 前,请确认以下安全措施已到位:
| 项目 | 建议 |
|---|---|
| DM 配对 | 启用,设置合理的 TTL 和失败限制 |
| 终端后端 | 使用 Docker 容器隔离 |
| Docker 安全 | 启用 read_only_root、资源限制、命令白名单 |
| SSRF 防护 | 启用私有网络和云元数据阻止 |
| 审批模式 | 使用 smart 或 manual 模式 |
| API 密钥 | 存储在 .env 文件中,不提交到版本控制 |
| 环境变量 | 配置技能作用域隔离 |
| 网络访问 | Docker 容器使用 network_mode: none |
| 日志 | 启用安全事件日志记录 |
| Tirith | 启用预执行安全扫描 |
| 更新 | 定期更新 Hermes 和依赖 |
| 权限 | 以最低必要权限运行 |