PythonでのAIエージェント:コンテナとMicroVMを用いたコード実行の隔離方法

PythonでのAIエージェント:コンテナとMicroVMを用いたコード実行の隔離方法
1 分の読書

AIエージェントが自身のコードを記述し実行する場合、その安全性は、そのコードが実行される環境の安全性に依存します。 Machine Learning Masteryで公開されたチュートリアルでは、著者がこのコードを3つのレベル(制限付きサブプロセス、強化されたDockerコンテナ、FirecrackerマイクロVM)で隔離する方法を示し、それらのセキュリティとレイテンシを比較しています。

サブプロセスは最も軽量なレベルです:これは計算時間、メモリ、ファイルサイズが制限された子プロセスですが、ホストマシンのカーネルとファイルを共有します。コンテナは名前空間とコントロールグループ(cgroups)を追加しますが、ホストのカーネル上で動作するプロセスの集合に留まります。記事は、2025年11月に、コンテナランタイムエンジンruncの3つの脆弱性により攻撃者がコンテナから脱出できたことを指摘しています。一方、マイクロVMは、各環境に仮想マシンを実行するハイパーバイザーの背後で独自のカーネルを提供します。

この仕組みは、エージェントが利用できる単一のツールrun_pythonに依存しています。モデルによって生成された各コードは、run(code)メソッドを持つ「サンドボックス」オブジェクトを通過するため、隔離レベルを変更してもエージェント自体は変更されません。このチュートリアルには、Python 3.10以上、サブプロセスレベル用のLinuxまたはWSLシステム、コンテナ用のDocker、マイクロVM用のE2BアカウントとAPIキーが必要です。エージェント用のAnthropic APIキーは有用ですが、テストでは省略可能です。

各レベルに対する同一の6つの攻撃

3つのレベルを比較するため、同じ6つの悪意のあるプログラムが実行されます:無限ループ、512MBのメモリ割り当て、200プロセスの「フォークフラッド」、50MBファイルの書き込み、偽の認証情報ファイルの読み取り、偽の内部サービスへの接続です。攻撃は、出力にキーワードが現れない場合、または無限ループの場合は実行がタイムアウトした場合に、ブロックされたとみなされます。

通常のLinuxユーザーで実行されたサブプロセスレベルでは、4つの攻撃がブロックされ、2つが通過しました。プロセス制限は専用ユーザーにのみ適用されるため、フォークフラッドは許可され、偽の認証情報ファイルはコードがユーザーの権限で実行されるため読み取り可能なままです。著者は、このレベルは主に信頼できるコードに適していると結論付けています。

Dockerコンテナについては、著者は、選択されたオプションでは、コンテナにネットワークがなく、そのファイルシステムにユーザーファイルが含まれず、メモリ、プロセス、ディスクの制限が適用されるため、Dockerは6つの攻撃すべてをブロックするはずだと述べています。マイクロVMでは、メモリ、プロセス、ディスクへの攻撃は仮想マシンの制限に達する可能性がありますが、それらは仮想マシン内に閉じ込められており、秘密ファイルやローカルサービスはそこには存在しません。

レイテンシとレベルの選択

サブプロセスは単にPythonを起動するだけなので、最も高速であるはずです。他の2つのレベルについては、著者は公開されている数値は保証ではなく主張であると明記しています:引用された記事によると、E2Bは約150ミリ秒で起動し、一方AWSとDockerは自社のマイクロVM製品についてほぼ瞬時の起動を謳っています。スクリプトbench.pyを使用して、自身のマシン上で、print(1)プログラムを10回実行した際の中央値と最長時間を測定できます。

著者は、サブプロセスは個人開発用スクリプトなどの信頼できるコードに限定し、強化されたコンテナはホストを制御できリスクが低い場合に使用し、その際はruncを最新に保つことを推奨しています。マイクロVMは、複数のユーザーからのコード、機密情報に関わるあらゆるもの、およびエージェント自身がコンテナを構築・実行する必要がある場合(Dockerによると従来のコンテナではうまく処理できない)に適しています。Dockerは2026年4月にマイクロVM上のDocker Sandboxesを開始し、AWSは最大8時間状態を保持し、アイドル時にサスペンドするLambda MicroVMsを提供しています。Dockerによると、ファイル、ネットワークルール、シークレットは、エージェントの実行前にインフラストラクチャによって定義されるべきであり、エージェント自身によって定義されるべきではありません。

S’abonner
Notification pour
guest

0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x