Sandboxing

تنفيذ الكود بأمان في حاويات معزولة لحماية نظامك من الأكواد الضارة.

ما هو Sandboxing؟

Sandboxing يعزل تنفيذ الكود في بيئة محدودة الصلاحيات. عندما ينفذ Agent كودًا (مثل Python أو Node.js)، يتم تشغيله داخل حاوية Docker منفصلة لا يمكنها الوصول إلى نظامك الرئيسي.

مع Sandboxing مقابل بدونه

✅ مع Sandboxing

  • عزل كامل للكود
  • لا يمكن الوصول لملفات النظام
  • محدود الموارد (CPU، RAM)
  • إعادة تعيين تلقائية

⚠️ بدون Sandboxing

  • وصول كامل للنظام
  • خطر أمني
  • يمكن حذف ملفات
  • لا توجد حماية

الإعداد

1. تثبيت Docker

# macOS (Homebrew)
brew install --cask docker

# أو قم بتحميل Docker Desktop
# https://www.docker.com/products/docker-desktop

2. تفعيل Sandboxing في التكوين

{
  gateway: {
    sandboxing: {
      enabled: true,
      runtime: "docker",
      
      // حدود الموارد
      limits: {
        cpu: "1.0",      // 1 CPU core
        memory: "512m",  // 512 MB RAM
        timeout: 300     // 5 دقائق max
      }
    }
  }
}

3. أعد تشغيل Gateway

openclaw gateway restart

كيف يعمل؟

  1. Agent يطلب تنفيذ كود (مثل Python script)
  2. Gateway ينشئ حاوية Docker مؤقتة
  3. الكود يُنفذ داخل الحاوية
  4. النتائج تُرسل للـ Agent
  5. الحاوية تُحذف تلقائيًا

مثال: تنفيذ Python script

# Agent يطلب:
import os
print(os.listdir('/'))

# يُنفذ في Docker container
# النتيجة: قائمة ملفات الحاوية فقط، ليس نظامك!

Sandbox Images المدعومة

openclaw/sandbox-python

Python 3.11 مع مكتبات شائعة (numpy, pandas, requests)

openclaw/sandbox-node

Node.js 20 مع npm

openclaw/sandbox-bash

Shell commands أساسية (ls, grep, curl، إلخ)

خيارات متقدمة

{
  gateway: {
    sandboxing: {
      enabled: true,
      
      // حجم مخصص للـ image
      customImages: {
        python: "myorg/custom-python:latest"
      },
      
      // مجلدات مشاركة (استخدم بحذر!)
      volumes: [
        "/path/on/host:/path/in/container:ro"  // :ro = read-only
      ],
      
      // متغيرات بيئة آمنة
      env: {
        TZ: "UTC"
      }
    }
  }
}

💡 أفضل الممارسات

  • فعّل Sandboxing دائمًا في بيئة الإنتاج
  • حدد CPU و Memory limits لتجنب استهلاك الموارد
  • لا تشارك مجلدات حساسة مع الحاويات
  • راجع السجلات للكشف عن محاولات اختراق