AIエージェント導入・運用

Node.jsのPermission ModelをAIエージェントの境界線にする方法

公開日 ・更新日

Node.jsのPermission Modelは、AIエージェントの権限を狭める有力な手段です。ただし、Node.js公式ドキュメント自身が、これは「seat belt」のような仕組みで、悪意あるコードへの完全な防御ではないと説明しています。AIツールの実行境界を作るときは、`--permission` だけで安全になったと判断しないことが出発点です。

まずaudit modeで必要な権限を見る

`--permission-audit` を使うと、権限違反を記録しながら処理を続けられます。代表的なAIタスクを隔離環境で実行し、どのファイルを読み、どのネットワークへ接続し、子プロセスやworkerを起動したかを記録します。最初から広い許可を与えるより、必要な権限を観察してから絞る方が説明しやすいですね。

enforce modeで操作を絞る

確認した範囲を `--allow-fs-read`、`--allow-fs-write`、`--allow-net`、`--allow-child-process` などへ反映し、`--permission` で許可していない操作を止めます。AIが下書きを作るだけなら、対象ディレクトリの読み取りと一時領域への書き込みまでに留め、外部送信や削除、認証情報の保存場所は対象外にします。

今回のNode.jsセキュリティリリースには、Permission Modelのワイルドカードによるファイルシステム過剰許可(CVE-2026-106071)と、`fs.realpathSync` を使ったバイパス(CVE-2026-106073)が含まれています。Permission Modelを使うなら、まず修正版へ更新し、許可パスの見直しとテストをセットで行います。

Node.jsの外側にも停止線を置く

公式ドキュメントは、workerで `execArgv` を明示すると親の許可がそのまま引き継がれないこと、既存のファイルディスクリプタやシンボリックリンクに制約があること、同じOSユーザーの別プロセスへInspectorを開かせる操作が別途存在することを説明しています。これらはPermission Modelだけで解決する問題ではありません。

MCPの公式ベストプラクティスが示すように、ローカルサーバーはクライアントと同じ権限で動く前提に立ち、サンドボックス、別OSユーザーやコンテナ、ネットワークの出口制限を重ねます。トークンやツールのscopeも最初から全権限にせず、読み取りから始め、危険な操作だけ追加承認にします。

Permission Modelは、AIエージェントが意図せずファイルを変更したり、不要な通信をしたりする範囲を狭める道具です。悪意あるコードの完全な隔離装置ではないからこそ、Node.jsの更新、監査ログ、OSレベルの隔離、人の承認を一つの運用にまとめます。

Node.jsの権限モデルとMCPの接続範囲を、業務に合わせた最小権限・監査・停止手順へ設計したい方は、COZITOへご相談ください。

著者: 松井 勇樹