fail-closed 與 best-effort fail-open
Fail-closed / Fail-open Design
安全關鍵步驟失敗時從嚴擋下(fail-closed);非關鍵副作用失敗時不拖垮主回應(fail-open)的設計原則。
goalkeeper 對「去識別化」這類安全關鍵步驟採 fail-closed:一旦失敗即整請求回 error,絕不在未遮罩文本上繼續判定,確保隱私不破口。
反之,對稽核寫入、用量計數、鑑權等 best-effort 副作用採 fail-open:即使失敗也永不把成功的查核回應(200)變成錯誤(500),確保主功能可用性。兩者搭配在安全與可用性間取得平衡。
重點
- 安全關鍵 → fail-closed(從嚴)
- 非關鍵副作用 → fail-open(不拖垮主回應)
- 永不把 200 變 500