テクノロジー 注目度 90

安全かつスケーラブルなエージェントサンドボックスインフラストラクチャの構築

ブラウザユースは、数百万ものウェブエージェントを運用しています。当初はAWS Lambda上で実行され、各呼び出しが分離され、スケールも瞬時に実現し、秘密情報への懸念はありませんでした。その後、コードの実行機能が追加され、エージェントはPythonを実行したり、シェルコマンドを実行したり、ファイルを生成するようになりました。これは、エージェントがツールとして使用できる独立したサンドボックスとして構築されました。セキュリティは良好でしたが、エージェントのループはREST APIと同じバックエンドで実行されていました。再デプロイするとすべての稼働エージェントが停止し、メモリ消費量の多いエージェントはAPIのパフォーマンスを低下させました。 そこで、パターン1(ツールを分離する)からパターン2(エージェントを分離する)に移行しました。パターン2では、エージェントはゼロの秘密情報を持つサンドボックス内で実行され、すべての外部との通信は、資格情報を保持するコントロールプレーンを通じて行われます。これにより、エージェントは使い捨てになり、盗むべき秘密情報がなく、状態を保存する必要がないため、自由に殺したり再起動したり、独立してスケールアップできます。コントロールプレーンが真実を保持します。サンドボックスは同じコンテナイメージでどこでも実行されます。本番環境ではUnikraftマイクロVMとして、開発と評価ではDockerコンテナとして実行されます。単一の構成スイッチ(sandbox_mode: 'docker' | 'ukc')によって、プロビジョニングコードのパスが制御されます。 Unikraftは各エージェントに独自のマイクロVMを提供し、1秒未満で起動します。サンドボックスには、SESSION_TOKEN、CONTROL_PLANE_URL、SESSION_IDという3つの環境変数のみが外部から渡されます。AWSキー、データベース資格情報、APIトークンはありません。Unikraftにより、アイドル状態のサンドボックスではVMが停止され、次の要求があったときに再開されるスケールゼロ機能が提供されます。コントロールプレーンはステートレスなFastAPIサービスであり、サンドボックスからの各リクエストにはBearer:{session_token}ヘッダーが付属しています。コントロールプレーンはトークンを検索し、有効であることを確認して、実際の資格情報を使用して操作を実行します。ファイル同期は、プレサインされたURLを使用して行われます。サンドボックスは/workspaceディレクトリを持ち、エージェントが読み書きを行います。ファイル同期サービスは変更を監視し、定期的にS3に同期しますが、サンドボックスはAWS資格情報を見ることができません。代わりに、コントロールプレーンにpresigned S3アップロードURL(セッションにスコープ付け)の要求をします。ダウンロードも逆方向で同じ方法で行われます。エージェントは、Gatewayプロトコルを使用してコントロールプレーンと通信します。本番環境ではControlPlaneGatewayがコントロールプレーンにHTTPリクエストを送信し、開発と評価ではDirectGatewayがLLMを直接呼び出し、履歴をメモリに保持します。エージェントコードはどちらを使用しているのか知りません。同じインターフェース、同じ動作、異なるバックエンドです。コントロールプレーンはステートレスであるため、トークンを検証して作業を行い、結果を返します。より多くのエージェントが必要な場合は、さらに多くのサンドボックスを起動し、より多くのスループットが必要な場合は、ロードバランサーの後ろにコントロールプレーンインスタンスを追加します。各層は独自のボトルネックに基づいてスケールアップします。まとめると、コードを実行できるエージェントをサンドボックス化する方法は2つあります。ツールを分離するか(コードの実行をサンドボックスで実行し、エージェントをバックエンドに残す)またはエージェントを分離する(エージェント全体をサンドボックスに配置し、コントロールプレーンを通じて外部と通信する)。私たちはパターン2を採用しました。コントロールプレーンはすべての資格情報を保持し、LLMコール、ファイルストレージ、請求のすべてについてプロキシとして機能します。サンドボックスには3つの環境変数しか渡されず、それ以外のアクセスはありません。本番環境ではUnikraftマイクロVMとして、開発と評価ではDockerコンテナとして実行されます。どこでも同じイメージです。トレードオフは、各操作に1回の追加ネットワークホップと、1つではなく3つのサービスをデプロイすることです。実際には、LLM応答時間と比較して遅延は無視できるものであり、運用複雑さはオペレーションチームがすでに知っている種類のものです。重要なのは、エージェントには盗む価値のあるものも保存する価値もないということです。


背景

この記事は、ブラウザユースが数百万のウェブエージェントを安全かつスケーラブルに実行するために構築したサンドボックスインフラストラクチャについて説明しています。従来のLambdaベースのアーキテクチャから、より高度なパターン2(エージェントを分離する)に移行することで、セキュリティとスケーラビリティを向上させています。

重要用語解説

Unikraft:[マイクロVM技術]。軽量で高速な仮想マシンを提供し、サンドボックス化された環境に適しています。

Control Plane:[コントロールプレーン]。エージェントが外部システムにアクセスするためのインターフェースとして機能します。資格情報を管理し、リクエストを処理し、リソースへのアクセスを制御します。

Gateway Protocol:[ゲートウェイプロトコル]。サンドボックスとコントロールプレーンの間の通信プロトコルです。DirectGatewayはローカル開発で使用され、ControlPlaneGatewayは本番環境で使用されます。

今後の影響

このアプローチは、セキュリティ強化、スケーラビリティ向上、運用管理の簡素化という点で大きな影響を与えます。他の組織も同様のサンドボックスインフラストラクチャを構築することで、安全かつ効率的にエージェントベースのアプリケーションを実行できるようになります。