Sandbox 快速开始
一个为 RAGFlow 和其他需要隔离代码执行环境的应用程序设计的安全、可插拔代码执行后端。
特性
- 无缝 RAGFlow 集成 — 与 RAGFlow 的代码组件开箱即用。
- 高安全性 — 使用 gVisor 进行系统调用级别的沙箱隔离。
- 可定制沙箱 — 轻松修改 seccomp 配置文件以定制系统调用限制。
- 可插拔运行时支持 — 可扩展以支持任何编程语言运行时。
- 开发者友好 — 使用便捷的 Makefile 快速设置。
架构
该架构由为每个支持的语言运行时隔离的 Docker 基础镜像组成,由执行器管理服务管理。执行器管理器使用 gVisor 进行系统调用拦截和可选的 seccomp 配置文件进行增强的系统调用过滤,来编排沙箱代码执行。
前置条件
- 与 gVisor 兼容的 Linux 发行版。
- 已安装并配置 gVisor。
- Docker 版本 24.0.0 或更高。
- Docker Compose 版本 2.26.1 或更高(类似于 RAGFlow 要求)。
- 已安装 uv 包和项目管理器。
- (可选)GNU Make 用于简化的命令行管理。
构建 Docker 基础镜像
沙箱使用隔离的基础镜像来提供安全的容器化执行环境。
手动构建基础镜像:
docker build -t sandbox-base-python:latest ./sandbox_base_image/python
docker build -t sandbox-base-nodejs:latest ./sandbox_base_image/nodejs
或者,使用 Makefile 一次性构建所有基础镜像:
make build
接下来,构建执行器管理器镜像:
docker build -t sandbox-executor-manager:latest ./executor_manager
与 RAGFlow 一起运行
-
验证 gVisor 已正确安装并正常运行。
-
配置位于 docker/.env 的 .env 文件:
- 取消注释与沙箱相关的环境变量。
- 在文件底部启用沙箱配置文件。
- 在您的 /etc/hosts 文件中添加以下条目以解析执行器管理器服务:
127.0.0.1 es01 infinity mysql minio redis sandbox-executor-manager
- 像往常一样启动 RAGFlow 服务。
独立运行
手动设置
- 初始化环境变量:
cp .env.example .env
- 使用 Docker Compose 启动沙箱服务:
docker compose -f docker-compose.yml up
- 测试沙箱设置:
source .venv/bin/activate
export PYTHONPATH=$(pwd)
uv pip install -r executor_manager/requirements.txt
uv run tests/sandbox_security_tests_full.py
使用 Makefile
使用单个命令运行所有设置、构建、启动和测试:
make
监控
跟踪执行器管理器容器的日志:
docker logs -f sandbox-executor-manager
或使用 Makefile 快捷方式:
make logs