Google Cloudは、既存のCloud Runサービスインスタンス内で生成AIコードや信頼できないバイナリを隔離実行できる「Cloud Runサンドボックス」をパブリックプレビューとして公開した。WeAreDevelopers World Congressで発表され、コンテナクラスタや専用のmicroVMランタイムを別途構築しなくても、ミリ秒単位で起動する隔離実行境界をサービス内から直接呼び出せる。エージェントやコード実行基盤をCloud Run上で組み立てる利用者向けである。

主なユースケースは次のとおり。

  • LLMコードインタープリタ: モデルが生成したPython・R・SQLを実行し、データセットの分析やグラフ生成、複雑な計算を安全に行う
  • ヘッドレスブラウザ: エージェント用にブラウザを隔離環境で動かし、Webスクレイピングやスクリーンショット取得、Web操作の自動化をホスト環境から分離する
  • 利用者提出コードの実行: Cloud Run上のプラットフォームが、利用者がアップロードしたスクリプトやプラグイン、Webhookを安全に実行する

サンドボックスを使うにはサービスを第2世代の実行環境で稼働させる必要があり、デプロイ時に--sandbox-launcherフラグ(新規はgcloud beta run deploy、既存の更新はgcloud beta run services update)またはYAMLのsandboxLaunchertrueにする。有効化するとCLIバイナリが/usr/local/gcp/bin/sandboxにマウントされ、標準のsubprocess呼び出しで起動できる。例えばLLMが生成したPythonをファイルへ書き出し、sandbox do -- python3 script.pyのように実行する。

セキュリティ境界は次のとおり。

  • 認証情報と環境の分離: サービスの環境変数にアクセスできず、Google Cloudメタデータサーバも呼び出せない
  • アウトバウンドの既定拒否: egressは既定で全て拒否され、--allow-egressを明示したときだけ許可される
  • 読み取り専用ファイルシステムオーバーレイ: コンテナのファイルシステムは読み取り専用ビューで参照し、変更は一時メモリオーバーレイへ書き込む。終了時に生成ファイルは破棄されるが、--export-tar--import-tarで必要なファイルだけを持ち出し・持ち込める

次期バージョンのAgent Development KitにはCloudRunSandboxCodeExecutorが追加され、ADKエージェントから1行でサンドボックス実行を呼び出せるようになる予定である。ベンダー非依存のComputeSDKにも対応し、サービス外からのリモート呼び出しもできる。サンドボックスは実行中インスタンスに割り当て済みのCPUとメモリを共有するため追加料金はなく、1,000個のサンドボックスを起動・実行・停止したときの平均レイテンシは500ミリ秒とされる。

#参考文献