E6 · 进阶深入

安全边界与权限:沙箱机制与安全最佳实践

2026-07-27

AI 助手能读写文件、执行命令、访问网络——这些强大能力的反面是安全风险。WorkBuddy 从架构层面构建了多层安全防线:沙箱隔离、权限声明、操作确认、审计追踪。理解这些机制,不仅能让你用得更安心,还能通过合理配置在安全与效率之间找到最佳平衡点。

🏖️沙箱隔离机制

WorkBuddy 的所有代码执行和工具调用都在沙箱中运行,与宿主系统隔离:

文件系统沙箱

WorkBuddy 的文件操作被限制在工作区内:

# 默认工作区
workbuddy.workdir = /path/to/your/project

# 文件访问规则
✅ 允许:读取/写入工作区内文件
✅ 允许:在工作区内创建/删除文件
❌ 拒绝:访问工作区外的文件(如 ~/.ssh/、/etc/)
❌ 拒绝:访问 .env、credentials、*.key 等敏感文件
❌ 拒绝:符号链接跳出工作区

可以通过配置扩展或收缩工作区范围:

// .workbuddy/config.json
{
  "security": {
    "workspace": {
      "roots": ["./src", "./tests", "./docs"],
      "deny_patterns": [
        "**/.env*",
        "**/credentials*",
        "**/*.pem",
        "**/*.key",
        "**/secrets/**"
      ],
      "allow_outside_read": [
        "/usr/share/dictionaries"
      ]
    }
  }
}

进程沙箱

WorkBuddy 执行的子进程受到资源限制:

// 进程沙箱配置
{
  "security": {
    "subprocess": {
      "timeout": 30,
      "max_memory": "512MB",
      "network": "whitelist",
      "network_whitelist": [
        "api.github.com",
        "registry.npmjs.org",
        "pypi.org"
      ],
      "max_processes": 1,
      "forbidden_commands": [
        "rm -rf /",
        "format",
        "del /s /q C:",
        "shutdown",
        "reboot"
      ]
    }
  }
}

网络沙箱

WorkBuddy 的网络访问遵循最小必要原则

🔒

默认禁止

新安装的 Skill 默认无网络权限,需显式声明和用户授权

📋

白名单模式

只允许访问声明的域名列表,防止数据外泄到未知服务器

🔍

请求审计

所有网络请求记录到审计日志,包含 URL、方法、数据大小

🚫

内容过滤

上传内容自动检测敏感信息(API Key、密码、Token),命中则阻止

⚠️高危操作确认流程

某些操作风险较高,WorkBuddy 会暂停执行并请求用户确认

高危操作分级

级别操作类型默认行为示例
Critical不可逆删除必须确认rm -rf、DROP TABLE、格式化磁盘
High批量修改/删除必须确认删除 10+ 文件、批量数据库更新、发送全员消息
Medium外部通信可配置发送 HTTP 请求、推送 Git 提交、部署服务
Low本地修改自动执行创建文件、修改代码、安装依赖

确认交互

当 WorkBuddy 遇到高危操作时,会展示操作详情并等待确认:

⚠️ 高危操作确认

操作:删除文件
目标:src/legacy/ 目录下 23 个文件
原因:这些文件已被新模块替代,不再使用

影响分析:
- 无其他文件引用这些模块(已验证)
- 无测试依赖这些文件(已验证)
- 删除后不可恢复(未启用版本控制快照)

[确认执行] [查看文件列表] [取消] [修改为移动到归档目录]

自动确认策略

对于信任的操作,可以配置自动确认以减少交互:

// .workbuddy/config.json
{
  "security": {
    "auto_confirm": {
      "rules": [
        {
          "match": { "operation": "file_delete", "path": "tests/tmp/**" },
          "action": "allow",
          "reason": "测试临时文件,可安全删除"
        },
        {
          "match": { "operation": "git_push", "branch": "feature/*" },
          "action": "allow",
          "reason": "功能分支推送,非主分支"
        },
        {
          "match": { "operation": "subprocess", "command": "npm test" },
          "action": "allow",
          "reason": "测试命令,无副作用"
        }
      ],
      "default": "confirm"
    }
  }
}

🔑授权管理

Skill 权限声明

每个 Skill 在 manifest.json 中声明所需权限,安装时用户可审查:

// manifest.json
{
  "permissions": {
    "filesystem": {
      "access": "readwrite",
      "scope": "./project/**"
    },
    "network": {
      "access": "whitelist",
      "domains": ["api.github.com", "api.npmjs.org"]
    },
    "subprocess": {
      "access": "restricted",
      "allowed": ["node", "python3", "git"],
      "max_timeout": 60
    },
    "clipboard": false,
    "notifications": true
  }
}

安装 Skill 时,WorkBuddy 会展示权限摘要:

📦 安装 Skill: code-reviewer v1.2.0

权限请求:
  📁 文件系统:读写当前项目目录
  🌐 网络:访问 api.github.com
  ⚙️ 子进程:运行 node, git(最长 60 秒)
  📋 剪贴板:无
  🔔 通知:允许

[信任并安装] [自定义权限] [取消]

运行时权限降级

即使 Skill 声明了权限,运行时也可以进一步限制:

# 临时以只读模式运行 Skill
/skills run code-reviewer --readonly

# 临时禁止网络访问
/skills run code-reviewer --no-network

# 限制文件访问范围
/skills run code-reviewer --scope ./src/**

🛡️数据安全

敏感信息检测

WorkBuddy 在多个环节自动检测和拦截敏感信息:

// 敏感信息规则(可自定义)
{
  "security": {
    "sensitive_patterns": [
      { "name": "AWS Access Key", "pattern": "AKIA[0-9A-Z]{16}" },
      { "name": "GitHub Token", "pattern": "gh[pousr]_[A-Za-z0-9_]{36}" },
      { "name": "Private Key", "pattern": "-----BEGIN (RSA |EC )?PRIVATE KEY-----" },
      { "name": "JWT", "pattern": "eyJ[A-Za-z0-9_-]*\\.eyJ[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]*" },
      { "name": "Generic Secret", "pattern": "(password|secret|token|api_key)\\s*[:=]\\s*['\"]?[^'\"\\s]{8,}" }
    ]
  }
}

数据驻留

WorkBuddy 支持配置数据不出域策略:

📋审计与可观测性

所有操作记录到审计日志,支持事后追溯:

# 查看审计日志
/security audit-log

# 输出示例
[2026-07-27 14:32:01] FILE_READ    src/api/users.py         (by: code-reviewer)
[2026-07-27 14:32:02] FILE_WRITE   src/api/users.py         (by: code-reviewer, +12/-3 lines)
[2026-07-27 14:32:05] SUBPROCESS   npm test                 (by: test-runner, exit: 0)
[2026-07-27 14:32:08] NETWORK_GET  api.github.com/repos/... (by: git-helper, 2.3KB)
[2026-07-27 14:32:10] FILE_DELETE  tests/tmp/mock.data.json (by: test-runner, confirmed)

# 按时间范围查看
/security audit-log --from 2026-07-27 --to 2026-07-27

# 按操作类型过滤
/security audit-log --type FILE_DELETE,SUBPROCESS

# 导出审计报告
/security audit-log --export audit-2026-07.csv

安全最佳实践

📚 参考资料

💬 你对 WorkBuddy 有什么疑问?或者已经在用了,有什么心得想分享?欢迎在下方留言讨论!