Webhook
審核和部署一發生,事件就送到你的端點。帶簽章、會重試、有順序 —— 七種事件,現在就能用。
推還是拉
需要按秒反應時,webhook 才是對的工具 —— 撤回一次部署、呼叫值班的人、發現飄移的那一刻開工單。
如果只是夜間合規同步或者更新儀表板,定時拉稽核日誌完全夠用。它支援按操作者、動作和時間範圍查詢,和 webhook 一起用也沒什麼代價。
七種事件
asset.proposedasset.approvedasset.rejecteddeployment.completeddeployment.faileddrift.detectedmember.role_changed已確定的設計
每個請求都會帶有 X-Untactit-Signature — 原始內容的 HMAC-SHA256 — 以及一組時間戳記。請兩者都驗證:簽章證明它來自我們,時間戳記則防止舊請求被重放到你這裡。
==import hmac, hashlib, time
def verify(body: bytes, sig: str, ts: str, secret: str) -> bool:
if abs(time.time() - int(ts)) > 300: # 5 min
return False
expected = hmac.new(
secret.encode(), ts.encode() + b"." + body,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, sig)
我們會持續重試直到你回傳 2xx,因此同一個事件可能送達兩次。請依此欄位去重:
id。重試採指數退避,最長持續 24 小時。
A sequence 欄位會單調遞增。若在 48215 之後收到 48213,代表那是延遲的重試,可以捨棄。
連續兩天投遞失敗的端點會被停用,並以電子郵件通知工作區管理員。每次嘗試的逾時為十秒。