MXC は、ワークロードの意図を、ワークロードを実行するプラットフォーム メカニズムから分離します。 ホスト アプリでは、.NET、TypeScript、または Rust SDK を使用して、リソースのアクセス許可と要求の実行を定義します。 MXC は、要求を現在のホスト上で実行されるコンテインメント バックエンドの操作に変換します。
この設計により、すべてのバックエンドが同じ機能または分離プロパティを提供すると主張することなく、アプリに一貫した統合サーフェスが提供されます。
アーキテクチャ レイヤー
MXC 統合には、次の 4 つの主要レイヤーがあります。
| レイヤー | 責任 |
|---|---|
| ホスト アプリまたはエージェント ランタイム | タスクを分類し、信頼できるポリシーの既定値を選択し、入力を提供し、出力と承認を処理します |
| MXC SDK とポリシー コントラクト | サポートを検出し、ワークロードの意図をバージョン管理された構成に変換し、サンドボックスを開始し、ライフサイクルと診断情報を提供します |
| MXC 実行レイヤー | 構成を検証し、使用するバックエンドを決定して、サポートされている実行規約をプラットフォームの操作に変換する |
| コンテインメント バックエンド | 実行環境を作成し、プラットフォームとバックエンドがサポートするポリシー機能を適用します |
ホスト アプリは、ポリシーの決定を引き続き担当します。 コーディング エージェントはモデルまたはリソースの付与を提案できますが、信頼できるロジックや人間の承認なしに独自の権限を選択または拡張することはできません。 ホストが MXC の外部で実行するコードは、ワークロードの隔離の外側に残ります。
ポリシー、構成、およびランタイムの設定
このポリシーは、ワークロードがアクセスできるものを記述します。 実行要求では、実行対象、実行場所、使用するコンテインメントを指定します。 ランタイム設定は、実行に必要な値 (既に実行されているプロキシのエンドポイントなど) を提供します。
V1 SDK では、これらの設定が 1 つの ContainerRequestに含まれます。 ファイル システム、ネットワーク、UI の各プロパティはアクセスを記述し、コマンド、作業ディレクトリ、環境、タイムアウト、および包含プロパティは実行を記述します。 SDK は要求を安定した 1.0.0 スキーマ コントラクトに変換するので、スキーマ バージョンを指定する必要はありません。
JSON 形式の実行構成とシリアル化された SDK オブジェクトは、そのまま置き換えることはできません。 たとえば、要求の ui.allowInputInjection プロパティと timeoutMs プロパティは、構成の ui.injection と process.timeout の設定に対応します。 SDK 型、または作成する構成バージョンのスキーマを使用します。
単発実行と状態認識型実行のライフサイクル
MXC では、2 つのライフサイクル パターンがサポートされています。
ワンショット実行 では、サンドボックスが作成され、1 つのワークロードが実行され、サンドボックスが破棄されます。 独立したコーディング エージェント ツール、生成されたコマンド、ビルド、テスト、スクリプトに使用できます。 各アクションの新しい狭いサンドボックスは、保持される状態を限定し、1 つの広範なポリシーを作成する負荷を軽減します。
状態認識型実行には、プロビジョニング、開始、実行、停止、プロビジョニング解除の 5 つのフェーズがあります。 プロビジョニングは不透明な ContainerIdを返し、呼び出し元はそれを変更せずに後続のフェーズに渡します。また、呼び出し元は破棄前に複数のコマンドを実行できます。 このパターンは、ワークロードがエージェント プロファイル、インストールされているツール、構成、オペレーティング システム環境などの永続的な状態に依存する場合にのみ使用します。 MXC 1.0 では、V1 SDK ライフサイクル API は IsolationSession と WSLc をサポートしています。
状態認識型実行を使用しても、MXC が状態の管理主体になるわけではありません。 バックエンドはサンドボックス リソースを所有し、呼び出し元はその識別子を格納し、そのライフサイクルを管理します。 実行の停止とリソースのプロビジョニング解除は異なる操作です。停止後にどの状態が存続するかは、バックエンドによって異なります。
Run、spawn、PTY execution は、環境が存在する期間ではなく、実行中のプロセスとホストがどのように対話するかを説明します。 run コールは、実行が完了したときにキャプチャされた出力を返します。 spawn 呼び出しは、ワークロードの実行中にホストにライブの標準入力、出力、およびエラー ストリームを提供します。 PTY 呼び出しでは、ワークロードをホストが管理する擬似端末に接続します。擬似端末のサイズもホストが制御します。 選択した SDK とバックエンドで、サポートされている組み合わせを確認してください。
ホストの責任
実行タイムアウトを設定し、ワークロードの失敗、起動エラー、および取り消しを個別に処理します。 SDK 待機の取り消しは、ワークロードの終了と必ずしも同じではありません。 SDK で定められた終了処理とリソースの破棄に関する規約に従い、必要な待機処理を完了してください。これにより、実行処理と、必要に応じて行うアクセス拒否の記録処理を完了できます。
状態を考慮した実行では、後のフェーズで失敗した場合でもクリーンアップを確実に行うようにします。 失敗した停止によって、アプリが所有するリソースのプロビジョニング解除の試みが妨げられるべきではありません。
サンドボックスの破棄は、通常、許可されたホスト ディレクトリへの書き込み、または許可されたネットワーク サービスを介して実行されるアクションを元に戻すわけではありません。 出力場所を慎重に選択し、後続のタスクで使用する前に保持する結果を決定します。
コンテナーの種類を選択する
ワークロードの目標と制約から始めます。次に例を示します。
| ワークロードのニーズ | 開始タイプ | なぜでしょうか |
|---|---|---|
| 起動時の負荷を抑えながら、特定のホスト ツールやパスへのアクセスを必要とするコマンド | プロセスの分離 | タスクに限定されたアクセス許可を持ち、ホスト環境に近い形で実行されます |
| 個別のWindows プロファイルまたは対話型セッションを必要とするワークロード | セッションの分離 | MXC ファイル、ネットワーク、または UI のフィルタリングなしで、ワークロードのユーザーとセッションの状態を対話型ユーザーの環境から分離します |
| 別のカーネルまたはゲスト オペレーティング システムを必要とするワークロード | 仮想化環境 | 選択したバックエンドの機能に応じて、VM またはマイクロ VM の境界を使用します |
Windows では、プロセス分離が一般的に使用されます。起動時の負荷を抑えながら特定のホスト リソースにアクセスする必要がある、多くのワークロードに適しているためです。
セッション分離はユーザーとセッションを分離しますが、ワークロードがアクセスできる内容は制限されません。 Windowsでは、IsolationSession はファイルシステムと UI ポリシーを拒否します。 また、その要求では、エグレス、イングレス、ホスト ループバックを allow に設定し、ネットワーク ルールやプロキシを設定しないようにする必要があります。 ワークロードでこれらの制限が必要な場合は、それらを適用できるバックエンドを選択します。 詳細については、「バックエンドの選択と設定」を参照してください。
process などの抽象的な実行要件を指定すると、MXC がプラットフォームに応じたバックエンドを決定できます。 特定の運用環境またはライフサイクルが必要な場合は、具体的なバックエンドを選択します。 抽象的な意図でも、より強力な分離メカニズムでも、すべてのファイル、ネットワーク、または UI コントロールのサポートは保証されません。
選択時のガイダンスや各バックエンドの詳細なドキュメントへのリンクについては、「MXC のコンテインメント オプションとプラットフォームのサポート」を参照してください。
アーキテクチャの学習モード
学習モードは、Windows ProcessContainer ワークロードのポリシー作成と診断に役立ちます。 Learning ModeでMXCポリシーを作成・調整するを参照してください。
コーディング エージェントの設計ガイダンス
コンテインメントの種類の選択に役立つコーディング エージェントを使用する場合は、次の項目を評価するように依頼します。
- アプリでサポートする必要があるオペレーティング システムとプロセッサ アーキテクチャはどれですか?
- ワークロードに必要なファイル、ネットワーク パス、ユーザー インターフェイス機能、デバイス、ホスト ツールはどれですか?
- 各コマンドは独立していますか、またはコマンド間で ID と状態を保持する必要がありますか?
- どのような起動時間、リソースの使用、デプロイ、および相互作用の制約が適用されますか?
- ワークロードには、Windows、Linux、フル デスクトップ、または別のオペレーティング環境が必要ですか?
- ワークロードの信頼の前提条件とデータに適した分離境界はどれですか?
- 使用可能な各バックエンドで強制できる要求されたポリシー機能はどれですか?
エージェントは、実行可能な封じ込め方式の種類を比較し、その前提条件とトレードオフを示し、裏付けのない要件を特定する必要があります。 その後、適切なコンテナー種別を選択し、ポリシーを構築できます。
関連するコンテンツ
Windows developer