آشنایی با sandbox-runtime آنتروپیک؛ ایزوله‌سازی در سطح سیستم‌عامل برای عامل‌های هوش مصنوعی، بدون نیاز به کانتینر

www.marktechpost.com

انتشار در منبع: انتشار در سایت ما:

مقاله اصلی · English

در این مقاله، ابزار متن‌باز و تازه‌مطرح‌شده sandbox-runtime (srt) آنتروپیک را بررسی می‌کنیم؛ ابزاری که سازوکار ایزوله‌سازی در سطح سیستم‌عامل برای قابلیت اجرای فرمان‌های Bash در محیط محدودشده Claude Code را فراهم می‌کند. این ابزار مشخص می‌کند هر فرایند به کدام فایل‌ها دسترسی داشته باشد و بتواند به کدام میزبان‌های شبکه متصل شود، بی‌آنکه نیازی به راه‌اندازی کانتینر باشد. استفاده از آن نیز به Claude Code محدود نیست؛ عامل‌های هوش مصنوعی اختصاصی، سرورهای محلی MCP و برنامه‌های معمول خط فرمان هم می‌توانند در محیط ایزوله‌شده آن اجرا شوند.

خلاصه سریع

  • حجم و مشخصات: بسته npm با نام @anthropic-ai/sandbox-runtime، نسخه ۰٫۰٫۸۱، با حجم تقریبی ۱۱٫۴ مگابایت پس از استخراج، تحت مجوز Apache-2.0 و نیازمند Node.js نسخه ۲۲٫۱۲ یا بالاتر.
  • سیستم‌های قابل اجرا: رایانه‌های توسعه و محیط‌های یکپارچه‌سازی و تحویل پیوسته (CI) مبتنی بر macOS یا Linux. در macOS از Seatbelt استفاده می‌شود؛ در Linux ابزارهای bubblewrap، socat و ripgrep لازم‌اند. پشتیبانی از Windows هنوز در مرحله آلفا است.
  • عملکرد: طبق گزارش داخلی آنتروپیک، استفاده از این سازوکار تعداد درخواست‌های تأیید مجوز در Claude Code را ۸۴ درصد کاهش داده است؛ آماری که خود شرکت اعلام کرده است.
  • مهم‌ترین مزیت: کاهش ۸۴ درصدی درخواست‌های تأیید مجوز، همراه با اعمال محدودیت‌های فایل و شبکه بر کل درخت فرایندها.
  • مهم‌ترین محدودیت: این ابزار همچنان در مرحله پیش‌نمایش پژوهشی بتا قرار دارد و پشتیبانی از Windows در مرحله آلفاست.

sandbox-runtime آنتروپیک چیست؟

sandbox-runtime ابزاری متن‌باز است که هر فرایندی را با محدودیت‌های دسترسی به فایل‌سیستم و شبکه اجرا می‌کند. برای نصب آن، دستور npm install -g @anthropic-ai/sandbox-runtime را اجرا کنید و سپس فرمان موردنظر را با پیشوند srt فراخوانی کنید. این ابزار هم به‌صورت رابط خط فرمان (CLI) و هم در قالب یک کتابخانه TypeScript در دسترس است.

sandbox-runtime در macOS، Linux و Windows چگونه کار می‌کند؟

srt برای ایزوله‌سازی از سازوکارهای داخلی هر سیستم‌عامل استفاده می‌کند. محدودیت‌های آن کل درخت فرایندها، از جمله اسکریپت‌ها و فرایندهای فرزند، را در بر می‌گیرد.

  • macOS: از sandbox-exec همراه با پروفایل‌های Seatbelt که به‌صورت پویا تولید می‌شوند، استفاده می‌کند. تنها ابزار جانبی موردنیاز ripgrep است.
  • Linux: از bubblewrap استفاده می‌کند و فضای نام شبکه را از محیط ایزوله حذف می‌کند. ابزارهای socat و ripgrep نیز لازم‌اند.
  • Windows (مرحله آلفا): به یک حساب کاربری اختصاصی با نام srt-sandbox، سازوکار محدودسازی ترافیک خروجی مبتنی بر Windows Filtering Platform و فهرست‌های صریح کنترل دسترسی فایل (ACL) متکی است.

ترافیک شبکه فقط از طریق پراکسی‌های HTTP و SOCKS5 که روی میزبان اصلی اجرا می‌شوند، امکان خروج دارد. در Linux، این پراکسی‌ها از طریق سوکت‌های یونیکس که به محیط ایزوله متصل شده‌اند، در دسترس قرار می‌گیرند. در macOS، پروفایل Seatbelt تنها یک درگاه محلی روی localhost را مجاز می‌داند. سپس پراکسی‌ها فهرست مجاز و فهرست مسدودشده دامنه‌ها را اعمال می‌کنند.

چرا هم ایزوله‌سازی فایل‌سیستم و هم ایزوله‌سازی شبکه ضروری است؟

تیم آنتروپیک معتقد است که هیچ‌یک از این دو لایه به‌تنهایی کافی نیست. اگر شبکه ایزوله نباشد، عاملی که تحت تأثیر تزریق دستورالعمل قرار گرفته است، ممکن است کلیدهای SSH را به بیرون منتقل کند. از سوی دیگر، اگر فایل‌سیستم محدود نشده باشد، عامل می‌تواند از محیط ایزوله خارج شود و به دسترسی شبکه دست پیدا کند.

تنظیمات پیش‌فرض srt نیز بر همین منطق استوارند: خواندن فایل‌ها در همه مسیرها مجاز است، مگر آنکه صراحتاً ممنوع شده باشد؛ نوشتن در همه مسیرها ممنوع است، مگر آنکه اجازه داده شده باشد؛ و دسترسی به شبکه نیز تا زمانی که دامنه‌ای در فهرست مجاز قرار نگیرد، مسدود می‌ماند.

چگونه یک سرور MCP یا عامل اختصاصی خود را ایزوله کنیم؟

برای ایزوله‌کردن یک سرور MCP، کافی است مقدار command را در فایل .mcp.json از npx به srt تغییر دهید و فرمان اصلی را به‌عنوان آرگومان به آن بدهید. قوانین دسترسی در فایل ~/.srt-settings.json تعریف می‌شوند:

{
 "network": {
 "allowedDomains": ["api.github.com", "*.npmjs.org"],
 "deniedDomains": []
 },
 "filesystem": {
 "denyRead": ["~/.ssh"],
 "allowWrite": ["."],
 "denyWrite": [".env"]
 }
}

برای عامل اختصاصی خود نیز می‌توانید از کتابخانه این ابزار استفاده کنید که کلاس SandboxManager را در اختیار توسعه‌دهندگان قرار می‌دهد. با فراخوانی initialize(config)، پراکسی‌ها راه‌اندازی می‌شوند. سپس متد wrapWithSandbox() رشته فرمانی را برمی‌گرداند که می‌توانید آن را برای اجرای فرایند به کار ببرید.

عدد ۸۴ درصد به چه معناست؟

آنتروپیک در گزارش خود اعلام کرده است که استفاده از ایزوله‌سازی در کاربرد داخلی Claude Code، تعداد درخواست‌های تأیید مجوز را ۸۴ درصد کاهش داده است. این رقم بر اساس گزارش خود شرکت است و نتیجه یک ارزیابی مستقل یا معیارسنجی خارجی نیست.

هدف این سازوکار، کاهش خستگی ناشی از درخواست‌های مکرر تأیید است. توسعه‌دهندگانی که در طول روز بارها روی دکمه «تأیید» کلیک می‌کنند، ممکن است به‌تدریج از بررسی دقیق مواردی که تأیید می‌کنند دست بکشند. تعیین یک مرز امنیتی ثابت به عامل اجازه می‌دهد در محدوده مجاز آزادانه کار کند و فقط هنگام رسیدن به مرز این محدوده درخواست مجوز بدهد.

چالش اصلی: تعادل میان فهرست مجاز سخت‌گیرانه و عملکرد عامل

عامل‌های برنامه‌نویسی فقط فایل‌ها را ویرایش نمی‌کنند؛ آن‌ها وابستگی‌ها را نصب می‌کنند، مستندات را دریافت می‌کنند و به APIها درخواست می‌فرستند. اگر فهرست دامنه‌های مجاز بیش از حد محدود باشد، فرمانی مانند npm install ممکن است شکست بخورد. در مقابل، اگر این فهرست بیش از حد گسترده باشد، محیط ایزوله بخش زیادی از کارکرد امنیتی خود را از دست می‌دهد. srt چند قابلیت برای مدیریت این تعادل ارائه می‌کند:

  • الگوهای عمومی و درگاه‌ها: می‌توان ورودی‌هایی مانند *.npmjs.org یا api.example.com:443 را تعریف کرد.
  • تابع بازبینی درخواست: یک تابع بازخورد یا callback می‌تواند درباره میزبان‌هایی که هیچ‌یک از قوانین وضعیت آن‌ها را مشخص نکرده‌اند تصمیم بگیرد و دلیلی را نیز برگرداند که مدل بتواند آن را بخواند.
  • فهرست مجاز اختصاصی هر فرمان: امکان دسترسی به یک مخزن یا رجیستری را فقط برای یک بار اجرا فراهم می‌کند.
  • به‌روزرسانی زنده: گزینه --control-fd اجازه می‌دهد فهرست‌های شبکه هنگام اجرای فرمان تغییر کنند.
  • بررسی نشانی حل‌شده: مانع دسترسی از طریق نام‌های دامنه مجاز به نشانی‌های IP مربوط به loopback یا فراداده‌های زیرساخت ابری می‌شود.
  • ارائه دلیل برای مسدودکردن دامنه: می‌توان دلیل مسدودشدن را به عامل اعلام کرد و جایگزین مجاز، مانند یک نشانی مخزن Git مبتنی بر HTTPS، را به آن پیشنهاد داد.

sandbox-runtime در مقایسه با دیگر محیط‌های ایزوله‌سازی عامل‌ها

ویژگیAnthropic sandbox-runtimeمحیط ایزوله‌سازی OpenAI Codex CLIDocker SandboxesE2B
روش ایزوله‌سازیسازوکارهای سیستم‌عامل: Seatbelt، bubblewrap و حساب کاربری ویندوز به‌همراه WFPسازوکارهای سیستم‌عامل: Seatbelt، bubblewrap و محیط ایزوله بومی ویندوزیک ماشین مجازی سبک (microVM) برای هر محیط ایزولهیک ماشین مجازی سبک مبتنی بر Firecracker برای هر نشست
محل اجرارایانه محلیرایانه محلیرایانه محلیفضای ابری یا زیرساخت متعلق به مشتری (BYOC) روی AWS یا GCP
نیاز به کانتینر یا ماشین مجازیخیرخیربله؛ ماشین مجازی سبکبله؛ ماشین مجازی سبک مدیریت‌شده
قابلیت استفاده خارج از عامل اختصاصیبله؛ رابط خط فرمان و کتابخانه برای اجرای هر فرایندبه‌صورت داخلی در Codex تعبیه شده استبله؛ ابزار خط فرمان sbx برای عامل‌های برنامه‌نویسیبله؛ کیت‌های توسعه نرم‌افزار JavaScript و Python
تنظیم پیش‌فرض شبکهمسدودکردن همه دسترسی‌ها؛ عبور از پراکسی با فهرست مجازدر حالت workspace-write غیرفعال است و می‌توان آن را از طریق تنظیمات تغییر دادسیاست هنگام نخستین اجرا انتخاب می‌شود؛ برای مثال، مسدودسازی همه دسترسی‌ها یا حالت متعادلبه‌صورت پیش‌فرض فعال است و امکان غیرفعال‌کردن آن وجود دارد
فهرست مجاز دامنه‌هابله؛ با پشتیبانی از الگوهای عمومی و درگاه‌هاجزئیات اعلام نشده است؛ مستندات فقط روشن یا خاموش‌کردن دسترسی را شرح می‌دهندبله؛ با پشتیبانی از الگوهای عمومی و درگاه‌هابله؛ از طریق allowOut و الگوهای عمومی مبتنی بر SNI یا Host
مجوز استفادهApache-2.0Apache-2.0اعلام نشده استApache-2.0 برای کیت توسعه نرم‌افزار
وضعیتپیش‌نمایش پژوهشی بتا؛ پشتیبانی از Windows در مرحله آلفادر قالب Codex CLI عرضه شده استمحصول عرضه‌شدهمحصول عرضه‌شده

نکات کلیدی

  • srt هر فرایندی را در سطح سیستم‌عامل ایزوله می‌کند و به کانتینر نیاز ندارد.
  • این ابزار در macOS از Seatbelt و در Linux از bubblewrap استفاده می‌کند؛ پشتیبانی از Windows هنوز در مرحله آلفاست.
  • دسترسی شبکه به‌صورت پیش‌فرض مسدود است و همه اتصالات باید از پراکسی میزبان و فهرست دامنه‌های مجاز عبور کنند.
  • آنتروپیک گزارش کرده است که این روش تعداد درخواست‌های تأیید مجوز در Claude Code را در استفاده داخلی ۸۴ درصد کاهش داده است.
  • گستردگی فهرست دامنه‌های مجاز یکی از عوامل اصلی تعیین‌کننده سطح امنیت است؛ مجازکردن دامنه‌های بیش از حد گسترده می‌تواند به نشت داده‌ها منجر شود.

برای اطلاعات بیشتر می‌توانید به مخزن پروژه در GitHub، مقاله فنی آنتروپیک و مستندات ایزوله‌سازی Claude Code مراجعه کنید. اعتبار این پروژه متعلق به پژوهشگر آن است.