shell.exec への
deny、egress 許可リスト — そしてそれが正しいと信じています。しかし、それを本番の
エージェントトラフィックに対してオンにするのは信仰の飛躍です:広すぎるルールが
ひとつあれば、エージェントが正当に行う呼び出しをブロックしてしまいます。
ファイアウォールシャドウモードは安全ロールアウトのスイッチです。それは、ゲート
ウェイに本番と全く同様にポリシーを評価し、すべてをログし、しかし何もブロックしない
よう伝えるポリシーごとのフラグです。すべての強制判定が audit に格下げされ、イベント
理由には [shadow] would … が前置されるため、ポリシーが何をしたであろうかを正確に
読み取れます — それがまだ何もしていないうちに。
シャドウモードはポリシー上のフラグで、コンソール(または
/api/workspace/firewall/policies 管理ルート。これらはセッション / アクセストークンを
使い、リレーの sk-orca-… キーではありません)で設定されます。それの切り替えは
Developer+ のアクションです。エージェントの /v1/* リレー呼び出しは変わりません。1. ファイアウォールシャドウモードが行うこと
ポリシーのshadow_mode フラグがオンのとき、ゲートウェイは完全な評価を実行します —
ポリシーを解決し、優先度順にルールを辿り、判定を選びます — そして判定が効力を持つ
直前に、呼び出しを変えてしまうものすべてを格下げします:
| 解決された判定 | シャドウモードのもとで |
|---|---|
deny | → audit、理由 [shadow] would deny — … |
sanitize | → audit、理由 [shadow] would sanitize — … |
pending_approval | → audit、理由 [shadow] would pending_approval — … |
allow / audit | 変更なし(すでに非ブロッキング) |
2. 具体的なロールアウト 1 つ
破壊的なシェルコマンドに対するdeny ルールを持つポリシー prod-agents があり、
それが正当なものに引っかからないことを確認したいとします。
シャドウモードをオンにする
Security → Firewall → Policies で
prod-agents を開き、Shadow mode を
オンに切り替えて保存します。ポリシーはアタッチメントとルールを保ちます — 強制を
やめるだけです。実トラフィックを流す
エージェントは以前と全く同様にゲートウェイを呼び続けます。すべてのツール呼び出しが
評価されます;何もブロックされません。代表的なウィンドウを与えます — 実際のツール
ミックスをカバーするのに十分な長さです。
拒否されるであろうものを読む
Events を開き、
[shadow] 理由でフィルタ
します。各行はツール、サーフェス、実行、そしてマッチしたルールを示します — そのため
shell.exec 呼び出しに対する [shadow] would deny — destructive shell command は、
HTTP 400 を除けば、本番で見るものと全く同じです。シャドウモードをオフにする
フィードがポリシーが期待どおりのものに発火しそうでないものには発火しないことを
示したら、Shadow mode をオフに切り替えます。次の呼び出しから、それらの
[shadow] would deny イベントは実際の
firewall_blocked 拒否になります。deny ルールにマッチした正当な呼び出し —
シャドウのままでルールを修正し(グロブを
締めるか引数句を追加)、再びフィードを
監視します。実トラフィックに対して、ブラスト半径ゼロで反復できます。
3. シャドウモードが緩和しないもの
シャドウモードはポリシーのプレビューであり、マスターオフスイッチではありません。 知っておく価値のあるさらにいくつかの境界:allow と audit 判定は手を加えられない
allow と audit 判定は手を加えられない
強制判定(
deny、sanitize、pending_approval)のみが格下げされます。allow
または audit はすでに呼び出しを通すため、緩和するものは何もありません — それらの
イベントは、記録されたときにポリシーがシャドウだったことが分かるよう、依然として
シャドウバッジを運びます。cap_cost は格下げの前に解決される
cap_cost は格下げの前に解決される
cap_cost ルールは実行の累積支出に基づいて
具体的な allow または deny に解決され、シャドウモードがその解決された判定を
格下げします — cap 超過の拒否は、他と同様に [shadow] would deny として表示されます。ワークスペースごとではなくポリシーごと
ワークスペースごとではなくポリシーごと
シャドウモードは各ポリシー上に独立して存在します。実戦で試されたものが強制し続ける
間に、真新しいポリシーをシャドウできます — オフにし忘れるワークスペース全体の
シャドウスイッチはありません。
4. シャドウモード vs. その他のロールアウトダイヤル
ファイアウォールは 3 つの異なる「まだ何も壊さない」コントロールを提供します。それらは 異なる問題を解決します:| コントロール | スコープ | 答える問い |
|---|---|---|
| シャドウモード | 1 つのポリシー | 「このポリシーを強制したら何をブロックするか?」 |
audit デフォルト判定 | 1 つのポリシー | 「どのルールも名指ししないものをすべてログし、何もブロックしない。」 |
| 観察モード | ワークスペース | 「どのポリシーもカバーしていないツールはどれか?」 |
audit の
デフォルト判定は、
1 つのポリシーのマッチしないテール向けです;観察モードは特定のポリシーの強制では
なく、ワークスペースをまたいだカバレッジギャップについてのものです。
それらをスタックできます。シャドウモードのもとでの新しいデフォルト deny ポリシーは、
可能な限り最も穏やかなロールアウトです:デフォルト deny の床でさえブロックの代わりに
[shadow] would deny をログするだけなので、deny がライブになる前に、allow ルールが
まだカバーしていない呼び出しの完全なセットを見られます。5. コンプライアンスパックはまずシャドウで着地する
コンプライアンスパックをインストールするとき、 observe(非強制)モードでは、それが具現化するファイアウォールポリシーはシャドウモードを オンにして作成されます — トラフィックに対して評価しログを取りますが、何も ブロックしません。パックを強制にプロモートすると、それらのポリシーがシャドウから 外れます。同じメカニズムが、あなたのために適用されます:コントロールをドライランし、 あるべき判定を読み、それから強制します。6. それの切り替え
コンソールでは、シャドウモードはポリシーエディタ上のトグルです。同じフラグが管理 API 上でポリシーオブジェクトのshadow_mode として公開されています — これらのルートは
セッション / アクセストークンを使い、Developer+ を必要とします:
| メソッドとパス | ロール | 注記 |
|---|---|---|
PUT /api/workspace/firewall/policies | Developer+ | ボディでポリシーに shadow_mode: true / false を設定。 |
GET /api/workspace/firewall/policies/:id | Member | ポリシーの現在の shadow_mode 状態を読み取り。 |
version 整数をインクリメントするため、シャドウのオン/オフ自体が追跡されます。
次に進む場所
ポリシーの作成 & アタッチ
シャドウモードがロールアウトする 2 ステップのセットアップ — ポリシーを作成し、
キーをアタッチします。
Events ログ
[shadow] would … が表示される場所 — フィルタし、実行とルールへドリルダウン。判定
シャドウモードが格下げする強制判定と、各々がライブで何をするか。
強制モード
シャドウ、audit、observe がより広い強制モデルにどう収まるか。
