如何使用OPA/Rego策略保护OpenClaw中的本地工具执行

Reddit r/openclaw 工具

摘要

解释了如何通过使用Loopers代理和OPA/Rego策略,在MCP工具调用在主机上执行之前拦截并验证它们,从而保护OpenClaw中本地AI代理工具执行的安全。

OpenClaw 是一个令人惊叹的、本地优先的个人AI助手。由于其设计为直接在你的机器上运行,你可以授予它访问本地文件、数据库和终端命令的权限,以便编写和执行代码。然而,这种工具调用的自主性引入了严重的安全风险。如果你的代理暴露于恶意数据或遭受提示注入,被攻破的代理可能会执行破坏性命令(例如修改主机文件系统或运行未经批准的 shell 脚本)。为了在不修改 OpenClaw 核心代码的情况下保障安全,你可以将其工具调用管道路由通过一个策略防火墙。以下是使用 Loopers(一个开源的 Go 代理)来拦截模型上下文协议(MCP)工具调用,并在它们可以在主机上执行之前,根据开放策略代理(OPA/Rego)规则进行验证的方法。1. 拦截工具调用 Loopers 充当本地代理。通过将 OpenClaw 的工具调用管道指向 Loopers 代理地址,所有 JSON-RPC 2.0 的 tools/call 请求首先通过该代理路由。2. 编写安全策略(Rego) 你可以在本地的 .rego 文件(例如 /policies/security.rego)中定义细粒度的安全规则。Loopers 在关键路径上编译并评估此规则,耗时不到一毫秒:regopackage loopers.policy default allow = false # 1. Allow the request by default if no deny rules match allow { not deny } # 2. Block OpenClaw from executing terminal shell tools in development deny[msg] { input.request.method == "mcp_tool_call" input.request.tool_name == "execute_shell_command" input.agent.tags.environment == "development" msg := "Terminal command execution is blocked in local development." } # 3. Restrict sensitive filesystem tools to admin owners only deny[msg] { input.request.tool_name == "delete_file" input.agent.owner != "admin" msg := sprintf("File deletion restricted. Current owner is: %s", [input.agent.owner]) } 3. 执行与阻止 当 OpenClaw 尝试运行一个工具时:代理拦截 JSON-RPC 请求并提取元数据(工具名称、MCP 服务器、代理标签和所有者名称)。它评估 Rego 规则。如果匹配到拒绝规则,代理立即断开连接并返回 403 Forbidden 响应,阻止 shell 命令或文件系统写入到达你的系统。通过将代理的执行层与你的安全策略分离,你可以确保即使是被攻破的代理也无法绕过你的防护栏。我们需要社区的支持!Loopers 完全开源(MIT 许可证)且可自托管。在发布之际,我们需要你的帮助来让 Agent Runtime Governance 成为标准:给仓库加星:如果你觉得这个项目或基于 OPA 的代理治理概念有用,在 GitHub 上加星将大大帮助我们获得关注。仓库见评论。贡献:我们正在积极寻找贡献者,帮助我们编写更多的框架集成和客户端 SDK 适配器。你目前如何在你的工作流中保护 OpenClaw 和其他本地优先代理?你是对整个主机命名空间进行沙盒化,还是使用代理级别的策略?让我们讨论!
查看原文

相似文章

如何为OpenClaw编写工具?

Reddit r/openclaw

该帖子询问如何为OpenClaw编写可执行的工具,比较了插件、MCP服务器、技能和CLI脚本等选项,并对可扩展性和上下文管理表示担忧。

OpenClaw 安全的发展方向

Hacker News Top

OpenClaw 详细介绍了其安全架构,使用 `fs-safe` 进行文件系统边界控制以及 Proxyline 进行网络出口控制,旨在使其 AI 个人助理值得信赖且可审计。

Openclaw 作为系统管理员

Reddit r/openclaw

作者描述了在 Linux 服务器上将 Openclaw 用作系统管理员,利用本地 Qwen 3.6 27b 模型进行安全审计、更新以及部署自助服务终端模式任务,无需外部互联网连接。