multikernel/sandlock

The lightest AI sandbox. A process-based sandbox for Linux, no container, no VM, no privilege, no prompt injection

解決する課題

Sandlockは、Linux向けの軽量なプロセスサンドボックスであり、ルート権限、cgroups、またはコンテナイメージを必要とせずに、信頼できないコードに対して厳格な隔離を提供します。これは、重量級の仮想マシン/コンテナと、全く保護されていない実行環境との間のギャップを埋め、ユーザーがファイルシステムアクセス、ネットワーク接続、およびシステムリソースを精密に制御してプログラムを実行できるようにします。

仕組み

SandlockはRustで書かれており、Linuxカーネルの機能を組み合わせてセキュリティ境界を強制します:

  • Landlock: ファイルシステム、ネットワーク、およびIPCの隔離に使用されます。
  • seccomp-bpf: syscallフィルタリングに使用されます。
  • seccomp user notification: スーパーバイザプロセスが特定のsyscallをリアルタイムでインターセプトして処理できるようにし、リソース制限の適用、/procの仮想化、およびCopy-on-Write (COW) ファイルシステムの実現を可能にします。
  • COW Filesystem: 作業ディレクトリへの書き込みをインターセプトして上位ディレクトリにステージングし、変更がコミットされるまで元のファイルが保護されるようにします。
  • Transparent Proxy: HTTPレベルのACL(メソッド、ホスト、パス)を実装し、HTTPSトラフィックに認証情報やCA証明書を注入できます。

対象ユーザー

  • 信頼できないコード(例:AIエージェントやサードパーティのスクリプト)を安全に実行する必要がある開発者。
  • コンテナやMicroVMと比較して、高速な起動時間(約5ms)を求めるユーザー。
  • 複雑なコンテナランタイムやルート権限の管理なしにプロセスを隔離する必要があるシステム管理者。

ハイライト

  • ルート権限不要: ルート権限やcgroupsを一切使用せずに動作します。
  • きめ細かなネットワーク制御: IPの許可/拒否リスト、ポート固有のルール、およびHTTPレベルのACLをサポートしています。
  • リソース制限: seccomp通知を介してメモリとプロセス数の制限を強制します。
  • 動的なポリシー: 実行時にsyscallイベントを検査して、その場で権限を調整できるpolicy_fnを備えています。
  • 柔軟な統合: CLI、Rustライブラリ、およびPythonとGo用のSDKを提供しています。
  • OCI互換性: containerd、CRI-O、およびKubernetesで使用できるOCIランタイムshimが含まれています。