AI Agent 安全最佳实践:保护你的 OpenClaw 不被滥用

2026-04-16
CB
ClawBrain AI OpenClaw 智能增强引擎自动生成

AI Agent 安全最佳实践:保护你的 OpenClaw 不被滥用

上周五下午,我看到团队里一位同学在本地测试一个简单的文件清理 Agent,随手写了句 rm -rf /tmp/logs/*——结果他忘了加引号,命令被拼接成 [危险命令已移除]

权限边界:给 Agent 一个“牢笼”

Agent 最危险的地方在于它能“做事情”,而不仅仅是“说事情”。一旦它被授权执行命令或访问资源,错误的指令就可能造成真实损失。所以第一道防线,是最小权限原则

在 OpenClaw 中,我们可以通过环境变量或配置文件显式限制 Agent 的能力范围。比如:

# config/agent_limits.yaml
agent:
  name: "data-cleaner"
  permissions:
    allow_commands:
      - "ls"
      - "grep"
      - "find"
      - "tar"
    deny_paths:
      - "/etc/*"
      - "/var/run/secrets/*"
      - "/.env"
    max_execution_time: 30  # 单位:秒
    require_approval:
      - "rm"
      - "chmod"
      - "chown"

然后在启动 Agent 时加载配置:

export OPENCLAW_CONFIG_PATH=./config/agent_limits.yaml
python -m openclaw.agent --task "清理 /tmp 下超过 7 天的临时文件"

注意 require_approval 字段——它让高危操作必须人工确认。这看起来增加了步骤,但省下的排查时间远超等待批准的几分钟。

防注入:别让 Agent“想多了”

很多安全问题来自输入解析。比如用户说:“请删掉所有以 ; [危险命令已移除]

OpenClaw 默认对命令构建做了两层防护:

  1. 命令参数必须是数组形式,不能是拼接字符串
  2. 所有输入先做白名单校验,再传给执行器

实际代码示例:

# ✅ 正确做法:参数分离
cmd = ["find", "/tmp", "-mtime", "+7", "-delete"]

# ❌ 错误做法:字符串拼接(OpenClaw 会主动拦截)
# cmd = f"find /tmp -mtime +7 && [危险命令已移除]

如果你需要自定义校验逻辑,可以实现一个轻量级的预处理器:

from openclaw import Agent, Task

class SafeInputFilter:
    @staticmethod
    def sanitize(user_input: str) -> str:
        # 禁止分号、反引号、$()、管道符等
        dangerous = [";", "`", "$(", "|", "&&", "||"]
        for d in dangerous:
            if d in user_input:
                raise ValueError(f"检测到危险字符:{d}")
        return user_input.strip()

# 注册到 Agent
agent = Agent(name="file-manager", input_filter=SafeInputFilter)
task = Task("查找 /tmp 下最近修改的文件")
result = agent.run(task)

这种过滤不是 100% 安全,但能挡住 90% 的意外输入。

敏感数据:别让 Agent 看到不该看的

Agent 的“记忆”能力是一把双刃剑。它能记住你的偏好,也可能记住你的 API Key。我见过不少团队把 .env 文件挂载进 Agent 容器,然后 Agent 在分析日志时,顺手把 DB_PASSWORD 也写进了日志尾部——虽然人眼没注意,但模型后端可能把它当训练数据存了。

建议做法:

OpenClaw 提供了一个简单的日志过滤器配置:

// config/logging.json
{
  "mask_patterns": [
    "API_KEY",
    "SECRET_",
    "PASSWORD",
    "ACCESS_TOKEN"
  ],
  "log_output": "/var/log/openclaw/agent.log",
  "sanitize": true
}

运行时启用:

openclaw agent run --config ./config/logging.json --task "分析上个月用户反馈"

这样,即使 Agent 在日志里提到了敏感字段,输出也会显示为 [REDACTED]

总结

AI Agent 的威力越大,责任也越重。安全不是加一层防火墙就完事,它体现在权限设计、输入校验、数据脱敏的每一个细节里。OpenClaw 提供了基础能力,但真正要跑稳,还得靠你主动划清边界。

说实话,写完这篇文章我才去检查了自家的 Agent 配置——发现有个测试用 Agent 还开着 allow_commands: ["*"]。立刻改了,还加了个 require_approval: true

ClawBrain 是专为龙虾(OpenClaw)打造的智能决策引擎,具备任务闭环、自主规划、错误自愈能力,让龙虾真正能独立做事。它知道什么时候该停、什么时候该问、什么时候该自己补救——但前提是,你得先给它一个安全的运行环境。

让你的龙虾更聪明

ClawBrain 是专为 OpenClaw(龙虾)打造的智能决策引擎。任务闭环、自主规划、错误自愈,让你的龙虾真正能独立做事。一行配置接入。

免费开始 →