Sandboxed API nedir?

Açık kaynak Sandboxed API (SAPI) projesi, Google'ın Sandbox2 açık kaynak projesinin üzerine kurulmuştur ve C/C++ kitaplıklarının korumalı alana alınmasını daha az zahmetli hale getirmeyi amaçlar.

Sandboxed API'nin üç temel avantajı vardır:

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

  • Çalışma sloganımız şudur: Bir kez korumalı alan, her yerde kullanın. Korumalı Alana Sahip API ile korumalı kitaplıklar kolayca yeniden kullanılabilir ve böylece gelecekteki projelerin yükü ortadan kalkar. Sandboxed API'den önce Google'da kullanılabilen korumalı alanlar, aynı yazılım kitaplığını kullansa bile bir projenin korumalı alana alınması planlanan her yeni örneğiyle ek uygulama çalışmaları gerektiriyordu. Korumalı alana alınan işleme uygulanan Sandbox2 politikalarının ve diğer kısıtlamaların her defasında yeniden uygulanması ve kodun güvenilir ve güvenilmeyen bölümleri arasındaki veri alışverişi mekanizmalarının sıfırdan tasarlanması gerekiyordu.

  • Güvenlik politikalarının, kullanılan tüm kitaplıkların toplam sistem çağrısı/kaynak ayak izini kapsaması gereken tipik korumalı alana sahip projenin aksine her SAPI kitaplığı sıkı bir şekilde tanımlanmış bir güvenlik politikası kullanır.

SAPI projesi, Google Sandbox Ekibi'nin üyeleri tarafından tasarlanmıştır, geliştirilir ve sürdürülür. Ayrıca sahada test edilmiş Sandbox2'mizi kullanır. Şu anda birçok dahili proje, üretim iş yüklerini izole etmek için SAPI kullanıyor.

Hızlı Başlangıç Kılavuzu

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

  1. Gerekli bağımlılıkları yükleyin (bu örnekte Debian 10 Buster kullandığınız varsayılmıştı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ın ve çalıştırın:
    $ 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

Sandboxed API hakkında daha fazla bilgiyi burada bulabilirsiniz:

  • Sandboxed API Explained (Korumalı Alana Sahip API Hakkında Açıklama): Korumalı Alana Sahip API'yi (SAPI) ve temel kavramlarını açıklar.

  • Başlarken: Bir API'nin SAPI korumalı alan sürümünü oluşturmanıza yardımcı olmak için yol gösterici bilgiler sağlar.

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

  • Değişkenler: İşaretçileri basit türlere ve bellek bloklarına geçirirken gereken SAPI Türlerinin kullanımını açıklar.

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

Sözlük

Sandbox2 SAPI'de korumalı alan katmanı sağlayan Google açık kaynak projesi.
Korumalı alan Sandbox2 korumalı alanında yürütülen ikili program için Sandbox2 belgelerine bakın. SAPI bağlamında bu, korumalı alana alınmış C/C++ kitaplığıdır.
SAPI Korumalı Alana Sahip API, Korumalı Alana Sahip Kitaplıklar oluşturma işlevi sağlayan açık kaynak Google projesi.
SAPI Kitaplığı Korumalı Alana Sahip Kitaplık, Korumalı Alan2 kodu ve SAPI çalışma zamanı kodunu içeren, SAPI tarafından oluşturulan kitaplık.
SAPI Nesnesi Ana Makine Koduna dahil edilen ve orijinal olanlar yerine SAPI Türlerini kullanarak Korumalı Alana Sahip Kitaplık için bir 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ı Alana Sahip Kitaplık'ın korumalı alan durumunu yönetmek için kullanılan modül.
RPC Koplaması Sandbox2'ye sarmalanmış ve SAPI Nesnesi ile Korumalı Alana Sahip Kitaplık arasında veri geçirmek için kullanılan Uzak Prosedür Çağrısı (RPC) iletişim saplaması.
Barındırıcı Kodu Korumalı Alana Sahip Kitaplığı'nı kullanan ve SAPI Nesnesini içeren kod.

Sandboxed API'ye Katkıda Bulunma

Katkıda bulunmak istiyorsanız lütfen CONTRIBUTING.md sayfasını okuyun ve bize çekme istekleri gönderin.Ayrıca hataları veya dosya özellik isteklerini de bildirebilirsiniz.

Geliştiricilerle konuşmak veya önemli ürün güncellemeleriyle ilgili bildirim almak isterseniz Google Grubumuza katılabilirsiniz: sandboxed-api-users.