适用于 OpenClaw v2026.2 | 本文适合所有 OpenClaw 用户,特别是准备生产部署或团队使用的用户。
TL;DR: DM 配对防止未授权访问:"dmPolicy": "pairing"。沙箱隔离危险操作:"sandbox": {"mode": "non-main"}。敏感数据过滤:"security": {"sensitiveData": {"patterns": ["sk-*"]}}。远程访问用 Tailscale 而非公网暴露。运行 openclaw doctor --security 检查安全状态。
安全风险概述
主要风险类型
| 风险类型 | 说明 | 潜在后果 |
|---|---|---|
| 未授权访问 | 陌生人可以使用你的 Agent | 资源滥用、隐私泄露 |
| 权限滥用 | Agent 执行超出预期的操作 | 数据损坏、系统破坏 |
| 数据泄露 | 敏感信息被不当处理 | 隐私泄露、合规问题 |
| 网络攻击 | 外部攻击者利用漏洞 | 系统入侵、数据窃取 |
| Prompt 注入 | 恶意指令绕过安全限制 | 未授权操作 |
安全模型
flowchart TB
subgraph 外层["网络层"]
FW[防火墙]
TLS[HTTPS/TLS]
end
subgraph 中层["访问控制"]
DM[DM 配对]
WL[白名单]
AUTH[认证]
end
subgraph 内层["执行控制"]
SBX[沙箱]
PERM[权限]
AUDIT[审计]
end
subgraph 核心["Agent"]
AG[Agent 核心]
end
外层 --> 中层 --> 内层 --> 核心
DM 配对机制
什么是 DM 配对?
DM(Direct Message)配对是一种保护机制,要求新用户先完成配对才能与 Agent 对话。
配对流程
sequenceDiagram
participant S as 陌生人
participant B as Bot
participant G as Gateway
participant O as 所有者
S->>B: 发送消息 "你好"
B->>G: 消息到达
G->>G: 检查配对状态
G-->>B: 未配对,生成配对码
B-->>S: "请配对:配对码 ABC123"
S->>O: 告诉所有者配对码
O->>G: openclaw pairing approve telegram ABC123
G->>G: 添加到白名单
G-->>S: 配对成功
S->>B: 发送消息 "你好"
B-->>S: 正常响应
配置 DM 配对
{
"channels": {
"telegram": {
"botToken": "your_token",
"dmPolicy": "pairing"
},
"whatsapp": {
"dmPolicy": "pairing"
},
"discord": {
"dmPolicy": "pairing"
}
}
}
配对模式
| 模式 | 说明 | 安全级别 | 适用场景 |
|---|---|---|---|
pairing |
需要配对码 | ⭐⭐⭐⭐ | 个人使用(默认) |
open |
任何人可用 | ⭐ | 公开服务 |
whitelist |
仅白名单用户 | ⭐⭐⭐⭐⭐ | 高安全需求 |
配对管理
# 查看待配对请求
openclaw pairing list
# 输出示例:
# Channel Code User Created
# telegram ABC123 @stranger 2026-02-26 10:30:00
# discord XYZ789 user#1234 2026-02-26 10:35:00
# 批准配对
openclaw pairing approve telegram ABC123
# 拒绝配对
openclaw pairing reject telegram ABC123
# 查看已配对用户
openclaw pairing show telegram
白名单配置
{
"channels": {
"telegram": {
"dmPolicy": "open",
"allowFrom": [
123456789,
987654321
]
},
"whatsapp": {
"dmPolicy": "open",
"allowFrom": [
"+8613800138000",
"+8613800138001"
]
}
}
}
获取用户 ID
# Telegram: 向 @userinfobot 发送消息
# Discord: 在频道中使用 /id 命令或查看用户资料
# WhatsApp: 从联系人信息中获取
沙箱模式
什么是沙箱?
沙箱是一种隔离机制,限制 Agent 的操作范围,防止意外或恶意的系统修改。
沙箱模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
off |
无沙箱,完全信任 | 主会话、可信环境 |
non-main |
非主会话启用沙箱 | 多用户、团队共享 |
always |
始终启用沙箱 | 不信任环境、公开服务 |
配置沙箱
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": ["read", "write", "edit", "bash"],
"denylist": ["browser", "canvas", "nodes"],
"container": {
"image": "openclaw/sandbox:latest",
"timeout": 30000,
"memory": "512m",
"cpu": "0.5"
}
}
}
}
}
工具权限控制
{
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main",
"allowlist": [
"read",
"write",
"edit",
"bash",
"web_search",
"sessions_list",
"sessions_history",
"sessions_send"
],
"denylist": [
"browser",
"canvas",
"nodes",
"cron",
"discord",
"gateway"
]
}
}
}
}
文件系统权限
{
"agents": {
"defaults": {
"permissions": {
"filesystem": {
"read": ["~/workspace", "~/documents"],
"write": ["~/workspace/output"],
"deny": ["~/.ssh", "~/.gnupg", "~/.openclaw/credentials"]
}
}
}
}
}
网络权限
{
"agents": {
"defaults": {
"permissions": {
"network": {
"outbound": {
"allow": [
"api.anthropic.com",
"api.openai.com",
"github.com"
],
"deny": ["*"]
}
}
}
}
}
}
Elevated 权限
什么是 Elevated 权限?
Elevated 权限是临时提升权限的机制,用于需要更高权限的操作。
配置 Elevated 权限
{
"agents": {
"defaults": {
"elevatedAccess": {
"enabled": true,
"allowlist": [123456789, 987654321],
"requireConfirmation": true,
"timeout": 300000
}
}
}
}
使用 Elevated 权限
# 在聊天中请求提升权限
/elevated on
# 执行需要提升权限的操作
# ...
# 关闭提升权限
/elevated off
敏感数据处理
敏感信息类型
| 类型 | 示例 | 处理方式 |
|---|---|---|
| API Keys | sk-ant-xxx, sk-xxx |
不记录、不输出 |
| 密码 | 登录密码、数据库密码 | 不存储、不传输 |
| Token | OAuth token、Session token | 加密存储 |
| 个人信息 | 身份证、银行卡 | 不记录、匿名化 |
配置敏感信息过滤
{
"security": {
"sensitiveData": {
"patterns": [
"sk-[a-zA-Z0-9]{20,}",
"xox[baprs]-[a-zA-Z0-9-]+",
"[0-9]{15,19}",
"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
],
"redact": true,
"log": false
}
}
}
凭据存储
# 凭据存储位置
~/.openclaw/credentials/
# 加密存储
# OpenClaw 使用系统钥匙串加密存储敏感凭据
凭据管理
# 查看已存储的凭据
openclaw credentials list
# 输出示例:
# Name Type Created
# telegram-bot api_key 2026-02-20
# gmail-oauth oauth 2026-02-21
# 删除凭据
openclaw credentials delete telegram-bot
# 导出凭据(加密)
openclaw credentials export --output credentials.enc
# 导入凭据
openclaw credentials import --input credentials.enc
网络安全
绑定配置
{
"gateway": {
"bind": "loopback", // 仅本地访问
"port": 18789,
"tls": {
"enabled": false
}
}
}
| 绑定选项 | 说明 | 安全级别 |
|---|---|---|
loopback |
仅本地访问 | ⭐⭐⭐⭐⭐ |
private |
私有网络访问 | ⭐⭐⭐⭐ |
all |
所有接口访问 | ⭐ |
Tailscale 配置
{
"gateway": {
"tailscale": {
"mode": "serve", // serve 或 funnel
"resetOnExit": true
},
"auth": {
"mode": "password",
"allowTailscale": true
}
}
}
认证配置
{
"gateway": {
"auth": {
"mode": "password",
"password": "your-secure-password",
"sessionTimeout": 3600000
}
}
}
审计与日志
操作日志
{
"logging": {
"level": "info",
"audit": {
"enabled": true,
"events": [
"tool.invoke",
"session.create",
"session.reset",
"pairing.approve",
"pairing.reject",
"elevated.enable",
"elevated.disable"
],
"retention": 30
}
}
}
查看审计日志
# 查看审计日志
openclaw logs --type audit
# 输出示例:
# [2026-02-26 10:30:00] INFO tool.invoke session=main tool=bash command="ls -la"
# [2026-02-26 10:30:05] INFO pairing.approve channel=telegram code=ABC123 user=123456789
# [2026-02-26 10:31:00] INFO elevated.enable session=telegram:user:123456789
# 过滤特定事件
openclaw logs --type audit --filter "tool.invoke"
# 按时间范围
openclaw logs --type audit --from 2026-02-01 --to 2026-02-28
使用情况监控
# 查看使用情况
openclaw usage --today
# 输出示例:
# Date: 2026-02-26
# Requests: 128
# Tokens In: 125,000
# Tokens Out: 45,000
# Cost: $2.10
# Top Tools: bash(45), read(32), write(18)
# 异常检测
openclaw usage --alerts
# 输出示例:
# ⚠️ High usage detected: 1000+ requests in 1 hour
# ⚠️ Unusual tool pattern: bash commands to sensitive directories
安全检查清单
基础安全
- 启用 DM 配对或白名单
- 配置沙箱模式
- 设置合理的工具权限
- 启用操作审计日志
- 定期更换 API Key
高级安全
- 配置文件系统权限限制
- 设置网络出站白名单
- 启用敏感信息过滤
- 配置 Elevated 权限确认
- 定期审查配对用户
企业级安全
- 使用 Docker 沙箱隔离
- 配置 Tailscale 私有网络
- 启用 HTTPS/TLS
- 设置使用量告警
- 定期安全审计
安全诊断
# 运行安全诊断
openclaw doctor --security
# 输出示例:
# ✅ DM Pairing: Enabled
# ✅ Sandbox Mode: non-main
# ⚠️ File Permissions: Some directories not restricted
# ✅ Network Outbound: Restricted to allowlist
# ⚠️ Elevated Access: No confirmation required
# ✅ Audit Logging: Enabled
# ✅ Credentials: Encrypted
# 建议:
# - Restrict file access to ~/workspace only
# - Enable elevated access confirmation
小结
安全配置是 OpenClaw 部署的重要环节:
- DM 配对:防止未授权访问
- 沙箱模式:限制操作范围
- 权限控制:精细化的工具和文件权限
- 敏感数据:过滤和保护敏感信息
- 网络安全:绑定和认证配置
- 审计日志:追踪和监控操作
本篇小结:
- 理解了主要安全风险和防护机制
- 掌握了 DM 配对和白名单配置
- 学会了沙箱模式和权限控制
- 了解了敏感数据处理和网络配置
- 掌握了审计日志和安全检查清单
更新记录:
- 2026-02-26:初版发布,基于 OpenClaw v2026.2
系列导航:
- ← 上一篇:多 Agent 路由与会话隔离
- → 下一篇:远程部署方案