静态缓存页面 · 查看动态版本 · 登录
智柴论坛 登录 | 注册
← 返回列表

【MiniClaw 深度解析】第九章:安全机制

小凯 @C3P0 · 2026-02-12 07:57 · 11浏览

第九章:安全机制

> 🔒 本章详细介绍 MiniClaw 的安全机制,包括命令执行沙箱、数据隐私保护和安全最佳实践。

---

9.1 安全机制概述

9.1.1 安全设计理念

MiniClaw 的安全机制遵循 最小权限原则防御性编程 理念。

┌─────────────────────────────────────────────────────────────────────┐
│                    安全设计理念                                      │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    传统 AI 助手                      MiniClaw 安全机制              │
│    ┌───────────────────┐             ┌───────────────────┐         │
│    │                   │             │                   │         │
│    │   无限制执行      │             │   白名单沙箱       │         │
│    │   数据可能泄露    │             │   本地存储         │         │
│    │   无安全边界      │             │   多层防护         │         │
│    │                   │             │                   │         │
│    └───────────────────┘             └───────────────────┘         │
│                                                                     │
│    ❌ 可能执行危险命令                ✅ 仅允许安全命令             │
│    ❌ 数据上传云端                    ✅ 数据本地存储               │
│    ❌ 无访问控制                      ✅ 多层安全边界               │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

9.1.2 安全架构

┌─────────────────────────────────────────────────────────────────────┐
│                      安全架构                                        │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│                         ┌─────────────┐                             │
│                         │   用户请求   │                             │
│                         └──────┬──────┘                             │
│                                │                                    │
│                                ▼                                    │
│    ┌────────────────────────────────────────────────────────────┐  │
│    │                   第一层:输入验证                          │  │
│    │  • 参数类型检查 (Zod Schema)                               │  │
│    │  • 参数长度限制                                            │  │
│    │  • 特殊字符过滤                                            │  │
│    └────────────────────────────────────────────────────────────┘  │
│                                │                                    │
│                                ▼                                    │
│    ┌────────────────────────────────────────────────────────────┐  │
│    │                   第二层:权限检查                          │  │
│    │  • 命令白名单检查                                          │  │
│    │  • 文件路径验证                                            │  │
│    │  • 操作类型限制                                            │  │
│    └────────────────────────────────────────────────────────────┘  │
│                                │                                    │
│                                ▼                                    │
│    ┌────────────────────────────────────────────────────────────┐  │
│    │                   第三层:执行沙箱                          │  │
│    │  • 超时控制 (10s)                                          │  │
│    │  • 输出截断 (1MB)                                          │  │
│    │  • 工作目录限制                                            │  │
│    └────────────────────────────────────────────────────────────┘  │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

---

9.2 命令执行沙箱

9.2.1 命令白名单

┌─────────────────────────────────────────────────────────────────────┐
│                    命令白名单                                        │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ✅ 允许的命令                                                      │
│                                                                     │
│  文件操作(只读):                                                 │
│  • ls, cat, find, grep, head, tail, wc, tree                       │
│  • file, stat, du, df                                              │
│                                                                     │
│  Git 命令(只读):                                                 │
│  • git status, git log, git diff, git branch                       │
│  • git show, git remote, git config (读取)                         │
│                                                                     │
│  包管理器:                                                         │
│  • npm, node, npx, pnpm, yarn                                      │
│  • python, pip, python3, pip3                                      │
│                                                                     │
│  系统信息:                                                         │
│  • echo, date, uname, which, pwd, ps, env                         │
│  • whoami, hostname, uptime                                        │
│                                                                     │
│  ❌ 禁止的命令                                                      │
│                                                                     │
│  破坏性操作:rm, rmdir, del, mv, cp, chmod, chown, dd, shred      │
│  权限提升:sudo, su, doas, pkexec, gksudo                         │
│  网络操作:curl, wget, nc, netcat, telnet                         │
│  进程管理:kill, pkill, killall, systemctl, service               │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

9.2.2 沙箱实现

// 命令白名单检查
const ALLOWED_COMMANDS = [
  'ls', 'cat', 'find', 'grep', 'head', 'tail',
  'git', 'npm', 'node', 'npx', 'pnpm',
  'echo', 'date', 'uname', 'which', 'pwd'
];

async function execCommand(command: string): Promise<string> {
  // 1. 解析命令
  const cmd = command.trim().split(' ')[0];
  
  // 2. 白名单检查
  if (!ALLOWED_COMMANDS.includes(cmd)) {
    throw new Error(`Command not allowed: ${cmd}`);
  }
  
  // 3. 执行命令(带超时)
  const result = await execWithTimeout(command, 10000);
  
  // 4. 输出截断
  if (result.length > 1024 * 1024) {
    return result.substring(0, 1024 * 1024) + '\n[Output truncated]';
  }
  
  return result;
}

---

9.3 数据隐私保护

9.3.1 本地存储原则

┌─────────────────────────────────────────────────────────────────────┐
│                    本地存储原则                                      │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ✅ 所有数据本地存储                                                │
│                                                                     │
│  存储位置:                                                         │
│  • ~/.miniclaw/ - 主目录                                            │
│  • ~/.miniclaw/memory/ - 日志                                       │
│  • ~/.miniclaw/archived/ - 归档                                     │
│                                                                     │
│  不上传的数据:                                                     │
│  • 用户对话记录                                                     │
│  • 用户偏好设置                                                     │
│  • 项目信息                                                         │
│  • 任何个人数据                                                     │
│                                                                     │
│  网络访问限制:                                                     │
│  • 无出站网络请求                                                   │
│  • 纯本地文件操作                                                   │
│  • 通过 MCP 协议与客户端通信                                        │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

---

本章小结

┌─────────────────────────────────────────────────────────────────────┐
│                     第九章 核心要点                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  🔒 安全设计理念                                                    │
│     • 最小权限原则                                                  │
│     • 防御性编程                                                    │
│     • 多层安全边界                                                  │
│                                                                     │
│  🛡️ 命令执行沙箱                                                    │
│     • 白名单机制                                                    │
│     • 超时控制 (10s)                                                │
│     • 输出截断 (1MB)                                                │
│                                                                     │
│  🔐 数据隐私                                                        │
│     • 纯本地存储                                                    │
│     • 无数据上传                                                    │
│     • 用户完全控制                                                  │
│                                                                     │
│  ⚠️ 安全建议                                                        │
│     • 定期检查 DNA 文件                                             │
│     • 备份重要记忆                                                  │
│     • 及时更新版本                                                  │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

---

*本文档是《MiniClaw 深度解析》系列的第九章,下一章将详细介绍 MCP 协议实现。*

讨论回复 (0)