この記事の音声は準備中です。
音声の一覧・再生リストへツール権限設計とサンドボックス
この記事の目的
「モデルは騙されうる」を前提に、被害の上限を決める側 — ツールの権限とサンドボックス(sandbox) — を設計できるようになります。最小権限・ユーザー権限の継承・承認ゲートの配置、コード実行やコンピュータ操作型に必須の隔離環境、外部 MCPツールやデータソースを LLM アプリケーションに接続するための標準プロトコル。概要は ツール使用、接続の実務は ツール接続標準(MCP とエコシステム) サーバーを信頼する条件を扱います。
対象読者
- Agent に書き込み系ツール・コード実行・外部サービス接続を持たせるエンジニア
- Agent の権限設計をレビューするテックリード・セキュリティ担当者
前提知識
- ツール使用 — 権限の行使点となる仕組み
- Agent の脅威モデル概観 — 「被害の上限は権限が決める」という前提
- ツール接続標準(MCP とエコシステム) — 外部ツールサーバーのリスクの概要
本文
概要: 権限は「渡した分だけ悪用されうる」と考える
プロンプトインジェクションモデルへの入力に紛れ込ませた指示で、開発者の意図した挙動を上書きする攻撃。ユーザー入力による直接型と、Agent が読む外部コンテンツ経由の間接型がある。(プロンプトインジェクション)を完全には防げない以上、セキュリティ設計の主戦場は「騙されたときに何ができてしまうか」の側にあります。原則は 1 つです — Agent の権限は、騙された・誤ったときに許容できる被害の範囲まで。
出発点として、「この Agent が悪意ある操作者に乗っ取られたら何ができるか」を書き出してみてください。その答えがそのまま、権限設計の現状評価になります。
詳細: 権限設計の 4 原則
| 原則 | 内容 | 実装例 |
|---|---|---|
| 最小権限 | タスクに必要なツールだけを渡す。「あると便利」は渡さない | タスク種別ごとにツールセットを分ける。照会タスクに書き込みツールを渡さない |
| スコープの限定 | ツールが触れるデータを、対象ユーザー・対象テナントの範囲に絞る | 検索・取得系ツールの実装側で権限フィルタを掛ける(モデルへの指示で絞らない) |
| リスクの分離 | 副作用・外部送信・非信頼入力・機微データアクセスを別の軸で分類 | 外部取得を伴う読み取りは送信経路(GET 引数・応答 URL の取得を含む)。機微データの読み取りにもアクセスログと量の上限 |
| ユーザー権限の継承 | Agent は「呼び出したユーザーの権限」で動く。ユーザーを超える権限を持たせない | 実効権限 = ユーザー権限 ∩ Agent の職務。subject と actor を分けた委任トークンを使い、ユーザートークンのパススルーを避ける(認証・認可) |
4 つ目は混乱した代理人(confused deputy)問題への対策です。Agent が全権のサービスアカウントで動いていると、権限の低いユーザーが「Agent 経由なら」他人のデータに届いてしまいます。認可の判定は Agent への指示ではなく、ツールの実装とその先のシステムで行います。
詳細: 承認ゲートの配置
すべての操作に承認を求めると承認疲れで形骸化します(Human-in-the-Loop 設計)。基準は 2 軸です。
- 取り消せるか — 取り消せない操作(送信・削除・決済)は承認必須の第一候補
- 影響範囲 — 件数・金額・対象(社外に見えるか)で閾値を切る(例: 10 件超の一括更新、閾値以上の金額)
さらに、信頼できないコンテンツを処理した直後の危険操作は、通常なら自動承認できる操作でも承認対象に格上げする設計が有効です(間接インジェクションの典型経路を塞ぐため)。
詳細: サンドボックス — コード実行と画面操作は隔離が前提
モデルが生成したコードの実行と、コンピュータ操作型 Agent画面(スクリーンショット)を観測し、マウス・キーボード操作で GUI を直接操作する Agent の類型。(コンピュータ操作型・マルチモーダル Agent)の動作環境は、本番システム・開発者の端末から隔離された使い捨て環境で行うことを前提にします。
| 制御 | 内容 |
|---|---|
| 実行環境の分離 | コンテナ・VM 等の使い捨て環境。ホストのファイルシステム・認証情報に触れない |
| ネットワーク制限 | 外向き通信(エグレス)を許可リストで絞る。任意の宛先への送信はデータ持ち出しの経路になる(データ漏えい対策) |
| 資源制限 | CPU・メモリAgent が「覚えている」ように見えるデータの総称。短期記憶(コンテキスト)・作業状態・長期記憶(外部ストレージ)の 3 層に分けて設計する。・実行時間・ディスクの上限(暴走・DoS 対策) |
| 専用アカウント | コンピュータ操作型には専用の最小権限アカウント・専用ブラウザプロファイルを使い、開発者・ユーザー本人のセッションを操作させない |
「サンドボックス内で全部できる」ことは問題ではありません。サンドボックスの意味は、中で何が起きても外に影響しないことにあります。逆に、サンドボックスから本番の認証情報が見える構成は、隔離の意味を失わせます。
詳細: 外部 MCP サーバーを信頼する条件
外部の MCP サーバーの接続は、第三者のコードとプロンプト(ツール説明文)の導入です(ツール接続標準(MCP とエコシステム))。権限設計の観点から最低限の条件を挙げます。
- ローカル stdio — 提供元・版・配布物ハッシュを固定し、隔離環境で起動します。ホストの環境変数・ファイル・資格情報・エグレスを最小化します。stdio は隔離そのものではありません
- リモート — 版を固定できない場合は、名前・説明・入力スキーマの差分を検知し、変更されたツールは再審査まで無効化します。送信先・許可ツール・トークンを絞り、未審査の変更を自動採用しません
- ツール一覧の絞り込み — サーバーが提供する全ツールを渡さず、必要なものだけを許可リストで通します
- 認証情報のスコープ最小化 — サーバーに渡すトークンの権限は、そのサーバーの用途に必要な範囲だけにします
- 信頼できないサーバーのツール結果は信頼できないコンテンツとして扱う — 結果経由の間接インジェクションを前提に、処理後の危険操作へ承認を挟みます
設計判断: 権限は静的に決めず、状況で絞る
- タスク単位の動的な絞り込み — 同じ Agent でも、タスクの種類に応じて渡すツールセットを切り替えます(照会タスクの間は書き込みツールが存在しない状態にする)。「渡さない」は「使わせない指示」より確実です
- 縮退モードとの接続 — インシデント時にツール単位で無効化・承認必須化できる仕組み(インシデント対応 のキルスイッチインシデント時にデプロイなしで Agent を止める・自律度を下げるための、事前に用意された停止手段。全停止・縮退・ツール単位の無効化など粒度を分けて設計する。)は、権限設計の動的な側面として同時に作っておきます
実務での注意点
アンチパターン
- 全権のサービスアカウントで Agent を動かす → 混乱した代理人問題により、ユーザーが自分の権限を超えるデータ・操作に Agent 経由で届く → 最小権限の委任トークンを使い、ユーザー権限と Agent 職務の交差をツール側で強制する
- 「危険な操作はしないでください」とプロンプトで禁止して権限は渡す → 指示は決定的な制御ではなく、インジェクションで上書きされうる → 使わせないツールはそもそも渡さない。危険な操作は承認ゲートで強制する
- 開発者の端末・本番環境でモデル生成コードを実行する → 1 回の誤り・悪意で認証情報・ローカルファイルに届く → 使い捨てのサンドボックス(エグレス制限付き)を実行環境にする
- MCP サーバーを自動更新で運用する → 更新でツール説明文が汚染されても気づけない(サプライチェーン攻撃外部から持ち込む AI 資産(モデル・重み・データセット・共有プロンプト/スキル・MCP サーバー・依存ライブラリ)の汚染・改ざんを通じてシステムを侵害する攻撃。実行時の防御以前に、導入前の出所確認・署名/ハッシュ検証・受け入れプロセス(審査 → 限定権限で試用 → 昇格)・資産台帳・更新の継続監視で守る。の窓口) → ローカルの版・ハッシュ固定と、固定できないリモートのツール定義差分検知・再審査までの無効化を手順にする
チェックリスト
- 「この Agent が乗っ取られたら何ができるか」に答えられる(= 権限の棚卸しがある)
- タスクに不要なツールが渡っていない(特に書き込み系)
- データアクセスの認可がツール実装側で強制されている(モデルへの指示に依存していない)
- Agent がユーザーの権限を超えられない(全権サービスアカウントでない)
- 取り消せない・影響の大きい操作に承認ゲートがある
- コード実行・画面操作が隔離環境(エグレス・資源制限付き)で行われる
- サンドボックスから本番の認証情報・データに触れない
- 外部取得を伴う読み取りを送信経路として扱い、機微データの読み取りにログと量の上限がある
- MCP のローカル stdio は隔離し、リモートの版を固定できない場合は差分検知・再審査までの無効化を備える
関連トピック
- Agent の脅威モデル概観 — 権限が被害上限を決めるという前提
- プロンプトインジェクション — 権限設計が「最後の砦」になる理由
- データ漏えい対策 — エグレス制限の詳細
- Human-in-the-Loop 設計 — 承認ゲートの設計
- ツール接続標準(MCP とエコシステム) — 外部サーバー接続の基礎
- インシデント対応 — ツール単位の無効化(動的な権限制御)
- AI サプライチェーンセキュリティ — 実行前の受け入れ検証(本記事は実行時の隔離・権限)
- コード実行サンドボックスの実装 — 隔離を実現する実装技術の選択(コンテナ/microVM機能やデバイスモデルを絞った軽量な仮想マシン。ゲストとホストのカーネルを分離する VM 境界を使う。モデル生成コードの隔離候補だが、起動性能・権限制限・残る攻撃面はハイパーバイザーと実行構成に依存し、ネットワークや秘密情報の制御も別途必要。/Wasm ほか。本記事は原則が正本)
参考資料
- Computer use(Anthropic docs) — コンピュータ操作型 Agent の隔離・安全対策の推奨事項(アクセス日: 2026-07-05)