OpenClaw学习总结_IV_认证与安全_3:Authorization与Policies详解

IV. 认证与安全 - 3. Authorization 与 Policies

📍 课程位置

阶段 :IV. 认证与安全
课序 :第 3 课
前置知识 :IV-2. Authentication
后续课程:IV-4. Multi-Account Patterns


🎯 本课核心问题(你不懂我就这样教你)

前两课解决了"我有没有钥匙(Authentication)"。

这一课解决的是:

  1. 就算我有钥匙,我能进哪些门?能干哪些事?
  2. 谁能给我的 Agent 发消息?谁能用 DM?谁能在群里触发?
  3. 工具(exec/browser/files/message)到底允许到什么程度?
  4. 怎么防 prompt injection?怎么做最小权限?

一句话:

Authorization & Policies = 用规则把系统"收口",决定谁能触发你、触发后能做什么。


🧠 心智模型:Authentication 是"身份",Authorization 是"权限"

类比:

  • Authentication:你是谁/你有没有门禁卡
  • Authorization:你能进哪几层楼/能不能进机房

OpenClaw 的授权大体分成三层:

  1. 入口权限(谁能来找你):dmPolicy / groupPolicy / allowlist / pairing
  2. 会话隔离(谁的上下文跟谁隔离):dmScope / sessions
  3. 执行权限(能用哪些工具):tools policy / sandbox

✅ 验收标准

  • 能正确选择 dmPolicy(pairing/allowlist/open/disabled)
  • 能正确设置 dmScope 防止串话
  • 能设置工具最小权限(messaging-only vs full)
  • 能理解 prompt injection 的主要风险面

1) 入口权限:DM / 群聊的访问控制

DM(私聊)

推荐优先级:

  1. pairing(默认推荐)
  2. allowlist(只给自己/少数人)
  3. open(强烈不推荐)
  4. disabled

群聊

建议默认:

  • requireMention(@ 才响应)
  • 或 group allowlist

目标:

  • 降低误触发
  • 降低成本
  • 降低注入风险

2) 会话隔离:dmScope(防止多用户串话)

如果你面对多个用户:

json5 复制代码
{ session: { dmScope: "per-channel-peer" } }

这样每个"渠道+对话对象"都有独立会话。

你可以把它理解成:

每个人一个独立聊天窗口,互不继承上下文。


3) 执行权限:Tools Policy(最小权限原则)

这是授权体系最关键的一环。

为什么?

prompt injection 的破坏力取决于:

  • Agent 能不能调用危险工具(exec / filesystem write / browser)

如果你的 Agent 只有 message 工具:

  • 被注入也只能"说话",破坏面非常小

建议的策略

  • home/对外 agent:messaging + web_fetch(最小)
  • work/开发 agent:允许 exec/git/browser,但配 sandbox

4) Prompt Injection:你要防的不是"模型被说服",而是"工具被滥用"

关键原则:

  1. 外部输入永远不可信(群聊、webhook、陌生人 DM)
  2. 不要让外部输入直接决定:
    • 执行命令
    • 读取文件
    • 上传数据
  3. 需要人工确认的行为:
    • 删除/移动文件
    • 发布/发送到外部

你可以把安全做成"闸门":

  • 入口闸门(pairing/allowlist)
  • 会话闸门(dmScope)
  • 工具闸门(tools policy)
  • 隔离闸门(sandbox)

🧪 推荐的安全基线(可直接抄)

json5 复制代码
{
  session: { dmScope: "per-channel-peer" },
  tools: { profile: "messaging" },
  agents: {
    defaults: {
      sandbox: { mode: "non-main", scope: "agent", workspaceAccess: "ro" }
    }
  },
  channels: {
    whatsapp: { dmPolicy: "pairing" },
    telegram: { dmPolicy: "pairing" }
  }
}

⚠️ 常见陷阱

陷阱 表现 根因 解决
dmPolicy=open 陌生人都能来 入口没收口 pairing/allowlist
dmScope 太粗 串话/泄露 多用户共用会话 per-channel-peer
tools 太全 被注入就能执行危险操作 最小权限没做 限制 tools + sandbox
群聊乱回 误触发 没 mention gating requireMention

📝 学习心得

Authorization 这章的本质是"收口"。

我现在的结论是:

  • 入口控制(谁能说话)只是第一步
  • 真正决定风险的是"能不能用危险工具"

把系统当成"要上线的服务"去设计:

  • 最小权限
  • 分层闸门
  • 可回滚

你就不会被 prompt injection 拿捏。


✅ 本课总结(记住 5 句话)

  1. Authentication 是"有没有钥匙",Authorization 是"能干什么"。
  2. DM 推荐 pairing/allowlist,open 风险极大。
  3. 多用户必须 per-channel-peer,防串话。
  4. Prompt injection 的风险核心在工具滥用。
  5. 安全要分层:入口 + 会话 + 工具 + 沙箱。

🔗 相关资源

相关推荐
EnglishJun1 小时前
ARM嵌入式学习(二十)--- 杂项设备、Platfrom总线和设备树源文件(dts)
学习
知识分享小能手1 小时前
MongoDB入门学习教程,从入门到精通,MongoDB 安全完全指南(19)
学习·安全·mongodb
Lyyaoo.1 小时前
【JAVA基础面经】线程安全的单例模式
java·安全·单例模式
汽车仪器仪表相关领域2 小时前
NHXJ-02汽车悬架检验台 实操型实战手册
人工智能·功能测试·测试工具·算法·安全·单元测试·可用性测试
_李小白2 小时前
【OSG学习笔记】Day 39: NodeCallback(帧回调机制)
java·笔记·学习
EasyGBS2 小时前
国密GB35114+国标GB28181平台EasyGBS双标护航为交通视频监控筑牢安全防线
安全
AI_Claude_code2 小时前
安全与合规核心:匿名化、日志策略与法律风险规避
网络·爬虫·python·tcp/ip·安全·http·网络爬虫
浮芷.2 小时前
开源鸿蒙跨平台Flutter开发:校园问答互助社区应用
学习·flutter·华为·开源·harmonyos·鸿蒙
小陈phd2 小时前
CCPD数据集全解析:中文车牌识别的“双黄金标准“
笔记·学习·生成对抗网络