OpenClaw 企业定制 私人订制工作流 优化运维 openclaw记忆优化 问题咨询解决 请加微信交流
微信: aixbwz
AI Agent有终端访问权限,安全配置不对就可能被滥用。Hermes Agent的安全系统设计得很细致,从命令审批到用户白名单到容器隔离,层层防护。这篇讲清楚安全机制有哪些、怎么配置、以及实际使用中的最佳实践。
安全架构概览
Hermes Agent的安全模型基于几个核心原则:
- 最小权限:Agent只能访问明确授权的工具和数据
- 命令审批:危险命令需要人工审批才能执行
- 白名单控制:只有授权用户才能访问
- 容器隔离:代码执行在沙箱中运行,不影响主机
命令审批系统
当Agent要执行危险命令时,会暂停并请求审批:
⚠️ 待审批命令:
Command: rm -rf /home/user/data
Reason: 删除目录操作
输入 /approve 执行
输入 /deny 拒绝
审批命令
/approve # 批准执行
/deny # 拒绝执行
只有审批后才能继续。可以配置自动审批白名单,避免每次都问。
危险命令自动拒绝
可以配置哪些命令类别需要审批:
security:
approval_required:
- "rm -rf"
- "chmod 777"
- "sudo"
- "curl | sh"
- "wget | sh"
auto_deny:
- "drop database"
- "rm -rf /"
- "mkfs"
用户白名单
默认拒绝所有未授权用户。这是设计上的安全默认值。
Telegram白名单
telegram:
bot_token: "${TELEGRAM_BOT_TOKEN}"
allowed_users:
- 123456789
- 987654321
或者用环境变量:
TELEGRAM_ALLOWED_USERS=123456789,987654321
Discord白名单
discord:
bot_token: "${DISCORD_BOT_TOKEN}"
allowed_users:
- 123456789012345678
DISCORD_ALLOWED_USERS=123456789012345678
全局白名单
GATEWAY_ALLOWED_USERS=123456789,987654321
允许所有用户(不推荐)
GATEWAY_ALLOW_ALL_USERS=true
不推荐!因为Agent有终端访问权限。
DM配对系统
如果没有配置白名单,用户DM机器人时会收到配对码:
配对码: XKGH5N7P管理员审批后才能访问:
hermes pairing approve telegram XKGH5N7P hermes pairing list # 查看待批+已批 hermes pairing revoke telegram 123456789 # 移除访问配对码1小时后过期,有频率限制。
容器隔离
代码执行在沙箱容器中运行,不会影响主机系统。
支持的容器技术
- Docker(推荐)
- Singularity( HPC环境)
- Daytona(serverless)
Docker隔离
container:
backend: "docker"
image: "python:3.11-slim"
network: false # 默认禁用网络
volumes:
- "/host/data:/data:ro" # 只读挂载
资源限制
container:
limits:
cpu: "1"
memory: "512M"
disk: "1G"
no_network: true
API密钥安全
环境变量中的敏感信息会被过滤:
# 以下变量会被自动过滤
OPENAI_API_KEY
ANTHROPIC_API_KEY
GITHUB_TOKEN
AWS_SECRET_ACCESS_KEY
STRIPE_SECRET_KEY
# ... 任何包含 KEY, TOKEN, SECRET, PASSWORD, CREDENTIAL 的变量
Skill环境变量透传
Skill声明的环境变量会自动透传到沙箱:
# 在SKILL.md里声明
required_environment_variables:
- name: GITHUB_PERSONAL_ACCESS_TOKEN
prompt: GitHub Personal Access Token
required_for: full functionality
手动透传白名单
terminal:
env_passthrough:
- MY_SPECIAL_API_KEY
- CUSTOM_TOKEN
敏感命令过滤
自动检测和过滤危险命令模式:
curl | sh— 远程代码执行wget | sh— 远程代码执行rm -rf /— 根目录删除:(){:|:&};:— Fork炸弹- 明文发送密码到网络
文件访问控制
可以限制Agent访问特定目录:
filesystem:
allowed_paths:
- "/home/user/projects"
- "/home/user/data"
read_only: false
只读模式
filesystem:
read_only: true
allowed_paths:
- "/home/user/projects"
审计日志
记录所有命令执行和操作:
audit:
enabled: true
log_file: "~/.hermes/audit.log"
log_level: "info"
日志内容包括:
- 执行时间
- 操作用户
- 执行的命令
- 审批状态
- 执行结果
实际安全配置示例
# ~/.hermes/config.yaml 完整安全配置
security:
approval_required:
- "sudo"
- "rm -rf"
- "chmod 777"
- "curl | sh"
auto_deny:
- "rm -rf /"
- "mkfs"
container:
backend: "docker"
image: "python:3.11-slim"
network: false
limits:
cpu: "1"
memory: "512M"
telegram:
bot_token: "${TELEGRAM_BOT_TOKEN}"
allowed_users:
- 123456789
terminal:
env_passthrough:
- OPENAI_API_KEY
最佳实践
- 始终配置白名单:不要允许所有用户访问
- 启用命令审批:危险命令必须人工审批
- 使用容器隔离:代码执行在沙箱中运行
- 最小权限:只授予必要的权限
- 定期审计日志:检查异常操作
- 不要在环境变量中存明文密钥:用.env文件或密钥管理服务
常见问题
Agent执行了危险命令怎么办?
立即检查审计日志,确认操作来源。如果是被盗用,更改API密钥并加强白名单控制。
如何给临时用户开放访问?
使用DM配对系统,让用户发起配对请求,你审批后临时开放。
容器隔离会影响性能吗?
会有一定开销,但对于大多数任务影响很小。如果需要高性能,可以配置无隔离模式(不推荐)。
如何知道Agent执行了哪些命令?
查看审计日志,记录了所有命令执行历史。
总结
Hermes Agent的安全机制设计得很完善,层层防护。
核心安全措施:
- 命令审批系统,危险操作需人工批准
- 用户白名单,只允许授权用户访问
- 容器隔离,代码执行不污染主机
- API密钥自动过滤,防止泄露
- 敏感命令检测和阻止
- 审计日志,记录所有操作
正确配置安全机制,AI Agent才能真正成为得力助手而不是安全隐患。
相关文章
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容