如何保护 AI 智能体:OpenClaw 权限与审计

2026年3月3日Ollie @puppyone

AI 智能体尝试批量删除邮件但被权限和审计日志阻止;OpenClaw 警示图

核心要点

  • 最小权限胜过「请确认」。强制执行默认拒绝白名单和读写分离,使智能体即使「忘记」指令也无法触及不该触及的内容。
  • 审批必须在模型之外。使用基于策略的人工审批,带过期和行动计划哈希;仅在审批后注入能力。
  • 可审计性与回滚形成闭环。在批量/破坏性操作前捕获仅追加、防篡改的日志和快照,以便在出问题时快速恢复。

OpenClaw 事件对 OpenClaw 安全的启示——以及为何提示词不是控制手段

据报道,某 OpenClaw 智能体开始大规模删除邮件,并多次无视停止命令,直到用户本地终止进程。根据媒体摘要,可能根因是 token 压力导致模型跳过了关键约束:「未经批准不得行动」。教训很简单:自然语言护栏在上下文变动下很脆弱。把安全放在可执行的地方——策略、审批和运行时控制。

关于事件背景和暴露风险,参见 TechCrunch:A Meta AI security researcher said an OpenClaw agent ran amok on her inbox(2026)和 Tom's Hardware:OpenClaw wipes inbox of Meta's AI Alignment director(2026)。在 RCE 方面,The Hacker News 描述了与 OpenClaw 网关 token 处理相关的一键接管路径,University of Toronto 发布了 OpenClaw 漏洞通知(均为 2026),敦促升级和 token 轮换。

安全上线的工具与前置条件

需要:每个智能体独立的身份及最小作用域;支持隔离的容器/VM 运行时(Linux 的 seccomp/AppArmor 或等效);用于采集的日志管道(如 ELK/Splunk/Sentinel);以及用于审批和能力的策略引擎或 sidecar 存储。Microsoft 的 Running OpenClaw safely guidance(2026)与此配置一致,强调最小权限、短期 token 和隔离。

步骤 1 — 盘点数据面并默认拒绝

梳理智能体将操作的范围:文件夹、文件、API 和数据字段。按敏感度分类,采用默认拒绝策略。目标是精确路径和工具的允许列表,仅允许智能体接触这些内容。从只读访问开始;谨慎开放写权限。

步骤 2 — 定义按智能体的白名单并分离读写

将权限固化为策略,而非提示词。把策略放在模型的 token 预算之外,并在运行时强制执行。

# policy.yaml — 最小化、默认拒绝的智能体策略
policy:
  agent_id: "agent-inbox-cleanup"
  default_deny: true
  mounts:
    - path: "/mail/inbox/sorted/"
      permissions: [read]
    - path: "/mail/inbox/drafts/"
      permissions: [read, write]
  tools:
    - name: "fs.read"
      allow: true
    - name: "fs.write"
      allow: true
    - name: "fs.delete"
      allow: false  # destructive verbs require human approval token
  approvals:
    destructive_actions: [delete, bulk_move, bulk_rewrite]
    required: true
    approvers: ["sec-lead", "mail-owner"]
    expires_in: "2h"
    dry_run: true  # require a plan preview before approval

提示:限制批次大小(如每计划 ≤50 项)并做速率限制,以减小影响范围。

步骤 3 — 对破坏性或批量操作强制人工审批

将「delete」「bulk move」「rewrite」视为特权动词。审批记录应包含:谁批准、批准了什么(diff/计划哈希)、何时过期、是否一次性。将审批存储在 sidecar 服务中,仅在审批后注入短期能力 token。关于更广泛的模式与身份指引,参见 Microsoft Running OpenClaw safely: identity, isolation, runtime risk(2026)和 Oso Setting Permissions for AI Agents: Delegated Access(2025)。

运维建议:

  • 审批快速过期(如 2 小时)并绑定到资源路径。
  • 对敏感范围(如财务、人事)要求双人审批。
  • 记录计划哈希和最终 diff,以检测审批与执行之间的偏差。

步骤 4 — 使审计日志仅追加且防篡改

设计在事后分析中可信的日志。使用仅追加存储或哈希链;包含关联 ID 以便重建多步操作及谁批准了什么。

{
  "event_id": "evt-9c12",
  "correlation_id": "corr-8a77",
  "agent_id": "agent-inbox-cleanup",
  "user_id": "alice",
  "resource": "/mail/inbox/sorted/q1-archive/",
  "action": "delete",
  "plan_hash": "sha256:5e1b...",
  "approval_id": null,
  "decision": "deny",
  "reason": "outside allowlist",
  "timestamp": "2026-03-03T10:22:11Z",
  "env": {"container_id": "a1b2", "host": "vm-ops-05"}
}

保留建议:90 天热存储,1 年冷存储。导出到 SIEM,并对被拒绝的破坏性操作告警(高信号的事故前兆)。

步骤 5 — 添加版本控制、快照与快速回滚

在任何批量/破坏性操作前,对受影响范围做快照。以事务方式应用变更,验证事后条件,并为删除保留隔离区。若检测到策略违规或异常:自动停止并回滚。

关于可重建上下文与版本沿袭的背景,参见 Ultimate Guide to Agent Context Base: Hybrid Indexing(puppyone 博客)。

步骤 6 — 隔离智能体运行时并限制出口与密钥

将智能体主机视为高风险工作负载。在容器/VM 中运行,并满足:

  • 最小 OS 能力与尽可能只读根;临时可写覆盖层。
  • 网络出口白名单;将 UI 绑定到 localhost;验证 CSRF 与 WebSocket 来源。
  • 按智能体的身份与 vault 路径;短期 token;速率限制与紧急停止开关。

这些控制可减轻 The Hacker News(2026)和 University of Toronto advisory(2026)中描述的 CVE 路径等 UI/token 泄露漏洞的影响。

步骤 7 — 测试:模拟恶意清理并验证拒绝与回滚

在沙箱 VM/容器中执行安全复现:

  1. 将智能体指向包含白名单内外文件夹的测试邮箱。
  2. 在无审批 token 的情况下,尝试对范围外文件夹进行批量删除。
  3. 预期结果:操作被拒绝;日志显示 decision=deny、reason=outside allowlist;无数据丢失。
  4. 对范围内小批量批准一次 dry-run 计划;注入短期 token 并重新执行。验证执行与计划哈希一致。故意使事后检查失败以确认自动回滚。

代表性拒绝日志行(可读):

[2026-03-03T10:22:11Z] corr=corr-8a77 agent=agent-inbox-cleanup action=delete path=/mail/inbox/sorted/q1-archive/ decision=DENY reason="outside allowlist" approver=— plan=sha256:5e1b...

实践示例:中立的权限优先工作流

若为多个智能体集中企业上下文与权限,上下文库可帮助定义按智能体的文件夹白名单(读写范围)、强制执行审批,并向下游导出审计事件。例如,使用 puppyone 的团队为每个智能体配置路径级挂载,将破坏性动词置于短期审批之后,并将仅追加日志流式传输到 SIEM。关于路径级 ACL 与 runbook 级日志的更多内容,参见 puppyone 博客 FUSE AI Agents 2026: Plan/Scratch for Reliable Reasoning。

验证清单、KPI 与故障排查

  • 验证:至少一次范围外破坏性操作可靠记录 decision=deny 及关联 ID;已批准范围内计划仅在审批 token 有效期间执行。
  • KPI:破坏性尝试的 MTTD 目标 < 1 小时;带快照的 MTTR < 2 小时;测试用例中拒绝操作率 > 99%。
  • 故障排查:若审批似乎被忽略,检查 token 注入器是否与模型上下文分离,以及计划哈希在审批与执行间是否一致。若拒绝未记录,确认仅追加存储与 SIEM 导出映射。

常见问题

Q1:如何限定审批范围,使其不能被用于非预期操作?

A:将审批绑定到具体资源路径和计划哈希;设为短期过期的一次性使用。任何计划偏差均需重新审批。

Q2:对作用于文件或邮件的智能体,审计事件应包含哪些内容?

A:包含 agent_id、user_id(若委托)、资源路径、预期操作与计划哈希、决定、审批人 ID(如有)、写入的 diff、时间戳、环境 ID,以及多步链的 correlation_id。

Q3:智能体运行时打补丁和 token 轮换的频率?

A:遵循厂商公告;对 OpenClaw 类智能体,在 CVE 发布时及时升级(如 CVE‑2026‑25253 补丁发布),并在暴露窗口后轮换 token。将 UI 绑定到 localhost 并验证来源,以限制 token 泄露。