Agent Sandboxing
エージェントのサンドボックス化によってAIエージェントを隔離し、ファイルやネットワークへのアクセスを制限して、プロンプトインジェクション、ツールの悪用、データ流出によるリスクを軽減する方法を学びます。
エージェントのサンドボックス化とは、AIエージェント、そのツール、または生成されたコードを、制限された実行環境内で実行することです。サンドボックスは、エージェントがアクセスできるファイル、ネットワーク、認証情報、プロセス、コンピューティングリソースを制限します。エージェントが安全でない判断をした場合や悪意のある指示を処理した場合、こうした境界によって本番システムや機密データへの潜在的な影響を抑えられます。
エージェントのサンドボックス化の仕組み#
エージェントは、多くの場合、モデルをツール、メモリ、API、実行ループに接続するエージェントハーネスを介して動作します。サンドボックス化は、これらの機能に対する強制レイヤーを追加します。「プライベートファイルにアクセスしないでください」といったプロンプトにモデルが従うことを信頼するのではなく、実行環境が技術的にそのアクセスを防ぎます。
実用的なサンドボックスは、次の要素を組み合わせる場合があります。
- タスクの完了後に破棄される一時的なコンテナまたは仮想マシン。
- 書き込み可能なワークスペースを小さく限定した、読み取り専用のベースファイルシステム。
- 承認済みドメインまたは内部サービスへの通信のみを許可する、送信ネットワークのルール。
- 現在のユーザーとタスクに範囲を限定した、有効期間の短い認証情報。
- CPU、メモリ、ストレージ、プロセス、実行時間の上限。
- ツール呼び出し、ファイル変更、ネットワークリクエスト、ポリシー違反を記録する監査ログ。
DockerのデフォルトseccompプロファイルなどのLinux制御機能はシステムコールを制限でき、Dockerのリソース制約はリソース消費を制限します。クラスター規模では、Kubernetes NetworkPolicyによって、エージェントのワークロードが通信できるサービスを制御できます。
エージェントのサンドボックス化が重要な理由#
エージェントは、関数呼び出しとツールの使用を通じてアクションを実行できるため、その失敗はチャットボットの誤った応答よりも重大な結果を招く可能性があります。コーディングエージェントはシェルコマンドを実行することがあり、運用エージェントはレコードを更新したりデプロイを開始したりすることがあります。
OWASP AIエージェントセキュリティガイダンスでは、ツールの悪用、権限昇格、メモリポイズニング、データ流出などのリスクが挙げられています。サンドボックス化は、特にウェブページ、ドキュメント、画像メタデータ、ツールの応答に隠されたprompt injectionにエージェントが遭遇した場合に、こうしたリスクの封じ込めに役立ちます。OWASPのprompt injection防止ガイダンスでは、入力フィルタリングだけではあらゆる悪意のある指示を確実に特定できないため、多層防御を推奨しています。
サンドボックス化は、過剰な自律性への対策にもなります。不要なツール、広範な認証情報、制限のない自律性を持つエージェントは、モデルのエラーや操作された入力を受けて、損害をもたらすアクションを実行する可能性があります。過剰な自律性に関するOWASPのガイダンスでは、モデルの振る舞いだけに頼らず、ツールの機能、権限、自律性を最小限に抑えることを推奨しています。
サンドボックス化と関連する制御機能の比較#
エージェントのサンドボックス化は他のセキュリティメカニズムを補完しますが、それらに取って代わるものではありません。
- AIガードレール: ガードレールは入力、出力、または提案されたアクションを検査します。サンドボックスは、ガードレールが脅威を見逃した場合でも、環境上の制限を強制します。
- アクセス制御: 認可によって、アクションが許可されているかどうかが決まります。サンドボックス化は、認可ロジックが回避された場合に利用できるリソースを制限します。AWSのIDおよびアクセス管理に関するベストプラクティスでは、一時的な認証情報と最小権限の付与が重視されています。
- コンテナ化: コンテナはプロセスをパッケージ化して分離しますが、デフォルトのコンテナ設定が強固なセキュリティ境界になるとは限りません。Ultralytics Dockerクイックスタートは、一貫性のある分離されたコンピュータービジョン環境をサポートします。一方、本番環境のサンドボックスには、ファイルシステム、ケーパビリティ、ネットワーク、リソースに関する追加の制限が必要です。
- テスト環境: 開発用の「サンドボックス」とは、システムの非本番環境用コピーです。エージェントのサンドボックス化は実行を具体的に制限するもので、開発環境と本番環境の両方に適用できます。
Ultralytics Agent Skillsはコーディングエージェント向けの再利用可能な指示を提供しますが、スキルによって分離境界が作られるわけではありません。スクリプトと依存関係は引き続きレビューし、適切な権限で実行する必要があります。
実際の活用例#
エンタープライズ向けコーディングエージェント: コーディングエージェントは、一時的なワークスペース内でリポジトリを調査し、ファイルを変更して、テストを実行できます。サンドボックスでは、割り当てられたリポジトリのみをマウントし、本番環境の認証情報をブロックし、承認済みのパッケージレジストリ以外への送信トラフィックを制限して、マージやデプロイの前に人間の承認を必須にします。そのため、依存関係が侵害されたり指示が挿入されたりしても、内部ストレージを自由にスキャンしたり、ソースコードを送信したりすることはできません。
ビジョン対応の運用エージェント: 倉庫のエージェントは、カメラ画像をUltralytics YOLO26で分析して通路の障害物を特定し、保守チケットを作成する場合があります。サンドボックスでは、受信画像への読み取り専用アクセスと、推論APIおよびチケット管理APIへのネットワークアクセスのみを許可できます。カメラの管理権限、従業員記録、デプロイ認証情報を無制限に与えるべきではありません。
認識ステップでは、ドキュメント化されたUltralytics YOLOのpredictワークフローを使用できます。
from pathlib import Path
from ultralytics import YOLO
source = "https://ultralytics.com/images/bus.jpg"
output_path = Path("sandbox_result.jpg")
# 制限されたワークスペース内で視覚推論を実行
model = YOLO("yolo26n.pt")
results = model(source)
result = results[0]
result.save(filename=str(output_path))Pythonコードは通常の推論を実行し、周囲のランタイムがファイル、ネットワーク、認証情報、リソースを制限してサンドボックスを提供します。
実践的な設計ガイダンス#
最初はアクセスを許可せず、各タスクに必要なものだけを明示的に許可してください。一時的なワークスペース、有効期間の短い認証情報、読み取り専用のマウント、送信ネットワークの許可リスト、タイムアウト、リソースクォータを使用してください。取り消せないアクションには承認を必須とし、認可チェックはモデルの外部に保持してください。
ログ内に秘密情報を露出させずに、ブロックされた操作を含め、試行されたすべてのアクションを記録してください。チームは、エージェントのワークフロー内でビジョンエンドポイントへのリクエスト、レイテンシ、エラー、ヘルス状態を監視するために、Ultralytics Platformのデプロイ監視機能を使用できます。最後に、悪意のあるファイル、間接的なプロンプト、ツールの反復呼び出し、リソース枯渇の試みに対して、システム全体をテストしてください。NIST AIリスクマネジメントフレームワーク・プレイブックは、こうしたリスクを統制、測定、継続的に管理するための、より広範な枠組みを提供します。









