Apa itu API dengan sandbox?

Project API dengan sandbox (SAPI) open source dibuat berdasarkan project open source Sandbox2 Google dan bertujuan membuat sandbox library C/C++ tidak terlalu membebani.

Sandboxed API memberikan tiga manfaat utama:

  • Daripada melakukan sandbox seluruh program atau harus mengubah kode sumber agar dapat meng-sandbox sebagian program seperti pada Sandbox2, dengan SAPI Anda dapat melakukan sandbox library C/C++ satu per satu. Akibatnya, dengan SAPI, program utama terisolasi dari kerentanan eksekusi kode di library C/C++.

  • Moto kerja kami adalah: Sandbox sekali, gunakan di mana saja. Library yang di-sandbox dengan Sandboxed API dapat dengan mudah digunakan kembali, sehingga mengurangi beban untuk project mendatang. Sebelum API dengan sandbox, sandbox yang tersedia untuk digunakan di Google memerlukan pekerjaan implementasi tambahan dengan setiap instance project baru yang dimaksudkan untuk di-sandbox, meskipun jika itu menggunakan kembali library software yang sama. Kebijakan sandbox2 dan pembatasan lain yang diterapkan pada proses dengan sandbox harus diterapkan kembali setiap saat, dan mekanisme pertukaran data antara bagian kode yang tepercaya dan tidak tepercaya harus didesain dari awal.

  • Setiap library SAPI menggunakan kebijakan keamanan yang ditetapkan secara ketat, berbeda dengan project dengan sandbox pada umumnya, dengan kebijakan keamanan harus mencakup total jejak syscall/resource dari semua library yang digunakan.

Project SAPI telah dirancang, dikembangkan, dan dikelola oleh anggota Tim Google Sandbox. Kode ini juga menggunakan Sandbox2 kami yang diuji lapangan. Saat ini, banyak project internal menggunakan SAPI untuk mengisolasi beban kerja produksinya.

Mulai Cepat

Untuk menyiapkan dan menjalankan API dengan Sandbox, ikuti langkah-langkah berikut:

  1. Instal dependensi yang diperlukan (dengan asumsi 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 API dengan Sandbox — Menjelaskan API dengan Sandbox (SAPI) dan konsep intinya.

  • Memulai — Memberikan panduan yang membantu Anda membuat API versi sandbox SAPI Anda sendiri.

  • Build Rules — Menjelaskan cara menggunakan aturan build sapi_library() untuk mem-build Library SAPI.

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

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

Glosarium

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

Berkontribusi ke API dengan Sandbox

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

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