پروژه منبع باز Sandboxed API ( SAPI ) بر روی پروژه منبع باز Google Sandbox2 ساخته شده است و هدف آن این است که Sandboxing کتابخانه های C/C++ را کمتر سنگین کند.
Sandboxed API سه مزیت اصلی را ارائه می دهد:
به جای سندباکس کردن کل برنامه ها یا نیاز به تغییر کد منبع برای اینکه بتوانید بخشی از یک برنامه را مانند Sandbox2 جعبه شن جعبه کنید، با SAPI می توانید کتابخانه های C/C++ جداگانه را جعبه سندباکس کنید. در نتیجه، با SAPI برنامه اصلی از آسیبپذیریهای اجرای کد در کتابخانه C/C++ جدا میشود.
شعار کار ما این است: Sandbox یک بار، استفاده در هر کجا. کتابخانههای Sandboxed API را میتوان به راحتی دوباره مورد استفاده قرار داد، که بار پروژههای آینده را از بین میبرد. قبل از Sandboxed API، جعبههای sandbox موجود برای استفاده در Google به کار پیادهسازی بیشتری با هر نمونه جدید از پروژهای که قرار بود جعبهشنی شونده میشد، نیاز داشت، حتی اگر از همان کتابخانه نرمافزاری استفاده مجدد میکرد. خطمشیهای Sandbox2 و سایر محدودیتهای اعمال شده برای فرآیند sandboxed باید هر بار مجدداً اجرا میشد و مکانیسمهای تبادل داده بین بخشهای قابل اعتماد و غیرقابل اعتماد کد باید از ابتدا طراحی میشد.
هر کتابخانه SAPI از یک خطمشی امنیتی کاملاً تعریفشده استفاده میکند، برخلاف پروژههای سندباکس معمولی، که در آن سیاستهای امنیتی باید کل ردپای syscall/منابع همه کتابخانههای مورد استفاده را پوشش دهند.
پروژه SAPI توسط اعضای تیم Google Sandbox طراحی، توسعه و نگهداری می شود. همچنین از Sandbox2 آزمایش شده در میدان ما استفاده می کند. در حال حاضر، بسیاری از پروژه های داخلی از SAPI برای جداسازی حجم کاری تولید خود استفاده می کنند.
شروع سریع
برای راه اندازی و اجرای Sandboxed API، این مراحل را دنبال کنید:
- وابستگی های مورد نیاز را نصب کنید (این فرض می کند که Debian 10 Buster را اجرا می کنید):
$ echo "deb http://storage.googleapis.com/bazel-apt stable jdk1.8" |
sudo tee /etc/apt/sources.list.d/bazel.list $ wget -qO - https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install -qy build-essential linux-libc-dev bazel python3
python3-pip libclang-7-dev $ pip3 install clang - بیلد را کلون کنید و اجرا کنید:
$ git clone https://github.com/google/sandboxed-api && cd sandboxed-api $ bazel build …
- یکی از مثالها را امتحان کنید:
$ bazel run //sandboxed_api/examples/stringop:main_stringop
اسناد موجود
اطلاعات بیشتر در مورد Sandboxed API در اینجا موجود است:
Sandboxed API توضیح داده شده - Sandboxed API (SAPI) و مفاهیم اصلی آن را توصیف می کند.
شروع به کار - راهنمایی هایی را ارائه می دهد که به شما کمک می کند نسخه جعبه ایمنی SAPI خود را از یک API ایجاد کنید.
قوانین ساخت - نحوه استفاده از قانون ساخت ()sapi_library برای ساخت کتابخانه SAPI را توضیح می دهد.
متغیرها - در مورد استفاده از انواع SAPI که هنگام انتقال اشاره گرها به انواع ساده و بلوک های حافظه مورد نیاز هستند بحث می کند.
تراکنش ها - نحوه استفاده از ماژول تراکنش SAPI برای نظارت بر فراخوانی عملکرد را توضیح می دهد.
واژه نامه
Sandbox2 | پروژه منبع باز گوگل که لایه sandboxing را در SAPI فراهم می کند. |
Sandboxee | اجرای باینری در جعبه ایمنی Sandbox2، به مستندات Sandbox2 مراجعه کنید. در زمینه SAPI، این کتابخانه C/C++ sandboxed است. |
SAPI | Sandboxed API، پروژه منبع باز Google که قابلیت ساخت کتابخانه های Sandboxed را فراهم می کند. |
کتابخانه SAPI | کتابخانه تولید شده توسط SAPI، حاوی کتابخانه Sandboxed، کد Sandbox2 و کد زمان اجرا SAPI. |
شیء SAPI | شیء C++، که در کد میزبان گنجانده شده است، با استفاده از انواع SAPI به جای انواع اصلی، یک رابط برای کتابخانه Sandboxed ارائه می دهد. |
انواع SAPI | SAPI انواع خاصی را فراهم می کند که هنگام انتقال اشاره گر به انواع ساده و بلوک های حافظه مورد نیاز است. |
تراکنش SAPI | ماژول مورد استفاده برای مدیریت وضعیت جعبه ایمنی کتابخانه Sandboxed بین اجراها. |
خرد RPC | خرد ارتباطی فراخوانی رویه از راه دور (RPC) در Sandbox2 پیچیده شده و برای انتقال داده ها بین شی SAPI و کتابخانه Sandboxed استفاده می شود. |
کد میزبان | کدی که از کتابخانه Sandboxed استفاده می کند و شامل شیء SAPI است. |
مشارکت در Sandboxed API
اگر میخواهید مشارکت کنید، لطفا CONTRIBUTING.md را بخوانید و درخواستهای کششی را برای ما ارسال کنید. همچنین میتوانید اشکالات یا درخواستهای ویژگی فایل را گزارش کنید.
اگر میخواهید با توسعهدهندگان صحبت کنید یا درباره بهروزرسانیهای اصلی محصول مطلع شوید، ممکن است بخواهید به گروه Google ما بپیوندید: sandboxed-api-users .
،پروژه منبع باز Sandboxed API ( SAPI ) بر روی پروژه منبع باز Google Sandbox2 ساخته شده است و هدف آن این است که Sandboxing کتابخانه های C/C++ را کمتر سنگین کند.
Sandboxed API سه مزیت اصلی را ارائه می دهد:
به جای سندباکس کردن کل برنامه ها یا نیاز به تغییر کد منبع برای اینکه بتوانید بخشی از یک برنامه را مانند Sandbox2 جعبه شن جعبه کنید، با SAPI می توانید کتابخانه های C/C++ جداگانه را جعبه سندباکس کنید. در نتیجه، با SAPI برنامه اصلی از آسیبپذیریهای اجرای کد در کتابخانه C/C++ جدا میشود.
شعار کار ما این است: Sandbox یک بار، استفاده در هر کجا. کتابخانههای Sandboxed API را میتوان به راحتی دوباره مورد استفاده قرار داد، که بار پروژههای آینده را از بین میبرد. قبل از Sandboxed API، جعبههای sandbox موجود برای استفاده در Google به کار پیادهسازی بیشتری با هر نمونه جدید از پروژهای که قرار بود جعبهشنی شونده میشد، نیاز داشت، حتی اگر از همان کتابخانه نرمافزاری استفاده مجدد میکرد. خطمشیهای Sandbox2 و سایر محدودیتهای اعمال شده برای فرآیند sandboxed باید هر بار مجدداً اجرا میشد و مکانیسمهای تبادل داده بین بخشهای قابل اعتماد و غیرقابل اعتماد کد باید از ابتدا طراحی میشد.
هر کتابخانه SAPI از یک خطمشی امنیتی کاملاً تعریفشده استفاده میکند، برخلاف پروژههای سندباکس معمولی، که در آن سیاستهای امنیتی باید کل ردپای syscall/منابع همه کتابخانههای مورد استفاده را پوشش دهند.
پروژه SAPI توسط اعضای تیم Google Sandbox طراحی، توسعه و نگهداری می شود. همچنین از Sandbox2 آزمایش شده در میدان ما استفاده می کند. در حال حاضر، بسیاری از پروژه های داخلی از SAPI برای جداسازی حجم کاری تولید خود استفاده می کنند.
شروع سریع
برای راه اندازی و اجرای Sandboxed API، این مراحل را دنبال کنید:
- وابستگی های مورد نیاز را نصب کنید (این فرض می کند که Debian 10 Buster را اجرا می کنید):
$ echo "deb http://storage.googleapis.com/bazel-apt stable jdk1.8" |
sudo tee /etc/apt/sources.list.d/bazel.list $ wget -qO - https://bazel.build/bazel-release.pub.gpg | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install -qy build-essential linux-libc-dev bazel python3
python3-pip libclang-7-dev $ pip3 install clang - بیلد را کلون کنید و اجرا کنید:
$ git clone https://github.com/google/sandboxed-api && cd sandboxed-api $ bazel build …
- یکی از مثالها را امتحان کنید:
$ bazel run //sandboxed_api/examples/stringop:main_stringop
اسناد موجود
اطلاعات بیشتر در مورد Sandboxed API در اینجا موجود است:
Sandboxed API توضیح داده شده - Sandboxed API (SAPI) و مفاهیم اصلی آن را توصیف می کند.
شروع به کار - راهنمایی هایی را ارائه می دهد که به شما کمک می کند نسخه جعبه ایمنی SAPI خود را از یک API ایجاد کنید.
قوانین ساخت - نحوه استفاده از قانون ساخت ()sapi_library برای ساخت کتابخانه SAPI را توضیح می دهد.
متغیرها - در مورد استفاده از انواع SAPI که هنگام انتقال اشاره گرها به انواع ساده و بلوک های حافظه مورد نیاز هستند بحث می کند.
تراکنش ها - نحوه استفاده از ماژول تراکنش SAPI برای نظارت بر فراخوانی عملکرد را توضیح می دهد.
واژه نامه
Sandbox2 | پروژه منبع باز گوگل که لایه sandboxing را در SAPI فراهم می کند. |
Sandboxee | اجرای باینری در جعبه ایمنی Sandbox2، به مستندات Sandbox2 مراجعه کنید. در زمینه SAPI، این کتابخانه C/C++ sandboxed است. |
SAPI | Sandboxed API، پروژه منبع باز Google که قابلیت ساخت کتابخانه های Sandboxed را فراهم می کند. |
کتابخانه SAPI | کتابخانه تولید شده توسط SAPI، حاوی کتابخانه Sandboxed، کد Sandbox2 و کد زمان اجرا SAPI. |
شیء SAPI | شیء C++، که در کد میزبان گنجانده شده است، با استفاده از انواع SAPI به جای انواع اصلی، یک رابط برای کتابخانه Sandboxed ارائه می دهد. |
انواع SAPI | SAPI انواع خاصی را فراهم می کند که هنگام انتقال اشاره گر به انواع ساده و بلوک های حافظه مورد نیاز است. |
تراکنش SAPI | ماژول مورد استفاده برای مدیریت وضعیت جعبه ایمنی کتابخانه Sandboxed بین اجراها. |
خرد RPC | خرد ارتباطی فراخوانی رویه از راه دور (RPC) در Sandbox2 پیچیده شده و برای انتقال داده ها بین شی SAPI و کتابخانه Sandboxed استفاده می شود. |
کد میزبان | کدی که از کتابخانه Sandboxed استفاده می کند و شامل شیء SAPI است. |
مشارکت در Sandboxed API
اگر میخواهید مشارکت کنید، لطفا CONTRIBUTING.md را بخوانید و درخواستهای کششی را برای ما ارسال کنید. همچنین میتوانید اشکالات یا درخواستهای ویژگی فایل را گزارش کنید.
اگر میخواهید با توسعهدهندگان صحبت کنید یا درباره بهروزرسانیهای اصلی محصول مطلع شوید، ممکن است بخواهید به گروه Google ما بپیوندید: sandboxed-api-users .