OpenClaw 安全与访问控制:保护你的 AI 助手

OpenClaw 安全与访问控制:保护你的 AI 助手 📚 AI 工具使用教程 ⏱️ 阅读时间:约 20 分钟 💡安全是部署 AI 助手的首要考虑。本文深入讲解 OpenClaw 的安全机制,包括配对码系统、白名单配置、权限控制、审计日志等。无论你是个人用户还是企业管理员,都能找到适合的安全配置方案…

OpenClaw 安全与访问控制:保护你的 AI 助手

💡

安全是部署 AI 助手的首要考虑。本文深入讲解 OpenClaw 的安全机制,包括配对码系统、白名单配置、权限控制、审计日志等。无论你是个人用户还是企业管理员,都能找到适合的安全配置方案。

# OpenClaw 安全与访问控制:保护你的 AI 助手


一、安全威胁模型

1.1 潜在风险

风险类型 说明 影响程度
未授权访问
陌生人使用你的 AI 助手

高 数据泄露 敏感信息被 AI 记录或发送 高 权限滥用 AI 执行危险操作 高 提示注入
恶意用户操控 AI 行为 中 资源耗尽 大量请求导致服务不可用 中

1.2 安全设计原则

1. 最小权限:只授予必要的访问权限
2. 默认拒绝:未明确允许的都应拒绝
3. 深度防御:多层安全措施
4. 审计追踪:记录所有操作日志


二、配对码系统

2.1 配对码工作原理

新用户发送消息
      ↓
Gateway 生成配对码(1 小时有效)
      ↓
发送配对码给新用户
      ↓
管理员审批(approve/reject)
      ↓
审批通过 → 添加到允许列表
审批拒绝 → 保持拒绝

2.2 配置配对码

{
  channels: {
    whatsapp: {
      dmPolicy: "pairing",  // 启用配对码
      allowFrom: ["+8613800138000"]  // 管理员号码
    }
  }
}

2.3 管理配对请求

查看待审批请求:

openclaw pairing list whatsapp

输出示例:

Pending pairing requests for whatsapp:
  Code: ABC123  From: +8613900139000  Expires: 2026-03-23 15:30:00
  Code: DEF456  From: +8614000140000  Expires: 2026-03-23 16:00:00

审批请求:

批准

openclaw pairing approve whatsapp ABC123

拒绝

openclaw pairing reject whatsapp DEF456

2.4 配对码配置选项

{
  channels: {
    whatsapp: {
      pairing: {
        expiryHours: 1,      // 配对码有效期(小时)
        maxPending: 3,       // 最大待审批数量
        autoApprove: false   // 是否自动审批(不推荐)
      }
    }
  }
}

三、白名单配置

3.1 通道白名单

WhatsApp:

{
  channels: {
    whatsapp: {
      dmPolicy: "allowlist",  // 只允许白名单
      allowFrom: [
        "+8613800138000",  // 本人
        "+8613900139000",  // 家人
        "+8614000140000"   // 信任的同事
      ]
    }
  }
}

Telegram:

{
  channels: {
    telegram: {
      dmPolicy: "allowlist",
      allowFrom: [
        "tg:123456789",     // 用户 ID(推荐)
        "@username"         // 用户名
      ]
    }
  }
}

Discord:

{
  channels: {
    discord: {
      dm: {
        enabled: true,
        policy: "allowlist",
        allowFrom: [
          "123456789012345678"  // 用户 ID
        ]
      }
    }
  }
}

3.2 群组白名单

允许特定群组:

{
  channels: {
    whatsapp: {
      groupPolicy: "allowlist",
      groupAllowFrom: [
        "120363403215116621@g.us"  // 群组 JID
      ]
    },
    telegram: {
      groups: {
        "-1001234567890": { allow: true },  // 群组 ID
        "@public-group": { allow: false }    // 拒绝特定群组
      }
    }
  }
}

3.3 通配符配置

允许所有人(不推荐):

{
  channels: {
    whatsapp: {
      dmPolicy: "open",
      allowFrom: [""]  // 允许所有用户
    }
  }
}

禁止所有群组:

{
  channels: {
    whatsapp: {
      groupPolicy: "disabled"  // 禁止所有群组
    }
  }
}

四、工具权限控制

4.1 工具权限级别

权限级别 允许的工具 适用场景 完全访问
所有工具 | 个人使用 |

| 只读访问

| read, sessions_, message | 工作场景 |

| 无文件系统

| message, web_ | 公共场景 |

| 仅会话

| sessions_list, sessions_history | 监控场景 |

4.2 配置工具权限

完全访问:

{
  agents: {
    list: [
      {
        id: "personal",
        tools: {
          allow: [""]  // 允许所有工具
        }
      }
    ]
  }
}

只读访问:

{
  agents: {
    list: [
      {
        id: "work",
        tools: {
          allow: [
            "read",
            "sessions_list",
            "sessions_history",
            "sessions_send",
            "message",
            "web_search",
            "web_fetch"
          ],
          deny: [
            "write",
            "edit",
            "exec",
            "process",
            "browser"
          ]
        }
      }
    ]
  }
}

无文件系统访问:

{
  agents: {
    list: [
      {
        id: "public",
        sandbox: {
          workspaceAccess: "none"
        },
        tools: {
          allow: [
            "sessions_list",
            "message",
            "web_search"
          ]
        }
      }
    ]
  }
}

4.3 沙箱配置

沙箱模式:

{
  agents: {
    list: [
      {
        id: "sandboxed",
        sandbox: {
          mode: "all",           // off | non-main | all
          scope: "session",      // session | agent | shared
          workspaceAccess: "ro", // none | ro | rw
          workspaceRoot: "~/.openclaw/sandbox"
        }
      }
    ]
  }
}

五、命令安全

5.1 命令配置

{
  commands: {
    native: "auto",      // 自动注册原生命令
    text: true,          // 解析文本命令
    bash: false,         // 禁止 shell 命令
    config: false,       // 禁止配置修改
    debug: false,        // 禁止调试命令
    restart: false,      // 禁止重启命令
    allowFrom: {
      "": ["123456789"]  // 只允许特定用户执行命令
    }
  }
}

5.2 命令白名单

允许特定用户执行所有命令:

{
  commands: {
    allowFrom: {
      "whatsapp": ["+8613800138000"],
      "telegram": ["tg:123456789"],
      "discord": ["123456789012345678"]
    }
  }
}

禁止特定命令:

{
  commands: {
    bash: false,    // 禁止 shell 命令
    config: false   // 禁止配置修改
  }
}

六、审计与监控

6.1 启用详细日志

{
  logging: {
    level: "debug",  // info | debug | trace
    redactSensitive: "tools",  // off | tools
    redactPatterns: [
      "\\bTOKEN\\b\\s[=:]\\s([\"']?)([^\\s\"']+)\\1",
      "/\\bsk-[A-Za-z0-9_-]{8,}\\b/gi"
    ]
  }
}

6.2 查看日志

实时查看日志

openclaw logs --follow

查看特定级别

openclaw logs --level error

查看最近 N 行

openclaw logs --tail 100

6.3 审计关键操作

记录所有命令执行:

{
  logging: {
    auditCommands: true,
    auditToolUse: true
  }
}

查看审计日志:

grep "command executed" /tmp/openclaw/openclaw-.log
grep "tool used" /tmp/openclaw/openclaw-*.log

七、安全最佳实践

7.1 个人用户

1. ✅ 启用配对码系统
2. ✅ 配置白名单
3. ✅ 禁用 bash 命令
4. ✅ 定期审查日志
5. ✅ 备份配置文件

7.2 企业用户

1. ✅ 多代理隔离
2. ✅ 严格工具权限
3. ✅ 完整审计日志
4. ✅ 定期安全审查
5. ✅ 员工培训计划

7.3 公共部署

1. ✅ 只读访问
2. ✅ 无文件系统权限
3. ✅ 速率限制
4. ✅ 内容过滤
5. ✅ 监控告警


八、安全检查清单

  • [ ] 启用配对码或白名单
  • [ ] 限制工具权限
  • [ ] 禁用危险命令
  • [ ] 启用日志记录
  • [ ] 配置敏感信息脱敏
  • [ ] 定期备份配置
  • [ ] 监控异常活动
  • [ ] 更新到最新版本

九、总结

安全配置优先级:

1. 必须配置:配对码/白名单
2. 强烈推荐:工具权限限制
3. 推荐配置:命令限制、审计日志
4. 可选配置:沙箱、速率限制

关键要点:

  • 默认拒绝,明确允许
  • 最小权限原则
  • 多层防御
  • 持续监控

下一篇预告:《OpenClaw 记忆系统详解:让 AI 真正记住你》

/* 基础样式 */
.article-container {
max-width: 100%;
margin: 0 auto;
padding: 15px;
font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, “PingFang SC”, “Hiragino Sans GB”, “Microsoft YaHei”, sans-serif;
line-height: 1.8;
color: #333;
background: #fff;
}

/* 文章头部 */
.article-header {
border-bottom: 3px solid #4a90e2;
padding-bottom: 20px;
margin-bottom: 25px;
}

.main-title {
font-size: 1.8em;
color: #1a1a1a;
margin-bottom: 12px;
font-weight: 700;
line-height: 1.3;
}

.article-meta {
display: flex;
gap: 12px;
flex-wrap: wrap;
align-items: center;
}

.category-badge {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #fff;
padding: 4px 12px;
border-radius: 16px;
font-size: 0.85em;
font-weight: 500;
}

.read-time {
color: #666;
font-size: 0.85em;
}

/* 导读框 */
.intro-box {
background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%);
border-left: 4px solid #4a90e2;
padding: 18px;
margin: 20px 0;
border-radius: 0 8px 8px 0;
display: flex;
gap: 12px;
align-items: flex-start;
}

.intro-icon {
font-size: 1.8em;
flex-shrink: 0;
}

.intro-text {
margin: 0;
color: #444;
font-size: 1em;
line-height: 1.6;
}

/* 目录 */
.toc-container {
background: #f8f9fa;
border: 1px solid #e9ecef;
border-radius: 8px;
padding: 15px;
margin: 25px 0;
}

.toc-title {
font-size: 1.2em;
color: #333;
margin-bottom: 12px;
font-weight: 600;
}

.toc-list {
list-style: none;
padding: 0;
margin: 0;
}

.toc-list li {
margin: 6px 0;
}

.toc-list a {
color: #4a90e2;
text-decoration: none;
display: block;
padding: 6px 10px;
border-radius: 4px;
font-size: 0.95em;
transition: all 0.2s;
}

.toc-list a:hover {
background: #4a90e2;
color: #fff;
}

/* 文章内容 */
.article-content {
font-size: 1em;
}

.article-title {
font-size: 1.6em;
color: #1a1a1a;
margin: 35px 0 18px;
padding-bottom: 8px;
border-bottom: 2px solid #4a90e2;
}

.section-title {
font-size: 1.4em;
color: #2c3e50;
margin: 30px 0 12px;
padding-left: 12px;
border-left: 4px solid #4a90e2;
}

.subsection-title {
font-size: 1.2em;
color: #34495e;
margin: 22px 0 10px;
}

.subsubsection-title {
font-size: 1.05em;
color: #666;
margin: 18px 0 8px;
}

/* 代码块 – 支持横向滚动 */
.code-wrapper {
margin: 18px 0;
border-radius: 6px;
overflow: hidden;
}

.code-block {
background: #1e1e1e;
padding: 15px;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
margin: 0;
border-radius: 6px;
}

.code-block code {
color: #d4d4d4;
font-family: “Fira Code”, “Consolas”, “Monaco”, monospace;
font-size: 0.85em;
line-height: 1.6;
white-space: pre;
}

.inline-code {
background: #f5f5f5;
color: #e83e8c;
padding: 2px 6px;
border-radius: 3px;
font-family: “Fira Code”, “Consolas”, monospace;
font-size: 0.9em;
}

/* 表格 – 响应式滚动 */
.table-wrapper {
margin: 20px 0;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

.styled-table {
width: 100%;
border-collapse: collapse;
min-width: 600px;
font-size: 0.9em;
}

.styled-table thead {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #fff;
}

.styled-table th {
padding: 12px 15px;
text-align: left;
font-weight: 600;
white-space: nowrap;
}

.styled-table td {
padding: 12px 15px;
border-bottom: 1px solid #e1e4e8;
vertical-align: top;
}

.styled-table tbody tr {
transition: background 0.2s;
}

.styled-table tbody tr:hover {
background: #f8f9fa;
}

.styled-table tbody tr:nth-child(even) {
background: #fafbfc;
}

.styled-table tbody tr:nth-child(odd) {
background: #fff;
}

/* 列表 */
.styled-list {
list-style: none;
padding: 0;
margin: 15px 0;
}

.list-item {
padding: 6px 0 6px 22px;
position: relative;
color: #333;
}

.list-item::before {
content: “•”;
position: absolute;
left: 0;
color: #4a90e2;
font-weight: bold;
font-size: 1.2em;
}

.checkbox-item {
padding: 6px 0 6px 32px;
position: relative;
color: #333;
}

.checkbox-item.checked {
color: #28a745;
}

/* 信息框 */
.info-box {
background: #e8f4fd;
border-left: 4px solid #4a90e2;
padding: 15px;
margin: 18px 0;
border-radius: 0 6px 6px 0;
color: #2c3e50;
}

/* 分隔线 */
.section-divider {
border: none;
height: 2px;
background: linear-gradient(to right, transparent, #4a90e2, transparent);
margin: 35px 0;
}

/* 文章尾部 */
.article-footer {
margin-top: 40px;
padding-top: 25px;
border-top: 2px solid #e9ecef;
}

.tags-section {
margin-bottom: 20px;
}

.tag-label {
font-weight: 600;
color: #666;
margin-right: 8px;
}

.tag {
display: inline-block;
background: #f0f4ff;
color: #4a90e2;
padding: 4px 10px;
border-radius: 12px;
margin: 3px;
font-size: 0.85em;
text-decoration: none;
transition: all 0.2s;
}

.tag:hover {
background: #4a90e2;
color: #fff;
}

.back-to-top {
text-align: center;
padding: 15px;
background: #f8f9fa;
border-radius: 6px;
}

.back-to-top a {
color: #4a90e2;
text-decoration: none;
font-weight: 500;
}

/* 移动端优化 */
@media (max-width: 768px) {
.article-container {
padding: 12px;
}

.main-title {
font-size: 1.4em;
}

.article-title {
font-size: 1.3em;
}

.section-title {
font-size: 1.2em;
}

.code-block {
padding: 12px;
font-size: 0.8em;
}

.styled-table {
font-size: 0.85em;
min-width: 500px;
}

.styled-table th,
.styled-table td {
padding: 10px 12px;
}

.intro-box {
padding: 15px;
}

.intro-icon {
font-size: 1.5em;
}
}

@media (max-width: 480px) {
.main-title {
font-size: 1.3em;
}

.article-meta {
flex-direction: column;
gap: 8px;
}

.category-badge,
.read-time {
font-size: 0.8em;
}

.code-block {
font-size: 0.75em;
padding: 10px;
}

.styled-table {
min-width: 450px;
font-size: 0.8em;
}

.styled-table th,
.styled-table td {
padding: 8px 10px;
}
}

// 移动端表格提示
document.addEventListener(‘DOMContentLoaded’, function() {
var tables = document.querySelectorAll(‘.table-wrapper’);
tables.forEach(function(table) {
if (!table.querySelector(‘.scroll-hint’)) {
var hint = document.createElement(‘div’);
hint.className = ‘scroll-hint’;
hint.innerHTML = ‘👈 左右滑动查看更多’;
hint.style.cssText = ‘text-align:center;padding:8px;background:#f8f9fa;color:#666;font-size:12px;border-radius:0 0 8px 8px;’;
table.parentNode.insertBefore(hint, table.nextSibling);
}
});
});

赞 (0)
AIgeoAIgeo
OpenClaw 多代理路由系统:构建你的 AI 团队
上一篇 2026年3月23日 下午10:40
OpenClaw 记忆系统详解:让 AI 真正记住你
下一篇 2026年3月23日 下午10:43

相关推荐