Проект Sandboxed API с открытым исходным кодом ( SAPI ) основан на проекте Google Sandbox2 с открытым исходным кодом и направлен на то, чтобы сделать изолированную программную среду библиотек C/C++ менее обременительной.
API-интерфейс песочницы предоставляет три основных преимущества:
Вместо того, чтобы помещать в «песочницу» целые программы или менять исходный код, чтобы иметь возможность поместить в «песочницу» часть программы, как в «Sandbox2», с помощью SAPI вы можете изолировать отдельные библиотеки C/C++. В результате с помощью SAPI основная программа изолирована от уязвимостей выполнения кода в библиотеке C/C++.
Наш рабочий девиз: «Песочница один раз, используйте где угодно». Библиотеки, изолированные с помощью Sandboxed API, можно легко использовать повторно, что облегчает работу будущих проектов. До появления Sandboxed API песочницы, доступные для использования в Google, требовали дополнительной работы по реализации каждого нового экземпляра проекта, который должен был быть помещен в песочницу, даже если он повторно использовал одну и ту же программную библиотеку. Политики Sandbox2 и другие ограничения, применяемые к изолированному процессу, приходилось каждый раз переопределять, а механизмы обмена данными между доверенными и недоверенными частями кода приходилось разрабатывать с нуля.
Каждая библиотека SAPI использует строго определенную политику безопасности, в отличие от типичного изолированного проекта, где политики безопасности должны охватывать весь объем системных вызовов и ресурсов всех используемых библиотек.
Проект 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
Доступная документация
Дополнительную информацию об API песочницы можно найти здесь:
Объяснение изолированного API — описывает изолированный API (SAPI) и его основные концепции.
Начало работы — содержит рекомендации, которые помогут вам создать собственную изолированную версию API SAPI.
Правила сборки . Объясняет, как использовать правило сборки sapi_library() для создания библиотеки SAPI.
Переменные — обсуждает использование типов SAPI, которые необходимы при передаче указателей на простые типы и блоки памяти.
Транзакции — объясняет, как использовать модуль транзакций SAPI для мониторинга вызовов функций.
Глоссарий
Песочница2 | Проект Google с открытым исходным кодом, обеспечивающий уровень песочницы в SAPI. |
Песочница | Бинарный файл, выполняющийся в песочнице Sandbox2, см. в документации Sandbox2 . В контексте SAPI это изолированная библиотека C/C++. |
SAPI | Sandboxed API, проект Google с открытым исходным кодом, который обеспечивает функциональность для создания изолированных библиотек. |
Библиотека SAPI | Библиотека, созданная SAPI, содержащая изолированную библиотеку, код Sandbox2 и код времени выполнения SAPI. |
SAPI-объект | Объект C++, включенный в основной код, предоставляющий интерфейс для изолированной библиотеки с использованием типов SAPI вместо исходных. |
Типы SAPI | SAPI предоставляет специальные типы, необходимые при передаче указателей на простые типы и блоки памяти. |
SAPI-транзакция | Модуль, используемый для управления состоянием изолированной библиотеки между запусками. |
Заглушка RPC | Заглушка связи удаленного вызова процедур (RPC), заключенная в песочницу2 и используемая для передачи данных между объектом SAPI и изолированной библиотекой. |
Код хоста | Код, который использует изолированную библиотеку и включает объект SAPI. |
Вклад в изолированный API
Если вы хотите внести свой вклад, прочтите CONTRIBUTING.md и отправьте нам запросы на включение. Вы также можете сообщать об ошибках или отправлять запросы на добавление функций.
Если вы хотите поговорить с разработчиками или получить уведомления об основных обновлениях продукта, вы можете присоединиться к нашей группе Google: sandboxed-api-users .
,Проект Sandboxed API с открытым исходным кодом ( SAPI ) основан на проекте Google Sandbox2 с открытым исходным кодом и направлен на то, чтобы сделать изолированную программную среду библиотек C/C++ менее обременительной.
API-интерфейс песочницы предоставляет три основных преимущества:
Вместо того, чтобы помещать в «песочницу» целые программы или менять исходный код, чтобы иметь возможность поместить в «песочницу» часть программы, как в «Sandbox2», с помощью SAPI вы можете изолировать отдельные библиотеки C/C++. В результате с помощью SAPI основная программа изолирована от уязвимостей выполнения кода в библиотеке C/C++.
Наш рабочий девиз: «Песочница один раз, используйте где угодно». Библиотеки, изолированные с помощью Sandboxed API, можно легко использовать повторно, что облегчает работу будущих проектов. До появления Sandboxed API песочницы, доступные для использования в Google, требовали дополнительной работы по реализации каждого нового экземпляра проекта, который должен был быть помещен в песочницу, даже если он повторно использовал одну и ту же программную библиотеку. Политики Sandbox2 и другие ограничения, применяемые к изолированному процессу, приходилось каждый раз переопределять, а механизмы обмена данными между доверенными и недоверенными частями кода приходилось разрабатывать с нуля.
Каждая библиотека SAPI использует строго определенную политику безопасности, в отличие от типичного изолированного проекта, где политики безопасности должны охватывать весь объем системных вызовов и ресурсов всех используемых библиотек.
Проект 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
Доступная документация
Дополнительную информацию об API песочницы можно найти здесь:
Объяснение изолированного API — описывает изолированный API (SAPI) и его основные концепции.
Начало работы — содержит рекомендации, которые помогут вам создать собственную изолированную версию API SAPI.
Правила сборки . Объясняет, как использовать правило сборки sapi_library() для создания библиотеки SAPI.
Переменные — обсуждает использование типов SAPI, которые необходимы при передаче указателей на простые типы и блоки памяти.
Транзакции — объясняет, как использовать модуль транзакций SAPI для мониторинга вызовов функций.
Глоссарий
Песочница2 | Проект Google с открытым исходным кодом, обеспечивающий уровень песочницы в SAPI. |
Песочница | Бинарный файл, выполняющийся в песочнице Sandbox2, см. в документации Sandbox2 . В контексте SAPI это изолированная библиотека C/C++. |
SAPI | Sandboxed API, проект Google с открытым исходным кодом, который обеспечивает функциональность для создания изолированных библиотек. |
Библиотека SAPI | Библиотека, созданная SAPI, содержащая изолированную библиотеку, код Sandbox2 и код времени выполнения SAPI. |
SAPI-объект | Объект C++, включенный в основной код, предоставляющий интерфейс для изолированной библиотеки с использованием типов SAPI вместо исходных. |
Типы SAPI | SAPI предоставляет специальные типы, необходимые при передаче указателей на простые типы и блоки памяти. |
SAPI-транзакция | Модуль, используемый для управления состоянием изолированной библиотеки между запусками. |
Заглушка RPC | Заглушка связи удаленного вызова процедур (RPC), заключенная в песочницу2 и используемая для передачи данных между объектом SAPI и изолированной библиотекой. |
Код хоста | Код, который использует изолированную библиотеку и включает объект SAPI. |
Вклад в изолированный API
Если вы хотите внести свой вклад, прочтите CONTRIBUTING.md и отправьте нам запросы на включение. Вы также можете сообщать об ошибках или отправлять запросы на добавление функций.
Если вы хотите поговорить с разработчиками или получить уведомления об основных обновлениях продукта, вы можете присоединиться к нашей группе Google: sandboxed-api-users .