Что такое изолированный API? Что такое изолированный API?

Проект 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, выполните следующие действия:

  1. Установите необходимые зависимости (предполагается, что вы используете 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
  2. Клонируйте и запустите сборку:
    $ git clone https://github.com/google/sandboxed-api && cd sandboxed-api
    $ bazel build …
    
  3. Попробуйте один из примеров :
    $ 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, выполните следующие действия:

  1. Установите необходимые зависимости (предполагается, что вы используете 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
  2. Клонируйте и запустите сборку:
    $ git clone https://github.com/google/sandboxed-api && cd sandboxed-api
    $ bazel build …
    
  3. Попробуйте один из примеров :
    $ 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 .