このページは被害範囲を制限するゲートウェイコントロールについてです。アップストリームの
脅威モデルのコンテキスト — なぜエージェントが高価値ターゲットであるか、インジェクションが
どのように機能するか — は脅威モデルにあります。
危険な個々のツール呼び出しを統制するマッチングコントロールについては、
危険なツール呼び出しを参照してください。
1. エージェントが過剰に有能になるもの
ワークスペース内のすべてのエージェントがひとつのキーを共有する場合、またはキーが一度 発行されて再度確認されない場合、ケイパビリティは上向きにドリフトします:- 制限されていないモデル — エージェントはワークスペース内の任意のモデルを呼び出せます、 決して必要としない高価または高性能なものも含めて。
- 支出上限なし — 暴走ループ、トリガーされたインジェクション、または課金攻撃が 気づく前にワークスペースの残高を使い果たせます。
- 有効期限なし — スプリント中に発行されたキーが 1 年後もまだ有効であり、 それが発行されたエージェントはとっくに廃止されています。
- IP 制約なし — クレデンシャルはどこからでも機能するため、漏洩したキーには 地理的な制限がありません。
- ツール許可リストなし — エージェントは機能とは無関係なものも含めて任意のツールを 呼び出せます。
2. 混乱した代理人のパターン
混乱した代理人は過剰な権限の特殊化です。エージェントはハイジャックされません; 説得されます。取得された Web ページ、ドキュメント、またはツール結果のプロンプト インジェクションペイロードがエージェントに対して、それが正当に実行を許可されている アクションを取るよう指示します — 送金、レコードの削除、メッセージの送信 — 攻撃者の 代わりに。 エージェントが行動します。それはまさにそれを行う権限を持っていました。認証チェックが 通過します。被害が発生します。 防御には 2 つのことが一緒に機能することが必要です:- 狭いスコープ — エージェントはタスクが決して意図しないことをするよう騙されること ができません。なぜならそれを行う権限がまったくないからです。
- 不可逆なアクションに対する人間の承認 — 承認されたスコープ内でも、高リスクの 呼び出しは実行前に人間が確認する必要があります。
3. 多層防御:4 つのレイヤー
OrcaRouter はひとつの API キーで構成される 4 つの独立したコントロールにわたって 最小権限を強制します。いずれもエージェントのコード変更を必要としません。レイヤー 1 — スコープキー(アイデンティティ + ハードリミット)
すべてのエージェントには独自の API キーが必要です。キーはゲートウェイがエージェントの リクエストに関わらず強制するハードリミットを持ちます:| フィールド | 制限するもの |
|---|---|
model_limits | このキーが呼び出せるモデルの正確なセット。他のモデルへのリクエストはゲートウェイを離れる前に拒否されます。 |
allow_ips | このリストにないアドレスからのリクエストは認証レイヤーで拒否されます。空は IP 制限なしを意味します。 |
credit_limit_usd | USD での累積支出上限。0 は無制限を意味します。ゲートウェイはこれをキーの累積支出に対して強制します。 |
expired_time | 絶対有効期限タイムスタンプ。-1 はキーが期限切れにならないことを意味します。エージェントのデプロイメントライフサイクルに設定します。 |
environment | キーを整理して監査ログをフィルタリングするためのラベル(prod、staging、dev)。 |
レイヤー 2 — ファイアウォールポリシー(ツール許可リスト)
firewall_policy_id を介してキーにファイアウォールポリシーを
アタッチします。ポリシーはそのキーが発行するすべてのツール呼び出しを統制します:
- エージェントが正当に使用するツール名をallowするルールを書きます
(ツール名グロブがサポートされています — 例:
db.query*)。 - 明示的にリストされていないものがすべてブロックされるようにポリシーの
default_verdictをdenyに設定します。 - 許可されたツールでも制限するための引数述語を追加します — 例:
database引数が 特定のスキーマにマッチする場合のみdb.queryを許可します。
レイヤー 3 — 高リスクアクションに対する人間の承認(pending_approval)
決済ディスパッチ、レコード削除、メール送信など、不可逆または高価値のツール呼び出しには、
pending_approval ルールを追加します。フロー:
- エージェントがツール呼び出しを発行します。ファイアウォールがそれを保留し、承認 id を 持つ「保留中」のレスポンスを返します。呼び出しはツールに到達しません。
- レビュアーが帯域外で承認または拒否します — コンソールから(Developer+)または 独自の承認システムへの HMAC 署名付きウェブフック経由で。
- エージェントが承認 id をポーリングします。承認されると、単回使用の
X-OrcaRouter-Firewall-Approvalヘッダーとともに元の呼び出しを再送信します。 ゲートウェイはちょうど一度だけ通過させます。
レイヤー 4 — 実行ごとのコスト上限(cap_cost)
cap_cost ルールはエージェント実行の累積支出がルールごとの上限(セント)を超えたら
任意のツール呼び出しを deny します。これは以下のためのサーキットブレーカーです:
- インジェクションによってトリガーされた暴走ループ。
- 誰かが気づく前に支出を増やす課金攻撃。
- マルチステップ計画での偶発的な再帰。
cap_cost はキーの累積レベルではなく実行レベルで動作します — エージェントの
呼び出しごとにリセットされ、ひとつの誤動作する実行がキーの credit_limit_usd 上限を
使い果たすことはありません。
4. 適切にスコープされたエージェントキーの例
gpt-4o-mini を使用してカスタマーチケットを要約し、読み取り専用レプリカをクエリする
エージェントは次のようになります:
model_limits:["openai/gpt-4o-mini"]— より有能または高価なモデルにエスカレート できません。allow_ips: ワーカープールの egress CIDR — キーは他のどこでも無効です。credit_limit_usd: タスクの予想コストに多少の余裕を持たせた週次上限 — 例:5.00。expired_time: スプリントまたはデプロイメント期間の終わり — キーは手動クリーンアップ なしに自己期限切れします。environment:"prod"— ログフィルターと異常ビューに表示されます。guardrail_id: このエージェントのデータ感度にスコープされたガードレール (PII マスキング、出力にシークレットなし)。firewall_policy_id:db.query*とticket.read*のみを許可リストに載せ、 デフォルト判定denyのポリシー。
is_firewall_gateway はキーを MCP ディスパッチと evaluate フックルートのための
ゲートウェイスコープトークンとしてマークします。これらを駆動するエージェントのみに
これらを作成してください — 一般的な推論トラフィックには決して使用しないでください。
推論パス上のゲートウェイキーは、幅広い目的のキーが決して到達すべきでないルートを
公開します。is_firewall_gateway の有効化には Admin+ が必要です。5. 必要なロール
| アクション | 最低ロール |
|---|---|
| 任意のキー、ポリシー、またはファイアウォールイベントを読み取る | メンバー |
| キー、ファイアウォールポリシー、ルールを作成または編集する | Developer |
| コンソールから保留されたツール呼び出しを承認する | Developer |
キーで is_firewall_gateway を有効にする | Admin |
6. 他の脅威との関係
過剰な権限はほとんどすべての他のエージェント脅威のイネーブラーです:- 危険なツール呼び出し — 厳格な ツール許可リストを持つキーは、インジェクションが成功しても、リストにないツールを 呼び出すよう強制されることはできません。
- プロンプトインジェクション — スコープ制限はインジェクションが達成できることを 縮小します;承認ゲートはインジェクションが引き起こそうとする不可逆なアクションを ブロックします。
- 脅威モデル — 完全な攻撃表面マップ、 過剰な権限が他のベクターに対してどこにあるかを示します。
スコープキーとポリシー
完全なキーフィールドリファレンス、解決順序、ワークスペース境界モデル。
ファイアウォール
ポリシー作成、判定、HITL 承認フロー、完全な API リファレンス。
