IV. 认证与安全 - 3. Authorization 与 Policies
📍 课程位置
阶段 :IV. 认证与安全
课序 :第 3 课
前置知识 :IV-2. Authentication
后续课程:IV-4. Multi-Account Patterns
🎯 本课核心问题(你不懂我就这样教你)
前两课解决了"我有没有钥匙(Authentication)"。
这一课解决的是:
- 就算我有钥匙,我能进哪些门?能干哪些事?
- 谁能给我的 Agent 发消息?谁能用 DM?谁能在群里触发?
- 工具(exec/browser/files/message)到底允许到什么程度?
- 怎么防 prompt injection?怎么做最小权限?
一句话:
Authorization & Policies = 用规则把系统"收口",决定谁能触发你、触发后能做什么。
🧠 心智模型:Authentication 是"身份",Authorization 是"权限"
类比:
- Authentication:你是谁/你有没有门禁卡
- Authorization:你能进哪几层楼/能不能进机房
OpenClaw 的授权大体分成三层:
- 入口权限(谁能来找你):dmPolicy / groupPolicy / allowlist / pairing
- 会话隔离(谁的上下文跟谁隔离):dmScope / sessions
- 执行权限(能用哪些工具):tools policy / sandbox
✅ 验收标准
- 能正确选择 dmPolicy(pairing/allowlist/open/disabled)
- 能正确设置 dmScope 防止串话
- 能设置工具最小权限(messaging-only vs full)
- 能理解 prompt injection 的主要风险面
1) 入口权限:DM / 群聊的访问控制
DM(私聊)
推荐优先级:
pairing(默认推荐)allowlist(只给自己/少数人)open(强烈不推荐)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:你要防的不是"模型被说服",而是"工具被滥用"
关键原则:
- 外部输入永远不可信(群聊、webhook、陌生人 DM)
- 不要让外部输入直接决定:
- 执行命令
- 读取文件
- 上传数据
- 需要人工确认的行为:
- 删除/移动文件
- 发布/发送到外部
你可以把安全做成"闸门":
- 入口闸门(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 句话)
- Authentication 是"有没有钥匙",Authorization 是"能干什么"。
- DM 推荐 pairing/allowlist,open 风险极大。
- 多用户必须 per-channel-peer,防串话。
- Prompt injection 的风险核心在工具滥用。
- 安全要分层:入口 + 会话 + 工具 + 沙箱。
🔗 相关资源
- 官方安全指南:https://docs.openclaw.ai/gateway/security
- 配置参考:https://docs.openclaw.ai/gateway/configuration-reference
- 下一课:IV-4. Multi-Account Patterns