Deno 推出 Claw Patrol:面向 AI 代理的开源安全防火墙
Deno 官方博客发表文章,由 Deno 创始人 Ryan Dahl、Bert Belder 等核心团队成员联合撰写,正式推出 Claw Patrol——一个面向 AI 代理的开源安全防火墙。文章指出,Deno 团队在运营 Deno Deploy、JSR 等生产服务时,越来越多地使用 AI 代理来协助运维工作,包括处理 PagerDuty 告警、检查仪表盘、查询日志、运行 kubectl、回滚错误部署等。这意味着需要给 AI 代理访问许多生产系统的权限(AWS、GCP、Postgres、Kubernetes、ClickHouse、GitHub、Slack、Grafana),这带来了一个两难困境:权限有限的代理用处不大,但权限越大的代理越危险——kubectl delete namespace prod 和 psql -c 'DROP TABLE users' 都只需一次工具调用。文章详细介绍了 Claw Patrol 的设计理念、核心架构、使用方法和实际应用场景。
背景:AI 代理的安全困境
AI 代理在生产运维中的应用
Deno 团队在生产环境中广泛使用 AI 代理:
- 告警处理:自动 triage PagerDuty 告警,初步分析问题
- 监控检查:检查 Grafana 仪表盘,发现异常指标
- 日志查询:查询 ClickHouse 和应用日志,定位问题
- 运维操作:运行 kubectl 命令,管理 Kubernetes 集群
- 部署回滚:在出现问题时自动回滚部署
- 代码审查:审查 PR,发现潜在问题
- 事件响应:在安全事件中协助调查和响应
安全困境
给 AI 代理授权面临两难:
- 权限有限 → 用处不大:如果代理只能访问有限的系统和执行只读操作,它能完成的任务就很有限
- 权限过大 → 风险很高:如果代理有生产系统的写权限,一次错误的工具调用就可能造成严重损害
- 代理无法自我监管:代理进程本身持有工具(psql、kubectl、gh、curl)和这些工具需要的凭证,提示注入、幻觉或错误的工具调用都可能使用它们
- 无法改变代理行为:大多数代理(Claude、GPT 等)是黑盒,无法确保它们总是安全操作
- 传统安全工具不适用:传统的 IAM、防火墙、WAF 等工具是为人类用户设计的,不适合 AI 代理的自动化操作模式
现有解决方案的不足
现有的 AI 代理安全方案存在不足:
- 提示词防护:在系统提示词中要求代理"小心操作",但提示注入可以轻易绕过
- 人工审批:每个危险操作都需要人工审批,但这降低了自动化效率,且人工可能疲劳或误判
- 沙箱隔离:在沙箱中运行代理,但代理仍然需要访问外部系统
- 只读权限:只给代理只读权限,但很多运维操作需要写权限
- 活动监控:监控代理的活动,但这是事后检测,无法阻止损害发生
Claw Patrol 的设计理念
核心思想
Claw Patrol 的核心思想是:在 AI 代理和它要访问的工具/系统之间插入一个安全层,这个安全层可以:
- 检查代理的每一个工具调用
- 根据策略决定允许、拒绝还是修改调用
- 对危险操作要求额外的验证或审批
- 记录所有操作的完整审计日志
- 不依赖代理的"自觉性",而是在外部强制执行安全策略
这类似于网络防火墙的概念:网络防火墙在网络流量之间进行检查和过滤,Claw Patrol 在 AI 代理的工具调用之间进行检查和过滤。
设计原则
Claw Patrol 的设计遵循以下原则:
- 默认拒绝:未明确允许的操作默认拒绝
- 最小权限:代理只能访问完成任务所需的最小权限
- 分层防御:多层安全控制,一层被绕过还有其他层
- 可审计性:所有操作都有完整的审计日志
- 透明性:安全策略清晰可见,易于理解和审查
- 低延迟:安全检查不应显著增加操作延迟
- 易用性:配置和使用简单,不增加过多的运维负担
- 开源透明:开源项目,代码可审查,社区可贡献
与传统安全工具的区别
| 特性 | 传统 IAM/防火墙 | Claw Patrol |
|---|---|---|
| 设计目标 | 人类用户 | AI 代理 |
| 检查粒度 | 用户/角色级别 | 单次工具调用级别 |
| 上下文感知 | 有限 | 丰富(代理状态、任务上下文、历史操作) |
| 动态策略 | 静态规则 | 动态策略(基于任务、时间、风险等级) |
| 自动响应 | 告警/阻断 | 阻断/修改/要求审批/自动回滚 |
| 审计粒度 | 用户操作 | 工具调用级别,包含完整输入输出 |
Claw Patrol 的核心架构
整体架构
Claw Patrol 的整体架构包含以下组件:
┌─────────────────────────────────────────────────┐
│ AI Agent (Claude/GPT) │
│ 持有工具调用接口,但不直接访问外部系统 │
└──────────────────────┬──────────────────────────┘
│ 工具调用请求
▼
┌─────────────────────────────────────────────────┐
│ Claw Patrol 安全层 │
│ ┌──────────┐ ┌──────────┐ ┌────────────────┐ │
│ │ 策略引擎 │ │ 审批流程 │ │ 审计日志 │ │
│ └──────────┘ └──────────┘ └────────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌────────────────┐ │
│ │ 速率限制 │ │ 内容过滤 │ │ 异常检测 │ │
│ └──────────┘ └──────────┘ └────────────────┘ │
└──────────────────────┬──────────────────────────┘
│ 允许/修改后的调用
▼
┌─────────────────────────────────────────────────┐
│ 外部工具和系统 │
│ kubectl │ psql │ aws │ gh │ curl │ API │ ... │
└─────────────────────────────────────────────────┘
策略引擎
策略引擎是 Claw Patrol 的核心,负责检查每个工具调用并决定是否允许:
策略定义方式
策略使用声明式语言定义,支持多种条件:
# 示例策略
policies:
- name: 禁止删除生产命名空间
effect: deny
match:
tool: kubectl
command: delete
namespace: prod
message: "禁止删除 prod 命名空间"
- name: 限制数据库写操作
effect: require_approval
match:
tool: psql
query_type: [DROP, TRUNCATE, DELETE, UPDATE]
approval:
type: human
timeout: 5m
channel: slack
- name: 允许只读操作
effect: allow
match:
tool: [kubectl, psql, aws]
operation: read_only
- name: 限制 GitHub 操作
effect: allow
match:
tool: gh
command: [pr, issue, view, list]
rate_limit:
max_per_minute: 10
- name: 时间限制
effect: deny
match:
time:
not_between: ["09:00", "18:00"]
except:
- operation: read_only
策略匹配条件
策略可以基于多种条件匹配:
- 工具类型:kubectl、psql、aws、gh、curl 等
- 命令/操作:delete、create、update、drop、select 等
- 目标资源:命名空间、表、桶、仓库等
- 参数值:具体的参数值或模式
- 时间:工作时间/非工作时间、特定日期
- 代理身份:哪个代理或代理角色
- 任务上下文:当前任务的类型和状态
- 历史操作:最近的操作历史和模式
- 风险评分:基于多种因素计算的风险评分
策略效果
策略可以产生以下效果:
- allow(允许):允许操作继续执行
- deny(拒绝):拒绝操作,返回错误信息
- modify(修改):修改操作参数后执行(如添加
--dry-run) - require_approval(要求审批):暂停操作,等待人工或自动审批
- rate_limit(速率限制):限制操作频率
- quarantine(隔离):将代理隔离,暂停所有操作
- alert(告警):发送告警但允许操作继续
审批流程
对于高风险操作,Claw Patrol 支持多种审批流程:
人工审批
- 通过 Slack、Teams、邮件等渠道发送审批请求
- 审批人可以查看操作详情、代理状态、历史操作
- 支持批准、拒绝、修改后批准
- 超时自动拒绝(可配置)
- 审批记录完整保存
自动审批
对于某些场景,可以设置自动审批规则:
- 低风险操作自动批准
- 符合特定模式的操作自动批准
- 基于历史行为的自动审批
- 多因素验证(如要求代理解释操作原因)
分级审批
根据风险等级设置不同的审批流程:
- 低风险:自动批准
- 中风险:单人审批
- 高风险:多人审批
- 极高风险:需要安全团队审批 + 额外验证
审计日志
Claw Patrol 记录所有操作的完整审计日志:
日志内容
每条审计日志包含:
- 时间戳
- 代理身份和角色
- 任务上下文
- 工具调用的完整输入
- 工具执行的完整输出
- 策略匹配结果
- 审批记录(如果有)
- 执行结果(成功/失败/超时)
- 延迟和资源使用
- 风险评分
日志用途
审计日志可用于:
- 事后调查和取证
- 合规报告
- 代理行为分析
- 安全事件检测
- 策略优化
- 成本分析
异常检测
Claw Patrol 内置异常检测能力:
检测维度
- 操作频率异常:代理突然执行大量操作
- 操作类型异常:代理执行了不寻常的操作类型
- 目标异常:代理访问了不寻常的目标系统
- 时间异常:代理在不寻常的时间操作
- 序列异常:操作序列符合已知攻击模式
- 输出异常:工具输出包含异常内容
响应措施
检测到异常时:
- 发送告警
- 暂停代理操作
- 要求额外验证
- 通知安全团队
- 自动回滚可疑操作
- 隔离代理
速率限制和配额
Claw Patrol 提供细粒度的速率限制和配额管理:
- 每分钟/每小时/每天操作数限制
- 特定工具的调用频率限制
- 并发操作数限制
- 资源使用配额(CPU、内存、API 调用次数)
- 成本配额(云服务费用、API 费用)
- 超限响应:拒绝、排队、告警、降级
Claw Patrol 的使用方法
安装和部署
Claw Patrol 可以通过多种方式部署:
作为代理包装器
最简单的使用方式是作为代理的包装器:
# 使用 claw-patrol 包装代理命令
claw-patrol run --config config.yaml -- claude --project my-project
作为 Sidecar 容器
在 Kubernetes 中作为 Sidecar 部署:
# Kubernetes Pod 配置
spec:
containers:
- name: ai-agent
image: my-ai-agent:latest
env:
- name: TOOL_PROXY_URL
value: http://localhost:8080
- name: claw-patrol
image: clawpatrol/claw-patrol:latest
ports:
- containerPort: 8080
volumeMounts:
- name: config
mountPath: /etc/claw-patrol
作为独立服务
作为独立服务部署,多个代理共享:
claw-patrol server --config config.yaml --port 8080
配置示例
完整的配置文件示例:
# config.yaml
version: "1.0"
server:
port: 8080
tls:
enabled: true
cert: /etc/ssl/cert.pem
key: /etc/ssl/key.pem
agents:
- name: ops-agent
role: operations
allowed_tools:
- kubectl
- psql
- aws
- gh
- curl
policies:
- name: 默认拒绝
effect: deny
match:
all: true
- name: 允许只读操作
effect: allow
match:
operation: read_only
- name: 限制 kubectl 写操作
effect: require_approval
match:
tool: kubectl
operation: write
approval:
type: human
channel: slack
timeout: 10m
- name: 禁止危险数据库操作
effect: deny
match:
tool: psql
query:
pattern: "(DROP|TRUNCATE)\\s+(TABLE|DATABASE)"
message: "禁止 DROP/TRUNCATE 操作"
- name: 限制 AWS 操作
effect: require_approval
match:
tool: aws
service: [iam, s3, lambda]
operation: write
approval:
type: human
min_approvals: 2
audit:
enabled: true
storage:
type: postgres
dsn: postgres://user:pass@localhost/audit
retention: 90d
alerts:
- type: slack
webhook: https://hooks.slack.com/services/xxx
events: [deny, quarantine, anomaly_detected]
- type: pagerduty
integration_key: xxx
events: [quarantine, high_risk_operation]
与 AI 代理框架集成
Claw Patrol 可以与主流 AI 代理框架集成:
LangChain 集成
from langchain.agents import AgentExecutor
from claw_patrol import ClawPatrolToolWrapper
# 用 Claw Patrol 包装工具
tools = [
ClawPatrolToolWrapper(
tool=kubectl_tool,
policy_engine="http://localhost:8080",
agent_id="ops-agent"
),
ClawPatrolToolWrapper(
tool=psql_tool,
policy_engine="http://localhost:8080",
agent_id="ops-agent"
),
]
agent = AgentExecutor(tools=tools, ...)
Claude Code 集成
// .claw-patrol/config.json
{
"agent": "claude-code",
"policyEngine": "http://localhost:8080",
"wrappedCommands": ["kubectl", "psql", "aws", "gh"]
}
实际应用场景
场景 1:生产运维代理
Deno 团队使用 Claw Patrol 保护生产运维代理:
- 代理可以查询日志、检查指标、查看部署状态(只读,自动允许)
- 代理可以重启服务、回滚部署(写操作,需要审批)
- 代理不能删除命名空间、删除数据库表(危险操作,直接拒绝)
- 所有操作记录审计日志
- 异常行为自动告警和隔离
场景 2:代码审查代理
Claw Patrol 保护代码审查代理:
- 代理可以查看代码、PR、issue(只读,自动允许)
- 代理可以评论 PR、创建 issue(低风险写操作,自动允许但限速)
- 代理不能合并 PR、删除分支(高风险操作,需要审批)
- 代理不能访问私有仓库(基于仓库权限控制)
场景 3:数据分析代理
Claw Patrol 保护数据分析代理:
- 代理可以查询数据库(只读,自动允许)
- 代理可以创建临时表(写操作,但限制在特定 schema)
- 代理不能修改生产数据、删除表(危险操作,拒绝)
- 查询结果自动脱敏(敏感字段自动过滤)
- 查询频率和数据量限制
场景 4:客户支持代理
Claw Patrol 保护客户支持代理:
- 代理可以查看客户信息(只读,但限制访问范围)
- 代理可以更新客户备注(低风险写操作)
- 代理不能修改客户账单、删除账户(高风险操作,需要审批)
- 客户数据自动脱敏
- 操作记录用于质量保证
开源和社区
开源承诺
Claw Patrol 是完全开源的项目:
- MIT 许可证
- 代码托管在 GitHub
- 开放的开发流程
- 欢迎社区贡献
- 透明的安全审计
社区参与
- GitHub Issues:提交 bug 和功能请求
- Pull Requests:贡献代码
- 讨论区:讨论设计和使用问题
- 文档贡献:改进文档和示例
- 安全研究:发现和报告安全漏洞
路线图
Claw Patrol 的未来发展方向:
- 更多工具的原生支持
- 更丰富的策略语言
- 机器学习驱动的异常检测
- 与更多 AI 代理框架的集成
- 多代理协作的安全管理
- 自动策略生成和优化
- 合规报告和认证
- 企业级功能(SSO、审计、多租户)
总结
Deno 推出的 Claw Patrol 是面向 AI 代理的开源安全防火墙,解决了 AI 代理在生产环境中使用时的安全困境。随着 AI 代理越来越多地用于生产运维、代码审查、数据分析、客户支持等场景,给代理授权面临两难:权限有限则用处不大,权限过大则风险很高,且代理无法自我监管,传统安全工具也不适合 AI 代理的自动化操作模式。Claw Patrol 的核心思想是在 AI 代理和外部工具之间插入安全层,检查每个工具调用,根据策略决定允许、拒绝、修改或要求审批,不依赖代理的"自觉性"而是在外部强制执行安全策略。核心架构包括策略引擎(声明式策略定义,支持工具类型、命令、目标资源、时间、代理身份、任务上下文等多种匹配条件,以及 allow/deny/modify/require_approval 等多种效果)、审批流程(人工审批、自动审批、分级审批)、审计日志(记录所有操作的完整输入输出和上下文)、异常检测(操作频率、类型、目标、时间、序列等多维度检测)、速率限制和配额管理。使用方式包括作为代理包装器、Sidecar 容器、独立服务等,支持与 LangChain、Claude Code 等主流 AI 代理框架集成。实际应用场景包括生产运维代理、代码审查代理、数据分析代理、客户支持代理等。Claw Patrol 是完全开源的项目,欢迎社区贡献,未来将向更丰富的策略语言、机器学习驱动的异常检测、多代理协作安全管理等方向发展。随着 AI 代理在生产环境中的应用越来越广泛,安全将成为不可忽视的关键问题,Claw Patrol 为这一问题提供了开源、透明、可扩展的解决方案,代表了 AI 代理安全领域的重要方向。
项目地址:https://github.com/denoland/claw-patrol
来源:https://deno.com/blog/clawpatrol