【Hermes Agent 从入门到精通】第 33 篇:安全配置与最佳实践
本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 Hermes Agent。
本篇你将学到
- 危险命令审批机制详解
- 密钥脱敏配置
- PII 保护
- 容器隔离部署
- 生产环境安全检查清单
学完本篇,你的 Hermes 部署将达到生产级安全标准。
一、危险命令审批
1.1 三种审批模式
hermes configsetapprovals.mode manual# 手动(默认)hermes configsetapprovals.mode smart# 智能(推荐)hermes configsetapprovals.mode off# 关闭(不推荐)| 模式 | 低风险命令(ls/cat) | 高风险命令(rm/git push) | 说明 |
|---|---|---|---|
manual | 询问 | 询问 | 每次都问,最安全 |
smart | 自动放行 | 询问 | 辅助 LLM 判断风险 |
off | 自动放行 | 自动放行 | 完全信任 |
1.2 Smart 模式详解
Smart 模式用一个辅助 LLM 在执行命令前评估风险:
命令:ls -la /home/user/project → 辅助 LLM 判断:只读操作,低风险 → 自动放行 命令:rm -rf /home/user/project/node_modules → 辅助 LLM 判断:删除操作,中风险 → 询问用户 命令:git push --force origin main → 辅助 LLM 判断:强制覆盖远程,高风险 → 询问用户1.3 安全扫描(Tirith)
# 启用安全扫描(默认开启)hermes configsetsecurity.tirith_enabledtrueTirith 安全扫描器检查:
- 命令注入风险
- 路径遍历
- 不安全的网络请求
- 敏感信息泄露
下面用流程图总结命令审批的决策逻辑:
二、密钥保护
2.1 密钥脱敏
hermes configsetsecurity.redact_secretstrue效果:
原始输出: OPENAI_API_KEY=sk-proj-abc123def456ghi789 DATABASE_URL=postgresql://user:password@host:5432/db 脱敏后: OPENAI_API_KEY=sk-***REDACTED*** DATABASE_URL=postgresql://user:***@host:5432/db重要:
redact_secrets在进程启动时读取,修改后需要重启 Hermes。这防止 Agent 在会话中自己关闭脱敏。
2.2 PII 脱敏
hermes configsetprivacy.redact_piitrue效果:
原始消息:我的手机号是 13800138000,邮箱是 zhangsan@test.com 脱敏后:我的手机号是 [REDACTED_PHONE],邮箱是 [REDACTED_EMAIL]PII 脱敏只影响到达模型的内容——你在终端看到的是原文。
2.3 .env 安全
# 确保 .env 不被 Git 跟踪echo".env">>.gitignore# 检查权限chmod600~/.hermes/.env# 只有所有者可读写三、网站黑名单
3.1 禁止访问特定网站
security:website_blocklist:-"facebook.com"# 禁止访问-"twitter.com"-"*.gambling-*"# 通配符匹配3.2 效果
当 Hermes 尝试用 web 工具访问黑名单中的网站时,请求被阻止。
四、容器隔离
4.1 Docker 隔离部署
# docker-compose.ymlservices:hermes:image:nousresearch/hermes-agent:latestvolumes:-./workspace:/workspace# 只暴露工作目录cap_drop:-ALL# 丢弃所有 Linux 能力security_opt:-no-new-privileges:true# 禁止提权read_only:falsenetwork_mode:bridge# 限制网络4.2 隔离效果
| 措施 | 效果 |
|---|---|
cap_drop: ALL | 不能执行特权操作(如 mount、iptables) |
no-new-privileges | 不能通过 setuid 提权 |
| 只挂载 workspace | 宿主机其他目录不可访问 |
| 限制网络 | 可以通过防火墙规则限制出站目标 |
五、终端后端安全
5.1 三种终端后端
terminal:backend:local# 本地(默认)# backend: docker # Docker 隔离# backend: ssh # 远程 SSH| 后端 | 安全级别 | 说明 |
|---|---|---|
local | 低 | 直接在宿主机执行命令 |
docker | 中 | 在 Docker 容器内执行 |
ssh | 高 | 在远程服务器上执行 |
5.2 Docker 终端后端
terminal:backend:dockerdocker:image:ubuntu:22.04# 执行环境镜像workdir:/workspacevolumes:-~/workspace:/workspace# 只挂载工作目录Docker 终端后端让所有命令在隔离容器中执行——即使执行了危险命令,也不影响宿主机。
六、生产环境安全清单
上线前逐项检查:
## Hermes 生产安全清单 ### 访问控制 - [ ] 网关只响应授权用户 - [ ] 管理员列表已配置 - [ ] DM Pairing 已启用 - [ ] 普通用户的工具权限受限 ### 命令审批 - [ ] approvals.mode 设为 manual 或 smart - [ ] Tirith 安全扫描已启用 - [ ] --yolo 未被持久化设置 ### 密钥保护 - [ ] redact_secrets 已启用 - [ ] .env 权限 600 - [ ] .env 在 .gitignore 中 - [ ] API Key 未暴露在日志中 ### 隔离 - [ ] 终端后端为 docker 或 ssh - [ ] 工作目录限制在 workspace - [ ] 容器 cap_drop: ALL ### 网络 - [ ] PII 脱敏已启用(如需要) - [ ] 网站黑名单已配置 - [ ] 网关端口不直接暴露公网(用 Nginx 反代) ### 审计 - [ ] 日志保留策略已配置 - [ ] Token 用量监控已设置 - [ ] 异常告警已配置本篇小结
| 知识点 | 核心内容 |
|---|---|
approvals.mode | manual / smart / off |
| Smart 模式 | 辅助 LLM 自动判断风险 |
| Tirith | 安全扫描器 |
redact_secrets | 工具输出密钥脱敏 |
redact_pii | 个人信息脱敏 |
| 网站黑名单 | security.website_blocklist |
| Docker 隔离 | cap_drop + 只挂载 workspace |
| 终端后端 | local / docker / ssh |
| 生产清单 | 访问控制 + 审批 + 密钥 + 隔离 + 网络 + 审计 |
下篇预告
第 34 篇:性能调优与磁盘管理
Hermes 运行久了变慢?磁盘占用越来越大?下一篇学习性能优化和维护清理。
如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。