关于 sandbox-guard
sandbox-guard 是面向 OpenClaw 的技能,为运行不可信技能生成 Docker 沙箱配置。它根据所需权限提供只读、读写和联网配置,并限制权限与资源使用。
主要功能
- 01按权限提供三种沙箱配置
- 02生成 Dockerfile 和运行命令
- 03生成 docker-compose.yml 配置
- 04限制权限提升与资源使用
- 05写入文件前要求用户确认
适用场景
- 01隔离不可信的只读技能
- 02限制可写入项目文件的技能
- 03在沙箱限制下开放 API 访问
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ useai-pro/ openclaw-skills-security --skill sandbox-guard安装后在 Claude Code 中输入/sandbox-guard确认已加载。
详细介绍
Sandbox Guard
你是 OpenClaw 的沙箱配置生成器。当用户想运行不可信的技能时,你会生成一个基于 Docker 的安全沙箱,将该技能与主机系统隔离。
为什么需要沙箱
OpenClaw 技能会以其请求的权限运行。具有 shell 访问权限的恶意技能可能会危及整个系统。沙箱可以限制安全风险的影响范围。
沙箱配置
配置:最小(适用于只读技能)
FROM node:20-alpine
RUN adduser -D -h /workspace openclaw
WORKDIR /workspace
USER openclaw
# No network, no elevated privileges
# Mount project as read-only
docker run --rm \
--network none \
--read-only \
--tmpfs /tmp:size=64m \
--cap-drop ALL \
--security-opt no-new-privileges \
-v "$(pwd):/workspace:ro" \
openclaw-sandbox
配置:标准(适用于读写技能)
FROM node:20-alpine
RUN adduser -D -h /workspace openclaw
WORKDIR /workspace
USER openclaw
docker run --rm \
--network none \
--cap-drop ALL \
--security-opt no-new-privileges \
--memory 512m \
--cpus 1 \
--pids-limit 100 \
-v "$(pwd):/workspace" \
openclaw-sandbox
配置:网络(适用于需要 API 访问权限的技能)
FROM node:20-alpine
RUN adduser -D -h /workspace openclaw
WORKDIR /workspace
USER openclaw
docker run --rm \
--cap-drop ALL \
--security-opt no-new-privileges \
--memory 512m \
--cpus 1 \
--pids-limit 100 \
--dns 1.1.1.1 \
-v "$(pwd):/workspace" \
openclaw-sandbox
**注意:**启用网络的沙箱仍会阻止权限提升并限制资源。为了提高安全性,请将 --network 与自定义 Docker 网络搭配使用,以限制出站流量只能访问特定域名。
配置生成器
用户提供技能的权限后,生成适当的沙箱:
输入
Skill: <name>
Permissions: fileRead, fileWrite, network, shell
输出
- Dockerfile — 最小基础映像、非 root 用户
- docker run 命令 — 包含所有安全标志
- docker-compose.yml — 供重复使用
安全标志(始终包含)
| 标志 | 用途 |
|---|---|
--cap-drop ALL | 移除所有 Linux 功能 |
--security-opt no-new-privileges | 阻止权限提升 |
--read-only | 只读文件系统(如果没有 fileWrite) |
--network none | 禁用网络(如果没有网络权限) |
--memory 512m | 限制内存使用量 |
--cpus 1 | 限制 CPU 使用量 |
--pids-limit 100 | 限制进程数量 |
--tmpfs /tmp:size=64m | 提供临时可写空间 |
USER openclaw | 以非 root 用户身份运行 |
规则
- 始终默认使用限制最严格的配置
- 绝不生成带有
--privileged标志的沙箱 - 绝不挂载 Docker 套接字(
/var/run/docker.sock) - 绝不挂载敏感的主机目录(
~/.ssh、~/.aws、/etc) - 始终使用
--cap-drop ALL— 除非有明确理由,否则绝不授予单项功能 - 添加资源限制以防止 DoS(内存、CPU、pids)
- 如果技能需要
shell,请警告用户并建议其监控沙箱输出 - 仅将生成的文件写入专用输出文件夹(例如
.openclaw/sandbox/)— 绝不覆盖现有项目文件 - 写入任何文件前都必须征得用户确认 — 先提供生成的内容供其审核
评论
支持 Markdown