返回

11. OpenClaw 安全配置最佳实践

安全是 OpenClaw 部署的关键考量。本文详细介绍 DM 配对机制、沙箱模式、权限控制、敏感数据处理、网络安全等安全配置,帮助你构建安全可靠的 AI 助手系统。

适用于 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

系列导航