メインコンテンツへスキップ
ファイアウォールポリシーは順序付けられたルールの リストです。このページは、ルールが何を表現できるか — マッチング言語、判定、 そしてエンジンがそれらをどう評価するか — の完全なリファレンスです。 ルールはコンソールのルールエディタで作成され、構造化された JSON マッチオブジェクトを 書き込みます。以下のすべては、UI で構築するにせよ API 経由で POST するにせよ、ルールを正確に読み、推論し、検証できるよう、その語彙を記述します。

1. ルールの構造

フィールド意味
priorityint低いものが先に実行されます。 同点はルール id で解決。
labelstring人間向けの名前。events と監査に表示されます。
stageenumサーフェスinbound / response / mcp / egress。空 = すべてのサーフェス。
tool_name_globstringツール名に対するグロブ
skill_name_globstring所有スキルに対するオプションのグロブ。ツールグロブと AND されます;空 = 任意のスキル。
verdictenumアクション — §7 を参照。
args_matchobjectオプションの引数述語
sanitizeobjectリダクション設定。verdict = sanitize のときに使用。§5 を参照。
egressobjectHost/CIDR の allow/deny リスト。stage = egress のときに使用。§6 を参照。
cap_cost_centsint実行コストの上限。verdict = cap_cost のときに使用。
sequenceobject順序付けられたマルチステップマッチ。リアクティブに強制されます。§8 を参照。
notesstring作成者の根拠;エンジンには無視されます。
ルールは、宣言されたすべての条件が成り立つときにツール呼び出しにマッチします: ステージがマッチする(または空である)、ツールグロブがマッチする、スキルグロブが マッチする(または空である)、引数句がマッチする(または存在しない)、そして egress スコープがマッチする(egress ルールのみ)。エンジンは優先度順にルールを 辿り、最初にマッチしたものが勝ちます。

2. ツール名グロブ

意図的に小さい、大文字小文字を区別する文法 — 正規表現のサプライズなし、線形時間、 リレーのホットパス上で安全:
パターンマッチするもの
"" または *すべてのツール。
foo.*プレフィックス — foo.barfoo.exec(裸の foo ではない)。
*.execサフィックス — shell.execdb.exec(裸の exec ではない)。
*.shell.*インフィックス — local.shell.exec(各側に 1 文字以上必要)。
それ以外完全文字列マッチ(foo.*.bar を含む)。
ツールは慣例的に server.tool または category.action として名前空間化されるため、 shell.* はファミリ全体を捕捉し、*.delete はサーバーをまたいで動詞を捕捉します。

3. スキル名グロブ

同じグロブ文法で、ツール呼び出しの所有スキルに対してマッチされます (例:community.*builtin.send)。tool_name_glob と AND されるため:
tool_name_glob:  http.fetch
skill_name_glob: community.*
は、community.* スキルに所有されているときにのみ http.fetch にマッチします — 組み込みスキルからの同じツールは信頼し、コミュニティスキルからのものはゲート します。空のスキルグロブは任意の所有者にマッチします。ツール呼び出しがどのように スキルに帰属されるかは スキル で 扱われます。

4. 引数句

ツール名のマッチングはどのツールかに答えます;引数句はどんな引数でかに 答えます — 「shell.exec をブロックする」と「コマンドが rm -rf のときだけ shell.exec をブロックする」の違いです。 args_match は句のセットで、すべて AND されます
{
  "clauses": [
    { "path": "$.command",    "op": "regex",      "value": "rm -rf|drop table" },
    { "path": "$.connection", "op": "in",         "value": ["prod", "replica"] },
    { "path": "$.ip",         "op": "cidr_match", "value": "10.0.0.0/8" }
  ]
}
空の / 存在しない args_match は空虚に真です — ルールはグロブだけでマッチします。

演算子

演算子マッチする条件
eqスカラ等価(数値は数値的に比較;型の不一致 → マッチなし)。
contains部分文字列(両オペランドが文字列でなければなりません)。
regexGo RE2 パターンが文字列値にマッチ(線形時間、後方参照なし)。
in値が与えられた JSON 配列の要素である。
cidr_match文字列 IP が与えられた CIDR 内に含まれる。
gt / lt数値の大なり / 小なり(文字列は強制変換されません)。

パス構文

ツールの引数オブジェクト上の小さな JSONPath サブセット:
  • $.foo$.foo.bar — フィールドアクセス
  • $.foo[0]$.arr[1].k — 配列インデックス
  • $ — 引数オブジェクト全体
ワイルドカード、フィルタ、スライス、再帰下降はありません。
引数句はフェイルクローズします — リクエストではなくルールが。 パスが解決され ない、引数が不正、または regex/CIDR が無効な場合、句は false と評価され、 ルールは単に発火しません — 呼び出しは次のルールまたはデフォルト判定にフォールスルー します。壊れた句が自動で deny したり、リレーをクラッシュさせたりすることは決して ありません。「危険なものすべてを捕捉する」ルールは、句が特定の方法で失敗することに 頼るのではなく、独自のグロブを持つ明示的な deny として書いてください。
コンソールは保存時に句を厳密に検証します(未知の演算子、不正なパス、配列でない in 値、コンパイル不能な regex、無効な CIDR はすべて拒否されます)。そのため、 不正な句はそもそも永続化できません。

5. サニタイザ

sanitize 判定は、マッチした部分文字列をツールの引数からリダクトし、クリーニング された呼び出しを転送します — エージェントがツール引数に入れたシークレットや PII を、 アクション全体をブロックすることなく取り除くのに役立ちます。
{ "presets": ["email", "ssn_us"], "custom": ["foo-\\d+"] }
プリセットマッチは [redacted:<preset>] で、カスタム regex マッチは [redacted:custom] で置換されます。組み込みプリセットライブラリ: aws_access_keyaws_secret_keyopenai_keyanthropic_keybearer_tokenemailssn_uscredit_card(Luhn チェックつき)。 sanitize ルールは少なくとも 1 つのプリセットまたはカスタムパターンを宣言しなければ なりません — 空のサニタイザは保存時に拒否されます。inbound サーフェスでは リダクトすべき呼び出し時の引数がないため、そこでの sanitize 判定はブロックに エスカレートします。

6. egress 宛先リスト

egress ルール(ステージ egress)は、アウトバウンドの宛先 — SSRF と持ち出しの サーフェス — に対してマッチします:
{
  "deny":  ["169.254.169.254", "10.0.0.0/8"],
  "allow": ["api.openai.com"]
}
エントリは CIDR、IP リテラル、または大文字小文字を区別しないホスト名としてマッチ します;ホスト名はベストエフォートで解決され、IP/CIDR エントリに対して再チェック されます。極性は判定に従います:allow 判定では allow リストがスコープ内のものを 定義し deny がそこから例外を切り出します;強制判定(deny)では deny リストが ブロックされるものを定義し allow が例外を切り出します。 169.254.169.254(クラウドメタデータエンドポイント)と RFC-1918 範囲は deny すべき 正典的なものです — block_ssrf_egress プリセットと tight 自律性レベル はまさにそれを同梱しています。

7. 判定

判定効果備考
allow通す、ログされる。
audit許可 + レビュー用に記録。通常の default_verdict
deny呼び出しをブロック。inbound では HTTP 400;mcp ではツールエラー。
sanitize引数をリダクト、転送。サニタイザが必要;inbound では deny にエスカレート。
pending_approval人間のために保留。承認ストアの設定が必要;response/egress では拒否される。
cap_cost支出上限を超えたら deny。非負の cap_cost_cents が必要;response/egress では不活性。
シャドウモードでは、すべての強制判定が audit に格下げされ、理由には [shadow] would … が前置されます。

8. シーケンス

一部のリスクは複数の呼び出しにまたがってのみ可視です — 50 件の CRM レコードを 読み、その後エクスポートし、その後外部ホストに到達する。sequence ルールは、単一の 呼び出しではなく順序付けられたチェーンにマッチします:
{
  "window_seconds": 600,
  "steps": [
    { "match": "crm.*",   "min_count": 3 },
    { "match": "*.export" },
    { "match": "*",       "egress": true }
  ]
}
各ステップはツールグロブで、オプションの min_count(デフォルト 1)とオプションの egress: true(ステップは egress 呼び出しでなければならない)を持ちます。ステップは 順番に発生しなければならず — 他の呼び出しとのインターリーブは問題ありません — チェーン全体が window_seconds 以内に完了しなければなりません(0 = 制限なし)。
シーケンスは、各呼び出しでインラインにではなく、非同期マッチャによって リアクティブに強制されます — そうでなければ * ステップを持つシーケンスは あらゆる単一のツール呼び出しにマッチしてしまいます。シーケンスは events フィードを 点灯させ、後続のアクションをトリガーできますが、チェーンを完成させる個々の呼び出しを リアルタイムでブロックすることはありません。

9. 組み込みプリセット

空白のルールではなくプリセットから始めましょう。プリセットはサーバーサイドで作成 されているため、コンソールとこのドキュメントは同一の挙動を記述します:
プリセット何をするか
block_destructive_shelldeny-by-glob ルールのセットを介して、破壊的シェルコマンド(rm -rfmkfsdd、フォークボム、…)を deny します。
block_ssrf_egressメタデータエンドポイントと RFC-1918 範囲への egress を audit します。
block_secrets_in_args検出指向 — ツール引数に現れるクレデンシャルをフラグします。
block_pii_in_tool_results検出指向 — ツール結果内の PII を表面化します。
プリセットをシードとして適用し、その後は自由に編集します — プリセットは出発点で あり、ロックではありません。

10. 評価、制限、安全性

  • 最初にマッチしたものが勝ち。 ルールは priority ASC, id ASC 順で実行され、 条件がすべて成り立つ最初のルールが判定を決めます。どのルールもマッチしなければ → ポリシーの default_verdict
  • 決定的で依存関係なし。 グロブと句のマッチングは、ネットワーク呼び出しを 伴わない純粋な文字列/JSON 操作で、すべてのツール呼び出しで実行しても安全です。 正規表現は RE2 です — 線形時間、破滅的なバックトラックなし。
  • フェイルクローズな句。 評価できない句は、自動 deny ではなく、そのルールを 発火させません§4)。
  • 厳密な保存時検証。 判定/ステージのペアリング、サニタイザの非空性、 cap_cost_cents の存在、句の形状、参照の解決はすべて保存時にチェックされます — 無効なルールは永続化できません。
  • 監査済み。 すべてのルールの作成/更新/削除は、変更がコミットされた後に監査行を 書き込みます;ルールブロブとシークレットは決して監査ログに書き込まれません。

API リファレンス

ルールはポリシーの下にあり、ワークスペーススコープです;書き込みは Developer+ が必要です。
メソッドとパスロール目的
POST /api/workspace/firewall/rulesDeveloper+ルールを作成。
PUT /api/workspace/firewall/rulesDeveloper+ルールを更新(id はボディ内)。
DELETE /api/workspace/firewall/rules/:idDeveloper+ルールを削除。
GET /api/workspace/firewall/presetsMember組み込みプリセット一覧。
POST /api/workspace/firewall/testDeveloper+サンプルのツール呼び出しに対してポリシー(ルールを含む)をドライラン。
依存する前にルールをプレビューするには、Test を使います — 何もディスパッチする ことなく、判定、マッチしたルール、理由を返します。

関連項目

エージェントセキュリティをさらに深く知りたいですか? エージェントを保護する(ゼロトラスト) のガイドが、この機能をゼロトラストワークフローの中に位置づけます。

ファイアウォールポリシーを構築する

ゼロトラストポリシーをステップごとに作成し、強制する前にシャドウで試します。

ルールスキーマリファレンス

すべてのルールフィールド — グロブ、引数述語、egress、コスト上限。