pending_approval 裁決時,閘道
保留工具呼叫並在頻道外通知你自己的審批系統。
那個通知是一個簽署的 HTTP POST——防火牆 webhook
負載——本頁記錄它的確切形狀,以便你可以驗證
簽名、路由事件,並回發你的決定。
這是防火牆頁面上描述的
控制台內審批流程的異步同胞。控制台路徑
(審查者點擊核准/拒絕)根本不需要 webhook。webhook 是
用於當你想要一個機器——你自己的工單機器人、Slack 動作,或
代理執行期——來解析保留的時候。兩條路徑都是先寫入者勝出,所以
你可以並排執行它們。
webhook 是一個盡力而為的路由訊號,而非權威的
HITL 頻道。代理自己對
GET /api/v1/firewall/approvals/:id
的長輪詢是後援——如果一個通知被丟棄或你的端點
短暫離線,被保留的呼叫仍會出現在控制台並正常
解析。webhook 只是讓機器能比人更快反應。1. 防火牆 webhook 負載一覽
OrcaRouter 向你設定的 URL POST 一個 JSON 封套,以 共享密鑰簽署。這裡是一次完整的傳遞——標頭和主體:X-Orca-Event 路由多種事件類型而無需解析
主體。
2. 封套欄位
event — 事件名稱
event — 事件名稱
對於審批保留,總是
firewall.approval.pending。鏡像於
X-Orca-Event 標頭中,以便你可以在解析主體之前路由。workspace_id — 來源工作區
workspace_id — 來源工作區
保留該呼叫的政策所屬工作區的整數 id。當
一個端點接收來自多個工作區的 webhook 時很有用。
occurred_at — 保留建立的時間
occurred_at — 保留建立的時間
閘道將審批排入佇列的時間的 RFC 3339 / UTC 時間戳記
(奈秒精度)。可被任何標準事件工具解析。
data — 審批負載
data — 審批負載
你的回呼解析閘門所需的區塊。欄位在
§3。
3. data 負載
data 區塊攜帶路由和解析保留所需的一切——
刻意不含工具引數。webhook 是一個路由訊號;
完整的呼叫情境(工具、引數、觸發的規則)存在於控制台
Approvals 分頁和稽核日誌中,那裡有存取控制。
| 欄位 | 類型 | 含義 |
|---|---|---|
approval_id | string | 你回發決定所對應的 id。 |
tool_name | string | 被保留的工具,例如 db.export。 |
request_id | string | 觸發保留的中繼請求。 |
conversation_id | string | 代理對話/工作階段 id。 |
policy_id | int | 匹配的防火牆政策。 |
rule_id | int | 返回 pending_approval 的規則。 |
4. 驗證簽名
每次傳遞都被簽署,以便你可以拒絕偽造。簽名標頭 是:secret 是你在工作區上設定的審批 webhook 密鑰,
而 raw_body 是請求主體的確切位元組。在原始位元組上
計算 HMAC——重新序列化解析後的 JSON 會改變空白
並破壞比較。以常數時間驗證:
5. 設定 webhook
目的地 URL 和共享密鑰是工作區設定——在控制台中 設定一次(或透過設定 API;Developer+)。沒有營運人員介入, 也沒有東西要部署。設定 URL 和密鑰
在防火牆設定中,把你的 HTTPS 端點設為審批
webhook URL,並設一個強的共享密鑰。URL 必須是
https://——
明文目的地會被拒絕——且密鑰是唯寫的
(它在讀取時從不返回;設定回應只報告
是否已設定)。撰寫一條 pending_approval 規則
新增一條裁決為
pending_approval 的防火牆規則(或使用
HITL 預設值)。參見防火牆規則。接收並驗證
你的端點在下一次保留呼叫時接收簽署的 POST。驗證
簽名(§4),然後要麼透過回呼
解析,要麼呈現給人工。
被保留的呼叫在沒有設定 webhook 時仍然有效——它只是出現
在控制台供人工解析。而如果你設了 URL 但沒有密鑰,
閘道完全跳過派發,因為回呼端點
只接受簽署的請求:一個你無法驗證回來的通知
會毫無用處。
6. 回呼:解析保留
要以機器核准或拒絕,POST 回到:approval_id 的相同 :id,以相同的
共享密鑰簽署。主體是一個決定:
| 主體欄位 | 必填 | 值 |
|---|---|---|
decision | 是 | approved 或 rejected |
reason | 否 | 自由文字註記,記錄在稽核日誌中。 |
approved 決定讓代理的下一次嘗試通過一次——
代理用單次使用的 X-OrcaRouter-Firewall-Approval 標頭重新提交
原始呼叫。rejected 決定讓呼叫保持
封鎖。
解析是冪等且先寫入者勝出的。如果人工已經
從控制台解析了保留——或一個重複的回呼到達——
端點返回
200,附帶 already_resolved: true,原始
決定仍然成立。可安全重試。7. 審批狀態
被保留的呼叫經過這些狀態;你的回呼驅動 離開pending 的轉換:
| 狀態 | 含義 |
|---|---|
pending | 等待決定(webhook 時的狀態)。 |
approved | 已解析——被閘控的呼叫可以進行一次。 |
rejected | 已解析——被閘控的呼叫保持封鎖。 |
expired | 保留在沒有決定的情況下逾時。 |
8. 相關參考
防火牆 — HITL 流程
pending_approval 如何保留呼叫,以及代理如何用
單次使用的審批標頭重新提交。錯誤代碼
firewall_approval_pending 和其他防火牆 HTTP 回應。裁決詞彙表
每個防火牆裁決,包括
pending_approval。防火牆 API
完整的控制台 + 閘道路由參考。
