Apa itu API dengan sandbox?

Project Sandboxed API (SAPI) open source dibangun di atas project open source Sandbox2 Google dan bertujuan untuk membuat sandbox library C/C++ tidak terlalu membebani.

API dengan sandbox memberikan tiga manfaat utama:

  • Daripada melakukan sandboxing seluruh program atau harus mengubah kode sumber agar dapat melakukan sandboxing sebagian program seperti pada Sandbox2, dengan SAPI Anda dapat melakukan sandboxing setiap library C/C++. Akibatnya, dengan SAPI, program utama diisolasi dari kerentanan eksekusi kode di library C/C++.

  • Motto kerja kami adalah: Sandbox sekali, gunakan di mana saja. Library yang di-sandbox dengan Sandboxed API dapat digunakan kembali dengan mudah, sehingga menghilangkan beban untuk project mendatang. Sebelum Sandboxed API, sandbox yang tersedia untuk digunakan di Google memerlukan pekerjaan penerapan tambahan dengan setiap instance project baru yang dimaksudkan untuk di-sandbox, meskipun jika menggunakan kembali library software yang sama. Kebijakan Sandbox2 dan batasan lainnya yang diterapkan pada proses sandbox harus diimplementasikan ulang setiap kali, dan mekanisme pertukaran data antara bagian kode yang tepercaya dan tidak tepercaya harus dirancang dari awal.

  • Setiap library SAPI menggunakan kebijakan keamanan yang ditentukan dengan cermat, berbeda dengan project sandbox biasa, yang kebijakan keamanannya harus mencakup total jejak syscall/resource dari semua library yang digunakan.

Project SAPI telah didesain, dikembangkan, dan dikelola oleh anggota Tim Sandbox Google. Selain itu, Sandbox2 menggunakan Sandbox2 yang telah teruji di lapangan. Saat ini, banyak project internal yang menggunakan SAPI untuk mengisolasi workload produksi mereka.

Mulai Cepat

Untuk mulai menggunakan Sandboxed API, ikuti langkah-langkah berikut:

  1. Instal dependensi yang diperlukan (ini mengasumsikan Anda menjalankan 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. Clone dan jalankan build:
    $ git clone https://github.com/google/sandboxed-api && cd sandboxed-api
    $ bazel build 
  3. Coba salah satu contoh:
    $ bazel run //sandboxed_api/examples/stringop:main_stringop

Dokumentasi yang Tersedia

Informasi selengkapnya tentang Sandboxed API tersedia di sini:

  • Penjelasan Sandboxed API — Menjelaskan Sandboxed API (SAPI) dan konsep intinya.

  • Mulai — Memberikan panduan untuk membantu Anda membuat versi API yang di-sandbox SAPI sendiri.

  • Membangun Aturan — Menjelaskan cara menggunakan aturan build sapi_library() untuk membangun SAPI Library Anda.

  • Variabel — Membahas penggunaan Jenis SAPI yang diperlukan saat meneruskan pointer ke jenis sederhana dan blok memori.

  • Transaksi — Menjelaskan cara menggunakan modul Transaksi SAPI untuk memantau panggilan fungsi.

Glosarium

Sandbox2 Project open source Google yang menyediakan lapisan sandbox di SAPI.
Sandboxee Biner yang dieksekusi di sandbox Sandbox2, lihat dokumentasi Sandbox2. Dalam konteks SAPI, ini adalah library C/C++ sandbox.
SAPI Sandboxed API, project open source Google yang menyediakan fungsi untuk membangun Sandboxed Library.
Library SAPI Library yang dihasilkan oleh SAPI, yang berisi Sandboxed Library, kode Sandbox2, dan kode runtime SAPI.
Objek SAPI Objek C++, yang disertakan dalam Kode Host, menyediakan antarmuka ke Sandboxed Library menggunakan Jenis SAPI, bukan yang asli.
Jenis SAPI SAPI menyediakan jenis khusus yang diperlukan saat meneruskan pointer ke jenis sederhana dan blok memori.
Transaksi SAPI Modul yang digunakan untuk mengelola status sandbox Sandboxed Library di antara proses.
RPC Stub Stub komunikasi Remote Procedure Call (RPC) yang di-wrap dalam Sandbox2 dan digunakan untuk meneruskan data antara Objek SAPI dan Library yang Di-sandbox.
Kode Host Kode yang menggunakan Sandboxed Library dan menyertakan Objek SAPI.

Berkontribusi pada API dengan Sandbox

Jika Anda ingin berkontribusi, baca CONTRIBUTING.md dan kirimkan permintaan penarikan kepada kami.Anda juga dapat melaporkan bug atau mengajukan permintaan fitur.

Jika ingin berbicara dengan developer atau mendapatkan notifikasi tentang update produk penting, Anda dapat bergabung dengan Grup Google kami: sandboxed-api-users.