なぜAIエージェントには隔離された実行環境が必要なのか?
AIエージェント(AI Agents)の動作は、クラウドAPIの呼び出しだけに留まりません。コマンドライン命令の実行、パッケージのインストール、ファイルの読み取り、直接的なネットワーク接続の確立など多岐にわたります。多くの場合、エージェントはインターネットから取得したばかりの信頼できないテキストに基づいて行動するため、インフラストラクチャ内で実際の認証情報を保持する「信頼できないコード」として機能することになります。
NVIDIAによって開始され、CNCFのサンドボックス(Sandbox)プロジェクトに加わったOpenShellプロジェクトは、各エージェントを専用のコンテナ内に隔離することで、安全な実行環境を提供します。このシステムは、隔離環境外にある信頼されたスーパーバイザー(Supervisor)に依存し、YAMLファイルで規定された4つの主要な軸を通じて権限を制御します。
- ファイルシステム: LinuxカーネルのLandlock技術を使用して読み書き可能なパスを制限し、/usrや/etcなどのパスを読み取り専用に設定します。
- プロセス管理: コンテナからルート権限(non-root)を剥奪し、すべてのカーネル機能を無効化して、実行前にseccompルールを適用します。
- ネットワーク制御: デフォルトで外部トラフィックを遮断し、実行ファイル名、ホスト、コンセプト、ポートに基づいて特定の範囲のみを許可します。
- 認証情報: エージェントから実際のキーを隠し、許可されたエンドポイントへの接続時にのみスーパーバイザーが処理する一時的なトークンに置き換えます。
Kubernetes環境における隔離環境の仕組み
Kubernetesレベルでは、OpenShellは独自のスケジューラを持たず、SIG AppsアドバイザリグループのAgent Sandboxプロジェクトを活用します。OpenShell Gatewayが環境のライフサイクル管理を担当し、Agent SandboxがこれらのリクエストをPods、Services、PVCs、NetworkPoliciesなどの標準的なKubernetesリソースに変換します。
サイクルは、mTLSプロトコルを介してGatewayに隔離環境の作成リクエストを送信することから始まります。そこで送信者の身元が確認され、ポリシーが変換され、安全でない設定が削除されます。次に、エージェントの外部通信を遮断し、内部通信をポート5500経由のスーパーバイザーのみに制限するネットワークポリシーが作成されます。次のステップでは、スケジューリング制限を解除してAIエージェントの実行を開始する前に、スーパーバイザーが作成されたPodのセキュリティ特性(ルート権限の使用禁止やホスト名前空間の共有がないことなど)を確認する必要があります。
OpenShellとAgent Substrateの比較
CNCF内には、同様のソリューションを提供するAgent Substrateという別のプロジェクトも存在します。両プロジェクトともKubernetes上でのAIエージェントの隔離を目的としていますが、インフラストラクチャとユースケースにおいて根本的に異なります。
- ポリシーの精度: OpenShellは、単一環境専用のスーパーバイザーで各ネットワークリクエストを検査します。これにより、例えば同じツールを使用してGitHubのイシューを読み取ることは許可し、新しいイシューの作成は禁止するといった制御が可能です。一方、Substrateはドメインとホストに基づいて、共有の出口ゲートウェイ(Egress Gateway)でトラフィックを分析します。
- Kubernetes内での可視性: OpenShellの各隔離環境は、ネイティブのKubernetesツールやRBACを通じて監視・管理できるリソースの集合として扱われます。対照的に、SubstrateはモデルやポリシーをKubernetes APIサーバーから離れた独自のPostgreSQLデータベース内に保持します。
- 隔離モデルと拡張性: Substrateは、コスト削減のためにアイドル状態のコンテナを停止・再開できるよう、gVisorやCloud Hypervisorなどの厳格な隔離技術を必要とします。一方、OpenShellは標準的なLinuxコンテナを提供し、必要に応じてより強力な隔離技術を統合できる柔軟性を備えています。
Kyvernoエンジンを使用したセキュリティの強化
OpenShellがエージェントの内部動作を制御する一方で、Kyvernoのようなポリシーエンジンは、アドミッションコントロール(Admission Control)時にKubernetesリソース自体が改ざんされないことを保証します。Kyvernoは、イメージダイジェスト(Image Digests)の確認、CPUやメモリの使用上限の設定、スーパーバイザー専用のRBACロールへの過度な権限付与の防止などを確実に行います。
さらに、Runtime for KyvernoのようなeBPFベースのカーネル監視ツールを使用すると、承認されたセキュリティゲートウェイを経由せずにCLIクライアントを実行したり外部モデルに接続したりするような、クラスター内の未承認のAIツールを検出できます。
プラットフォームエンジニアにとって実務上何が変わるのか?
AIアプリケーションへのセキュリティ適用は、もはやAPIの保護だけに留まりず、コンテナ内でのコードの実際の実行コンテキストにまで及びます。OpenShellプロジェクトは、プラットフォームチームにエージェントが実行する各操作に対する第7層(L7)レベルでのきめ細かな制御権を与え、Kyvernoとの統合により、運用の複雑さを増すことなくKubernetes環境内でのガバナンスと構造的コンプライアンスの維持を可能にします。