编程 Deno 推出 Claw Patrol:面向 AI 代理的开源安全防火墙

2026-09-07 00:14:42

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 prodpsql -c 'DROP TABLE users' 都只需一次工具调用。文章详细介绍了 Claw Patrol 的设计理念、核心架构、使用方法和实际应用场景。

背景:AI 代理的安全困境

AI 代理在生产运维中的应用

Deno 团队在生产环境中广泛使用 AI 代理:

  • 告警处理:自动 triage PagerDuty 告警,初步分析问题
  • 监控检查:检查 Grafana 仪表盘,发现异常指标
  • 日志查询:查询 ClickHouse 和应用日志,定位问题
  • 运维操作:运行 kubectl 命令,管理 Kubernetes 集群
  • 部署回滚:在出现问题时自动回滚部署
  • 代码审查:审查 PR,发现潜在问题
  • 事件响应:在安全事件中协助调查和响应

安全困境

给 AI 代理授权面临两难:

  1. 权限有限 → 用处不大:如果代理只能访问有限的系统和执行只读操作,它能完成的任务就很有限
  2. 权限过大 → 风险很高:如果代理有生产系统的写权限,一次错误的工具调用就可能造成严重损害
  3. 代理无法自我监管:代理进程本身持有工具(psql、kubectl、gh、curl)和这些工具需要的凭证,提示注入、幻觉或错误的工具调用都可能使用它们
  4. 无法改变代理行为:大多数代理(Claude、GPT 等)是黑盒,无法确保它们总是安全操作
  5. 传统安全工具不适用:传统的 IAM、防火墙、WAF 等工具是为人类用户设计的,不适合 AI 代理的自动化操作模式

现有解决方案的不足

现有的 AI 代理安全方案存在不足:

  1. 提示词防护:在系统提示词中要求代理"小心操作",但提示注入可以轻易绕过
  2. 人工审批:每个危险操作都需要人工审批,但这降低了自动化效率,且人工可能疲劳或误判
  3. 沙箱隔离:在沙箱中运行代理,但代理仍然需要访问外部系统
  4. 只读权限:只给代理只读权限,但很多运维操作需要写权限
  5. 活动监控:监控代理的活动,但这是事后检测,无法阻止损害发生

Claw Patrol 的设计理念

核心思想

Claw Patrol 的核心思想是:在 AI 代理和它要访问的工具/系统之间插入一个安全层,这个安全层可以:

  • 检查代理的每一个工具调用
  • 根据策略决定允许、拒绝还是修改调用
  • 对危险操作要求额外的验证或审批
  • 记录所有操作的完整审计日志
  • 不依赖代理的"自觉性",而是在外部强制执行安全策略

这类似于网络防火墙的概念:网络防火墙在网络流量之间进行检查和过滤,Claw Patrol 在 AI 代理的工具调用之间进行检查和过滤。

设计原则

Claw Patrol 的设计遵循以下原则:

  1. 默认拒绝:未明确允许的操作默认拒绝
  2. 最小权限:代理只能访问完成任务所需的最小权限
  3. 分层防御:多层安全控制,一层被绕过还有其他层
  4. 可审计性:所有操作都有完整的审计日志
  5. 透明性:安全策略清晰可见,易于理解和审查
  6. 低延迟:安全检查不应显著增加操作延迟
  7. 易用性:配置和使用简单,不增加过多的运维负担
  8. 开源透明:开源项目,代码可审查,社区可贡献

与传统安全工具的区别

特性传统 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

推荐文章

程序员茄子在线接单