本記事はAIを利用して作成した技術解説・実装例です。掲載するコードや手順は一次情報を基に構成していますが、筆者による実機での動作確認は行っていません。環境やバージョンによって動作が異なる場合があります。
NVIDIA OpenShell 0.1.0は、AIエージェントの動作権限やデータへのアクセスを安全に管理するためのオープンソースランタイムです。本記事では、公式情報に基づきその主な機能や構成要素を整理します。
目的
AIエージェントに自律的な作業を行わせる際、広い権限を与えると予期せぬ変更や情報流出のリスクが生じます。NVIDIA OpenShellを活用することで、エージェント自体のコードを書き換えることなく、ランタイム側でAPI操作の制限や資格情報の保護、ポリシーの検証を行う仕組みを構築できます。
前提・注意点
本記事で解説する内容は一次情報に基づくものであり、実機での動作確認は行っていません。
NVIDIA OpenShell 0.1.0は、サンドボックス実行、制御されたサービスアクセス、資格情報管理、形式的ポリシー解析を組み合わせて機能します。
Cadence、Slack、Gecko Roboticsなどの組織が、チップ設計、エンタープライズ自動化、物理ロボティクスのガバナンスにおいてOpenShellを採用しています。
OpenShellの主要な構成要素
OpenShellは、エージェントのフリートやサンドボックスを管理するため、主に3つのコンポーネントを備えています。
flowchart TD
A[OpenShell Gateway] --> B[OpenShell Supervisor]
B --> C[OpenShell Sandbox]
C -->|カーネルレベルの制御| D[ファイルシステム・プロセス]
B -->|トラフィック検査| E[外部サービス]
OpenShell Gateway: 多数のサンドボックスのライフサイクルとポリシーを管理します。
OpenShell Supervisor: 各サンドボックスとペアになり、エージェントワークロードの外部で動作して、アウトバウンドリクエストをポリシーに対して検証します。
OpenShell Sandbox: カーネルレベルのファイルシステムおよびプロセス制御を用いてワークロードを実行し、スーパーバイザーを経由する以外にはネットワークパスを持ちません。
OpenShell 0.1.0の主な機能
一次情報に記載されている主要な機能と、それがどのように役立つかを整理します。
| 導入された機能 | 概要・役割 |
|---|---|
| マルチテナントプラットフォームサポート | 共有インフラストラクチャ上で、独立したワークスペース、権限、サービスアクセスを持つ複数のチームや顧客向けのエージェントサービスを運用する。 |
| 形式的ポリシー検証(Formal Policy Verification) | 要求された権限が定義されたセキュリティ境界内に留まっているか、あるいはどこでそれを逸脱しているかを人間およびAIのレビュアーに示す。 |
| 拡張可能なセキュリティとガバナンス | サードパーティのセキュリティサービス、ガバナンスシステム、およびカスタムチェックをエージェントワークロード外部のエンースメントに接続する。 |
| 資格情報で保護されたサービスアクセス | 実認証情報はエージェントワークロードの外部に保持したまま、認可されたリクエストにバインドして認証済みサービスを利用する。 |
| CPUおよびGPU実行 | コンテナ、VM、Kubernetes環境にわたり、CPUまたはGPU上で実験やデータ処理を実行する。 |
ポリシーの適用とログ確認の仕組み
OpenShellでは、サンドボックスに対するネットワークアクセスやポリシーをYAML形式で定義し、適用することができます。例えば、アウトバウンドネットワークを完全に制限したサンドボックスを作成し、パブリックエンドポイントへのアクセスを試みた場合、ポリシーによってリクエストは失敗します。
# ネットワークアクセスを許可しないサンドボックスの作成例(実機未確認) openshell sandbox create --name policy-demo \ --no-auto-providers \ --policy examples/no-network.yaml
ホスト側のターミナルからログを確認することで、どのプログラムがリクエストを行い、なぜブロックされたかを把握できます。また、読み取り専用のGitHub REST APIポリシーなどを適用することで、同一のAPIであっても読み取りは許可し、書き込みはブロックするといった制御が可能になります。
資格情報の保護とポリシーアドバイザー
AIエージェントが動作中に新たなデータソースやサービスを必要とする場合、ポリシーによってリクエストがブロックされると、OpenShellはその拒否記録を残します。
ポリシーアドバイザー: 有効化されている場合、エージェントは狭くスコープを絞ったネットワークまたはファイルポリシーの変更を提案できます。この提案はデフォルトで人間によるレビューが必要であり、エージェント自身が承認することはできません。
資格情報の分離: プロバイダープロファイルは資格情報、エンドポイント、許可されたプログラムを定義します。実認証情報はエージェントの外部に保持され、許可されたエンドポイントへのリクエストでのみ置換されます。
形式的ポリシー検証とデプロイ
ポリシーが意図せぬ経路を残していないか確認するため、OpenShellのポリシープロバーは形式論理(formal logic)を使用しています。これにより、モデル化された権限が境界内に留まっているか、あるいは境界を超えるアクションを特定できるかが検証されます。
開発時にはローカルのサンドボックスから開始し、複数ユーザー向けにサービスを提供する段階ではワークスペースとアクセスガイドに従ってSDKを活用できます。コンピュートドライバーにより、Docker、Podman、MicroVM、Kubernetesとの連携がサポートされています。
まとめ
NVIDIA OpenShell 0.1.0は、AIエージェントのコードを書き換えることなくランタイム側で権限を強制するオープンソースの仕組みです。
ゲートウェイ、スーパーバイザー、サンドボックスの連携により、カーネルレベルの制御やトラフィック検査を実現します。
本記事で紹介した手順やコマンドは一次情報に基づくものであり、利用環境やバージョンによって動作や前提条件が異なる場合があります。実際に導入・検証を行う際は、必ず公式ドキュメントおよび最新の移行ノートを確認してください。
