本卡屬 FR-188(母卡 CM-3728),修 FR-187 資安掃描發現的 #251(低,3:0)。嚴重度:低。發現原文、檔名行號、面板票數在 docs/features/FR-187-2611-post-fr172-security-scan/reports/(工作坊工作區 compliance-manager-be/.worktrees/CM-3711/ 裡,主線還沒合;總表 docs/features/security-scan-consolidated/README.md §3.1 同樣在那裡)。Stage 未排,由排批的人決定(見下方「排批注意」)。

問題是什麼(白話)

Agent 線上開通碼(activation_code)以明文寫進 api 日誌與 app.log:全站請求日誌經 mark_password 遮罩,但鍵名規則只認 password/passphrase/secret/token/credential/authorization/api_key/private_key,activation_code 不在內(同一個請求的 enroll_token 會被遮)。開通失敗時碼還沒被用掉,看得到日誌的人抄走就能拿去開別台。

遮罩規則有兩份:日誌出口用 jedi-common 的 mark_password/mask_secrets_in_text,錯誤追蹤用 jedi-masking。兩份的鍵名規則一樣,都要加,否則開通失敗的例外送到錯誤追蹤時一樣會帶出去。

在哪裡

/Users/chouraymond/Projects/Jedicogy/module/jedi-python-package/jedi-common/jedi_common/utils/common_utils.py:139-142  _SECRET_KEY_PATTERN
/Users/chouraymond/Projects/Jedicogy/module/jedi-python-package/jedi-masking/jedi_masking/masking.py:11-12  _SECRET_KEY_RE
/Users/chouraymond/Projects/Jedicogy/module/jedi-python-package/jedi-masking/jedi_masking/masking.py:25-30  _TEXT_SECRET_KEY(文字型遮罩)
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/common/middleware/app_mw.py:243-257  呼叫端(只讀參考,主系統不用改)

行號以 2026-11-09 主線為準,對不上就以內容為準。

怎麼修

要寫測試

手測

排批注意

紀律