api.orcarouter.ai 上でのエージェントのツール許可リストパターン
です:deny デフォルト判定に加え、tool_name_glob
をキーとする 1 つ以上の allow ルールです。それらのルールの背後にある完全な
マッチング言語については、ファイアウォールルールを
参照してください。
許可リストはコンソールの Security → Firewall のもとで、または
/api/workspace/firewall/* 管理ルート(セッション / アクセストークン — リレーの
sk-orca-… キーではありません)経由で作成されます。エージェントの /v1/*
呼び出しのみがリレーキーを使います。ポリシーの作成または編集は Developer+ の
アクションです。1. なぜエージェントにデフォルト deny か
ブロックリスト(「shell.exec を deny、db.delete を deny、…」)は、あなたが思いついた
最後の脅威の分だけしか完全になりません。許可リストは立証責任を反転させます:ゲート
ウェイはポリシーが明示的に許可しないものすべてを deny するため、未知のツールは構造的に
閉じられます。
デフォルト判定 = deny
ポリシーの床。どのルールもマッチしなければ、すべてのツール呼び出しがブロック
されます。
allow ルールがツールをオプトインで戻す
各
allow ルールは、実際に使うツールを名指しします — 正確な名前またはグロブで。default_verdict に落ちます。したがって許可リストは
ただこうです:実際のツールに対する高優先度の allow ルールと、それ以外すべてを
捕捉する deny の床です。
2. 例 1 つ:リサーチエージェントのツールを許可リスト
エージェントが Web 検索とナレッジベースからの読み取りだけを必要とするとします —web.search と kb.read という名前のツールです。それ以外すべて(シェル、ファイル
書き込み、データベース変更、プロンプトインジェクションが呼び出すかもしれない任意の
ツール)は deny されなければなりません。
ポリシーをデフォルト deny + 2 つの allow ルールとして構築します:
deny デフォルトでポリシーを作成する
Security → Firewall → Policies → New policy。名前を付け、Enabled を
オンのままにし、デフォルト判定を
deny に設定します。これが閉じた床です —
ポリシーの作成を参照。ツールファミリーごとに allow ルールを追加する
ルールエディタで 2 つのルールを追加します。両方
verdict = allow:priority | tool_name_glob | verdict |
|---|---|---|
10 | web.search | allow |
20 | kb.* | allow |
web.search は正確なマッチです;kb.* は プレフィックスグロブで、ポリシーを
再編集せずに kb.read、kb.search、そして将来の任意の kb.* ツールを許可します。web.search と kb.read は通り;shell.exec への呼び出しはどの allow ルール
にもマッチせず、deny の床に当たり、inbound サーフェスでコード firewall_blocked の
HTTP 400 として返ってきます —
ブロックがどう見えるかを参照。
3. グロブを 1 画面で
tool_name_glob は小さく、大文字小文字を区別する文法です — 正規表現なし、線形時間。
許可リストにとって重要な形:
| パターン | 許可するもの |
|---|---|
web.search | 正確にそのツール。 |
kb.* | プレフィックス — kb.read、kb.search(裸の kb は不可)。 |
*.search | サフィックス — web.search、kb.search、そして裸の search。 |
*.tools.* | インフィックス — byo.tools.fetch など。 |
4. エージェントを壊さずにロールアウトする
デフォルト deny は、必要だと忘れていたツールをブロックする可能性が最も高い姿勢です。 段階的に進めます:まずシャドウする
まずシャドウする
シャドウモードをオンにします。ポリシーは
ライブと全く同様に評価しログを取りますが、すべての deny を
audit に格下げし、理由に
[shadow] would … を前置します。実トラフィックを流し、それから events フィードを
読みます。実際に呼び出すツールを見つける
実際に呼び出すツールを見つける
Discovered tools はワークスペースが見た
すべてのツールを、covered または gap とフラグしてリストします。シャドウ
モードの「would-deny」イベントとギャップが、まだ必要な allow ルールが正確にどれかを
教えてくれます。
強制する前にテストする
強制する前にテストする
Test サンドボックスはサンプルのツール呼び出しに
対してポリシーをドライランし、判定、マッチしたルール、理由を返します — 何も
ディスパッチも永続化もされません。
web.search が許可され shell.exec が deny される
ことを確認してから、シャドウをオフにします。deny された inbound 呼び出しはモデルトークンを消費しません — アップストリームの
モデルが実行される前にブロックされます — そして skip-retry とマークされるため、
ブロックされたツールが再ブロックで再試行予算を燃やすことはありません。
判定を参照。
5. 次に進む場所
特定のツールをブロック
逆 — デフォルト allow の床を保ち、名指しのツールを deny。
引数の検証
ツールを許可しつつ、安全な引数のときのみ(
db.query だが DROP TABLE は不可)。ルール優先度
最初にマッチしたものが勝つが、どう allow ルールを deny の床の上に並べるか。
判定
allow、audit、deny、sanitize、pending_approval、cap_cost。
