openeuler-intelligence-sandbox:革命性代码执行服务,一站式支持多语言安全运行
openeuler-intelligence-sandbox:革命性代码执行服务,一站式支持多语言安全运行
【免费下载链接】openeuler-intelligence-sandboxCode execution service for openEuler Intelligence supported multiple programming languages项目地址: https://gitcode.com/openeuler/openeuler-intelligence-sandbox
前往项目官网免费下载:https://ar.openeuler.org/ar/
在当今数字化时代,代码执行服务已成为开发者生态系统中不可或缺的一环。openEuler Intelligence Sandbox作为一款革命性的代码执行服务,为开发者提供了安全、高效、多语言支持的一站式代码运行环境。这个开源项目基于FastAPI构建,不仅支持Python、JavaScript、Bash等多种编程语言,更通过创新的安全隔离机制确保了代码执行的安全性。
🔒 为什么需要安全的代码执行服务?
在在线编程教育、代码评估平台、自动化测试系统等场景中,用户提交的代码往往具有不确定性。恶意代码可能尝试访问系统资源、执行危险操作或消耗过多计算资源。传统的代码执行环境要么安全性不足,要么配置复杂,难以满足现代开发需求。
openEuler Intelligence Sandbox应运而生,它提供了两级安全等级的代码执行机制,让开发者能够根据需求选择不同的安全隔离级别,既保证了执行效率,又确保了系统安全。
🚀 核心功能特性
多语言全面支持
- Python:支持标准库和常用功能,包含数学计算、字符串处理等
- JavaScript:提供安全的Node.js执行环境
- Bash:支持Shell脚本执行,具备命令过滤机制
- 未来扩展:预留了Java等编译型语言的支持接口
智能安全等级系统
项目独创的两级安全等级设计让不同场景下的代码执行更加灵活:
🔵 低安全等级 (LOW)
- 使用本地安全加固的exec执行器
- 最大并发:10个任务
- 适用场景:相对受信任的用户代码
- 响应速度快,资源消耗低
🔴 高安全等级 (HIGH)
- 使用完全隔离的容器执行器
- 最大并发:3个任务
- 适用场景:不受信任的用户代码
- 完全隔离,安全性最高
先进的队列管理系统
基于优先级队列的设计确保了任务处理的效率和公平性:
- 按安全等级分队列:不同安全等级的任务使用独立的队列
- 智能调度算法:自动平衡各队列的负载
- 实时监控接口:提供完整的队列状态信息API
🏗️ 架构设计精妙之处
openEuler Intelligence Sandbox采用了分层架构设计,每个模块职责清晰:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ FastAPI │ │ ExecutorManager │ │ QueueManager │ │ Service │───▶│ │───▶│ │ │ │ │ │ │ - LOW Queue │ └─────────────────┘ └──────────────────┘ │ │ │ │ - HIGH Queue │ │ └─────────────────┘ ▼ ┌──────────────────────┐ │ APScheduler │ │ Task Processing │ └──────────────────────┘ │ ▼ ┌──────────────────────┐ │ Executors │ │ ┌─────────────────┐ │ │ │ ExecExecutor │ │ │ └─────────────────┘ │ │ ┌─────────────────┐ │ │ │ContainerExecutor│ │ │ └─────────────────┘ │ └──────────────────────┘核心模块详解
服务层(app/service.py):基于FastAPI构建的RESTful API服务,提供完整的HTTP接口
执行器管理器(app/executor_manager.py):负责执行器的生命周期管理和任务调度
队列管理器(app/queue_manager.py):实现优先级队列和并发控制
执行器基类(app/executor/base.py):定义统一的执行器接口,支持扩展
🛡️ 多层次安全防护体系
代码级别安全控制
Python安全包装器:
- 模块导入限制:禁用危险模块(os、sys、subprocess等)
- 内置函数限制:禁用exec()、eval()、compile()等危险函数
- 自定义__import__:拦截并阻止危险模块的导入
- 文件操作禁用:完全禁用文件读写操作
JavaScript安全包装器:
- require()禁用:阻止Node.js模块导入
- process对象移除:禁用进程控制相关功能
- 全局对象清理:移除危险的全局变量和函数
- eval禁用:阻止动态代码执行
Bash命令过滤:
- 危险命令黑名单:自动替换rm、wget、curl、ssh等危险命令
- 命令执行限制:只允许基本的输出和计算命令
系统级别资源限制
内存限制:
- 最大内存:64MB(可配置)
- 内存炸弹防护:防止恶意代码消耗大量内存
CPU限制:
- 执行时间:最大10秒硬限制
- CPU核心数:限制可使用的CPU资源
- 无限循环防护:自动终止长时间运行的进程
文件系统限制:
- 文件大小:单个文件最大1MB
- 文件描述符:限制可打开的文件数量
- 临时目录隔离:每个任务使用独立的临时目录
📊 丰富的API接口
主要API端点
提交代码执行任务
POST /execute支持Python、JavaScript、Bash等多种编程语言的代码执行请求。
获取任务状态
GET /task/{task_id}/status实时查询任务执行状态,支持轮询机制。
获取任务结果
GET /task/{task_id}/result获取代码执行结果,包括输出、错误信息和资源使用情况。
取消任务
DELETE /task/{task_id}支持任务取消功能,避免资源浪费。
监控接口
GET /health- 健康检查GET /queues/info- 队列信息GET /executors/status- 执行器状态GET /system/status- 系统整体状态
🚀 快速开始指南
环境准备
- 克隆仓库
git clone https://gitcode.com/openeuler/openeuler-intelligence-sandbox cd openeuler-intelligence-sandbox- 安装依赖
pip install -r requirements.txt- 启动服务
cd app python start_service.py服务将在http://localhost:8000启动,您可以通过以下方式访问API文档:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
示例代码执行
Python代码执行示例
import requests url = "http://localhost:8000/execute" payload = { "code": "print('Hello, World!')\nfor i in range(5):\n print(f'Number: {i}')", "code_type": "python", "user_info": { "user_id": "user123", "username": "测试用户", "permissions": ["execute"] }, "security_level": "low", "timeout_seconds": 30, "memory_limit_mb": 128, "cpu_limit": 0.5 } response = requests.post(url, json=payload) print(response.json())🧪 全面的测试覆盖
项目提供了完整的测试套件,确保代码执行的安全性和稳定性:
基础功能测试(tests/test_python_executor.py):验证各语言的基本功能
安全机制测试(tests/test_enhanced_bash_security.py):测试安全防护的有效性
集成测试(tests/run_all_tests.py):完整的端到端测试流程
测试策略
- 🟢 优秀:阻止率 ≥ 95%,误杀率 ≤ 10%
- 🟡 良好:阻止率 ≥ 80%,误杀率 ≤ 20%
- 🟠 中等:阻止率 ≥ 60%,误杀率 ≤ 30%
- 🔴 危险:阻止率 < 60% 或误杀率 > 30%
🔧 扩展和定制
添加新的代码类型
- 在
entities.py中的CodeType枚举添加新类型 - 在相应执行器中添加支持配置
- 更新容器镜像映射
创建自定义执行器
继承BaseExecutor类并实现抽象方法:
class CustomExecutor(BaseExecutor): async def prepare_environment(self, request): # 实现环境准备逻辑 pass async def apply_security_constraints(self, request, env_info): # 实现安全约束逻辑 pass async def execute_code(self, request, env_info, security_config): # 实现代码执行逻辑 pass async def cleanup_environment(self, env_info): # 实现环境清理逻辑 pass📈 生产部署建议
安全配置
- 启用HTTPS:在生产环境中启用SSL/TLS加密
- 限制CORS:配置具体的允许域名,避免跨站攻击
- 访问控制:实现基于角色的访问控制(RBAC)
监控和运维
- 集成监控:使用Prometheus、Grafana等监控工具
- 结构化日志:使用JSON格式日志,便于日志聚合和分析
- 告警机制:设置资源使用告警阈值
性能优化
- 容器化部署:使用Docker进行容器化部署
- 负载均衡:在多实例前使用负载均衡器
- 缓存策略:实现结果缓存,减少重复计算
🌟 应用场景
在线编程教育平台
- 学生代码实时执行和评估
- 自动化代码评分系统
- 编程竞赛平台
代码评估和测试
- 自动化代码审查
- 安全漏洞扫描
- 性能基准测试
开发者工具
- 在线代码片段执行
- API文档中的交互式示例
- 技术面试平台
科研和教育
- 算法教学演示
- 数据科学实验环境
- 计算机科学课程实践
🔮 未来发展方向
openEuler Intelligence Sandbox项目具有广阔的发展前景:
语言支持扩展:计划支持更多编程语言,包括Go、Rust、C++等
安全机制增强:引入更多安全隔离技术,如WebAssembly、Firecracker等
性能优化:支持分布式执行和负载均衡
生态集成:与主流开发工具和平台深度集成
📚 学习资源
官方文档:项目提供了完整的API文档和使用指南
示例代码:包含丰富的使用示例和测试用例
社区支持:活跃的开源社区提供技术支持和问题解答
🎯 总结
openEuler Intelligence Sandbox作为一款革命性的代码执行服务,通过创新的安全隔离机制、多语言支持和智能队列管理,为开发者提供了安全、高效、可靠的代码执行环境。无论是教育平台、代码评估系统还是开发者工具,它都能提供强大的支持。
项目的开源特性意味着您可以自由使用、修改和扩展它,满足特定场景的需求。随着社区的不断贡献,openEuler Intelligence Sandbox将持续演进,为开源生态贡献更多价值。
开始体验这个强大的代码执行服务,为您的项目注入安全可靠的代码执行能力!
【免费下载链接】openeuler-intelligence-sandboxCode execution service for openEuler Intelligence supported multiple programming languages项目地址: https://gitcode.com/openeuler/openeuler-intelligence-sandbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
