路徑 02課程 6 / 6

用可驗證假設除錯

使用代理程式比較解釋、蒐集證據。避免尚未確認原因,就反覆修改。

實務10 分鐘已審查

發布者 我們如何撰寫

檢查理解程度請求只在部署後失敗,本機卻正常。代理程式首先應做什麼?進行練習
請求只在部署後失敗,本機卻正常。代理程式首先應做什麼?

學習目標

  • 精確描述預期與觀察到的行為。
  • 選擇能區分不同解釋的觀察。
  • 驗證修正,並區分消除症狀與消除原因。

提出修正前,先描述失敗

有用的除錯請求會說明預期行為、觀察結果和受影響範圍,並提供版本、相關輸入和錯誤。將記錄檔提供給 AI 工具前,先移除存取憑證與私密紀錄。

「匯出壞了」幾乎沒有方向。更好的描述是:「匯出在本機成功。最近部署後,在預備環境中,相同主管請求回傳 403。其他路由仍然正常。」

這段描述不能確立原因,但指出了能引導調查的差異。

保留多種可能解釋

請代理程式提出少量合理原因,以及各自證據。不要要求它認定第一個有說服力的解釋。

對虛構匯出失敗而言,可能原因包括服務身分缺少權限、角色對應改變,或請求送到錯誤環境。每種解釋會預測不同證據。

假設有助於區分的觀察
服務身分無法讀取匯出資料服務身分收到對目標資源的存取拒絕
角色對應改變請求抵達應用程式時,實際生效角色不同
請求使用錯誤環境解析出的端點或資源識別碼,與預期目標不同

表格是起點。403 回應可能來自不同層。假設應用程式授權失敗前,先找出是哪個元件產生回應。

選擇安全觀察

從能以低成本區分解釋的觀察開始。比較已部署版本與不含機密值的設定,檢查相關錯誤和請求識別碼。可行時,在獲授權測試環境重現問題。

不要只是為了看看錯誤會不會消失,就授予廣泛權限。這會改變安全邊界,也可能掩蓋真正缺少的權限。如果遮蔽敏感資訊的錯誤訊息與請求路徑已足夠,就不要把正式環境完整記錄檔貼給模型。

說明哪些證據會削弱每項假設。這能幫助代理程式修正解釋,而不是替第一個答案辯護。

一次修改一個原因

證據指向可能原因後,進行聚焦修正。避免同時改權限、升級函式庫及重寫處理函式。否則即使症狀消失,也無法知道哪項變更有效。

驗證原本失敗的條件,也檢查鄰近邊界。如果修正主管存取權,應確認未授權使用者仍遭拒絕。

對反覆出現的缺陷,在能偵測它的層加入迴歸檢查。單元測試無法偵測所有部署設定錯誤;有些失敗需要整合檢查,或受控的部署後驗證。

沒有新證據時,停止重複嘗試

代理程式可以產生許多修正變體,但更多嘗試不一定改善診斷。如果相同失敗反覆出現,應問下一次嘗試會提供什麼新觀察。

為不確定的調查設定時間或嘗試次數上限。到達上限時,回報目前證據、已排除假設和尚未解決的問題。這份紀錄能讓其他人接續,不必重做相同實驗。

復原後,記錄原因,以及讓問題進入受影響環境的條件。修正移除眼前缺陷,有用的後續行動則降低相同失敗再次發生的機會。

進行練習

為最近的缺陷寫一份除錯紀錄,包含預期行為、觀察結果、受影響範圍和三種可能原因。為每個原因指出一項會削弱它的觀察,先選擇成本最低且安全的觀察。

下載工作表(Markdown)
檢查理解程度 ↑

繼續學習

來源與延伸閱讀

Taiga 相關延伸閱讀

上一課: 安全地修改既有系統