第 19 章 安全与权限
给 AI 装个安全带,再聪明也不能乱来。
朋友们好呀,我是当当老师 🐾!前面我们把 AI 助理武装到了牙齿——能读文件、能跑命令、能拍照、能发通知。但能力越大,责任越大!
这一章我们学习怎么给 OpenClaw 上锁,防止 AI 乱来,或者别人偷用你的 AI。
19.1 OpenClaw 的安全模型
先记住一个重要原则:OpenClaw 是为个人(或个人团队)设计的,不是给几千人用的网站。
它的安全模型假设:
- 运行 OpenClaw 的机器是可信的
- 能改配置的人是可信的(就是你自己)
- 如果你的机器被入侵了,AI 也不安全
听起来简单?但就算是单人使用,也有很多需要注意的地方。
19.2 Policy 系统(策略系统)
Policy(策略)就像是给 AI 制定的"家规"——告诉它能做什么、不能做什么。
工具执行模式
这是最重要的安全设置,控制了 AI 能不能在你的电脑上跑命令:
# openclaw.yaml 中的工具执行设置
tools:
exec:
mode: "allowlist" # 默认是 allowlist
五种模式从严到松:
| 模式 | 说人话 | 适合场景 |
|---|---|---|
deny |
AI 不准执行任何命令 | 只聊天,绝对安全 |
allowlist |
只在白名单里的命令可以自动跑,其他的要问你我 | ⭐ 推荐新手使用 |
ask |
所有命令都要问我同意 | 最稳妥,但比较烦 |
auto |
白名单内的自动跑,其他的自动审核 | 进阶用户 |
full |
AI 想干什么都行 | 只给你自己信任的环境用 |
设置白名单
tools:
exec:
mode: "allowlist"
allowlist:
- "ls"
- "cat"
- "pwd"
- "git status"
- "python3"
- "node"
这样 AI 就只能执行这些命令。如果 AI 想执行 rm -rf /(删库跑路🚫),会被直接拒绝。
文件访问权限
你还可以限制 AI 能读写哪些文件夹:
agents:
defaults:
fileAccess:
allowedPaths:
- "/Users/wubin/Documents"
- "/Users/wubin/Projects"
deniedPaths:
- "/Users/wubin/Documents/secret"
[截图:配置文件中的 tools.exec 设置]
19.3 沙箱(Sandbox)
沙箱是把 AI 关在一个"隔离箱子"里运行。就算 AI 在里面搞破坏,也影响不到外面的系统。
开启沙箱
agents:
defaults:
sandbox: "require"
沙箱做了什么?
- 文件隔离:AI 只能在沙箱目录里读写文件
- 进程隔离:AI 跑的命令在独立环境里执行
- 网络限制:可以限制 AI 能不能访问外网
沙箱模式说明
| 模式 | 效果 |
|---|---|
off |
不隔离,AI 直接操作你的电脑 |
isolate |
基本隔离,限制文件访问 |
require |
⭐ 严格隔离,推荐开发和测试用 |
用 Docker 做沙箱
如果你想让沙箱更严格,可以用 Docker:
# 以只读方式运行 Docker
docker run --read-only --cap-drop=ALL \
--security-opt=no-new-privileges \
openclaw/openclaw
这基本上就是"放进铁箱子里再锁三道锁"的程度了 🔐
检查沙箱状态
openclaw sandbox explain
这个命令会告诉你当前沙箱的生效情况。
19.4 工具权限
除了命令执行,AI 还用各种工具(Skills)。每个工具都需要权限。
最小权限原则
核心思想:只给 AI 它需要的东西,不多给。
比如你的 AI 只是用来写文章的,那就不要给它访问 GitHub 的权限。
配置工具权限
tools:
# 列出允许使用的工具
allowed:
- web_search
- web_fetch
- write
- read
# 明确禁止的工具
denied:
- exec # 不准执行命令
- memory_delete # 不准删记忆
- file_trash # 不准扔文件
Skills 的权限
从 ClawHub 安装的每个 Skill 都可以声明自己需要的权限。安装时会提示你:
正在安装 skill: "github-manager"
该 skill 需要以下权限:
✓ 读写 /Users/wubin/Projects
✓ 执行 git 命令
✗ 网络访问外网
是否允许?(y/n) >
[截图:安装 Skill 时显示权限请求的提示]
⚠️ 安全提示:从 ClawHub 安装技能时,把它当"陌生人给的软件"——验证来源可靠再安装。
19.5 Tailscale 远程访问
如果你需要从外面访问家里的 OpenClaw,千万不要直接暴露端口到公网!用 Tailscale 吧。
为什么用 Tailscale?
- 🔒 加密通信(WireGuard 协议)
- 🚪 不用开放任何端口
- ✅ 零配置
- 📱 手机也能连
设置 Tailscale
第一步:安装 Tailscale
# macOS
brew install tailscale
sudo tailscale up --ssh
# Linux
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh
第二步:在 OpenClaw 中启用
# openclaw.yaml
tailscale:
mode: "serve" # 在 Tailscale 网络中暴露服务
funnel: false # 不要暴露到公网
第三步:从外部访问
你手机的 Tailscale 连上同一账号后,就可以用 Tailscale 地址访问了:
https://openclaw.your-tailnet-name.ts.net/
[截图:Tailscale 管理界面显示已连接的设备]
加固 VPS
如果你把 OpenClaw 部署在云服务器上:
# 用 UFW 防火墙,只允许 Tailscale 流量
sudo ufw default deny incoming
sudo ufw allow in on tailscale0
sudo ufw enable
这样外面的人根本扫不到你的端口。完美隐身 👻
19.6 审计(Audit)
OpenClaw 自带了审计工具,可以检查你的安全配置有没有漏洞。
运行安全审计
openclaw security audit
运行后你会看到类似这样的输出:
🔍 OpenClaw 安全审计报告
━━━━━━━━━━━━━━━━━━━━━━━━
✓ Gateway 未暴露到公网
✓ 工具执行模式为 allowlist
✓ 文件隔离已启用
⚠ 沙箱未开启 (建议开启)
✗ 配置文件权限为 755 (建议 600)
━━━━━━━━━━━━━━━━━━━━━━━━━━
建议修复的问题:
1. 运行 chmod 600 openclaw.yaml
2. 开启沙箱:sandbox: "require"
深度审计
# 更深入的检查
openclaw security audit --deep
# 自动修复一些问题(谨慎使用)
openclaw security audit --fix
# 输出 JSON 格式结果
openclaw security audit --json
Doctor 诊断
# 自动检测并修复常见问题
openclaw doctor
我们第 22 章会详细讲这个。
审计报告里的常见问题
| 检查项目 | 说明 |
|---|---|
gateway.bind_no_auth |
网关没有认证,非常危险 |
tools.exec.security_full_configured |
执行权限未配置 |
state.file_perms |
配置文件权限过松 |
sandbox.not_enabled |
沙箱未开启 |
19.7 安全最佳实践清单
✅ 日常安全检查表:
□ 工具执行模式不是 full
□ 已经开启沙箱
□ 配置文件权限是 600
□ 没有暴露端口到公网
□ 定期运行 openclaw security audit
□ 从 ClawHub 安装前验证技能来源
□ 手机配对了?确认只连自己的
□ 不要用 root 账号跑 OpenClaw
□ 给 AI 的 API key 是只读的(如果支持)
19.8 本章小结
安全不是一次性的,而是持续的习惯:
| 功能 | 做什么 | 一句话口诀 |
|---|---|---|
| Policy 系统 | 给 AI 定规矩 | 能做什么不能做什么 |
| 沙箱 | 隔离运行环境 | 关起来更安全 |
| 工具权限 | 限制工具使用 | 只给需要的 |
| Tailscale | 安全远程访问 | 别开端口用 VPN |
| 审计 | 检查安全漏洞 | 定期体检 |
记住:AI 再聪明,也要拴根绳子。
下一章我们来整点硬核的——自动化!🚀
系统教程,帮你把工具用好,再回到任务中。 浏览任务方案 →