Sandboxed API nedir?

Açık kaynaklı Sandboxed API (SAPI) projesi, Google'ın Sandbox2 açık kaynaklı projesi üzerine kurulmuştur ve C/C++ kitaplıklarının sanal ortamda çalıştırılmasını daha az zahmetli hale getirmeyi amaçlar.

Sandboxed API üç temel avantaj sunar:

  • SAPI ile, Sandbox2'de olduğu gibi programların tamamını korumalı alana almak veya bir programın bir bölümünü korumalı alana almak için kaynak kodu değiştirmek yerine tek tek C/C++ kitaplıklarını korumalı alana alabilirsiniz. Sonuç olarak, SAPI ile ana program, C/C++ kitaplığındaki kod yürütme güvenlik açıklarından izole edilir.

  • Çalışma sloganımız: Bir kez test edin, her yerde kullanın. Sandboxed API ile korumalı alan oluşturulan kitaplıklar kolayca yeniden kullanılabilir. Bu sayede, gelecekteki projeler için gereken çaba azalır. Sandboxed API'den önce, Google'da kullanılabilen sanal alanlar, aynı yazılım kitaplığını yeniden kullansa bile, sanal alan oluşturulması amaçlanan bir projenin her yeni örneğiyle ek uygulama çalışması gerektiriyordu. Sandbox2 politikaları ve korumalı alana alınmış işleme uygulanan diğer kısıtlamaların her seferinde yeniden uygulanması, kodun güvenilir ve güvenilmeyen kısımları arasındaki veri alışverişi mekanizmalarının ise sıfırdan tasarlanması gerekiyordu.

  • Her SAPI kitaplığı, sıkı bir şekilde tanımlanmış güvenlik politikası kullanır. Bu durum, güvenlik politikalarının kullanılan tüm kitaplıkların toplam sistem çağrısı/kaynak ayak izini kapsaması gereken tipik korumalı alan projesinin aksinedir.

SAPI projesi, Google Sandbox Ekibi üyeleri tarafından tasarlanmış, geliştirilmiş ve yönetilmektedir. Ayrıca, sahada test edilmiş Sandbox2'yi de kullanır. Şu anda birçok dahili proje, üretim iş yüklerini yalıtmak için SAPI'yi kullanıyor.

Hızlı Başlangıç

Sandbox API'yi kullanmaya başlamak için aşağıdaki adımları uygulayın:

  1. Gerekli bağımlılıkları yükleyin (Debian 10 Buster'ı çalıştırdığınız varsayılır):
    $ 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. Derlemeyi klonlayıp çalıştırma:
    $ git clone https://github.com/google/sandboxed-api && cd sandboxed-api
    $ bazel build 
  3. Örneklerden birini deneyin:
    $ bazel run //sandboxed_api/examples/stringop:main_stringop

Kullanılabilir Belgeler

Korumalı alan API'si hakkında daha fazla bilgiyi burada bulabilirsiniz:

  • Sandboxed API Açıklaması: Sandboxed API (SAPI) ve temel kavramları açıklanır.

  • Başlangıç: Bir API'nin kendi SAPI korumalı alan sürümünü oluşturmanıza yardımcı olacak yönergeler sunar.

  • Kurallar Oluşturma: SAPI kitaplığınızı oluşturmak için sapi_library() oluşturma kuralının nasıl kullanılacağını açıklar.

  • Değişkenler: Basit türlere ve bellek bloklarına işaretçiler geçirilirken gereken SAPI türlerinin kullanımını ele alır.

  • İşlemler: İşlev çağrılarını izlemek için SAPI İşlem modülünün nasıl kullanılacağını açıklar.

Sözlük

Sandbox2 SAPI'de sanal alan katmanını sağlayan Google açık kaynak projesi.
Sandboxee Sandbox2 korumalı alanında yürütülen ikili dosya için Sandbox2 belgelerine bakın. SAPI bağlamında bu, korumalı alan C/C++ kitaplığıdır.
SAPI Sandboxed API, Sandboxed Libraries oluşturma işlevini sağlayan Google açık kaynak projesidir.
SAPI Kitaplığı SAPI tarafından oluşturulan, Sandboxed Library, Sandbox2 kodu ve SAPI çalışma zamanı kodunu içeren kitaplık.
SAPI Object Ana makine koduna dahil edilen ve orijinal türler yerine SAPI türlerini kullanarak Sandboxed Library'ye arayüz sağlayan C++ nesnesi.
SAPI Türleri SAPI, işaretçileri basit türlere ve bellek bloklarına geçirirken gereken özel türleri sağlar.
SAPI İşlemi Çalıştırmalar arasında korumalı alan kitaplığının korumalı alan durumunu yönetmek için kullanılan bir modül.
RPC Stub Sandbox2'ye sarılmış ve SAPI Nesnesi ile Sandbox'a alınmış kitaplık arasında veri aktarmak için kullanılan Uzak Prosedür Çağrısı (RPC) iletişim saplaması.
Düzenleyen kodu Sınırlı erişime sahip kitaplığı kullanan ve SAPI nesnesini içeren kod.

Sandboxed API'ye katkıda bulunma

Katkıda bulunmak istiyorsanız lütfen CONTRIBUTING.md dosyasını okuyun ve bize çekme istekleri gönderin.Hataları bildirebilir veya özellik istekleri de gönderebilirsiniz.

Geliştiricilerle konuşmak veya önemli ürün güncellemeleri hakkında bildirim almak istiyorsanız Google Grubumuza katılabilirsiniz: sandboxed-api-users.