設定與日誌的機密遮蔽
utils/redaction 只會模糊 PIL 截圖,``secrets_scan`` 只會*偵測*並回報發現 —— 兩者都不會回傳一份對
日誌、報告或 config_bundle 匯出而言安全的、已遮蔽的設定 dict 或字串副本。本功能重用 secrets_scan
偵測器來產生遮蔽後的副本。
純標準函式庫(re + 重用 secrets_scan);不匯入 PySide6。每個函式皆為純函式(輸入資料、輸出
遮蔽副本),因此在 CI 中完全具決定性。
無頭 API
from je_auto_control import redact_config, redact_secret_text
safe = redact_config({"db": {"password": secret}, "name": "alice"})
# {"db": {"password": "***"}, "name": "alice"}
line = redact_secret_text(f"auth failed for token {token}")
# "auth failed for token ***"
redact_config 回傳巢狀結構的深層副本,並遮蔽看似機密的值,重用 secrets_scan``(鍵名模式如
``password / api_key、已知值格式如 AWS 金鑰與 bearer token,以及高熵字串);已經參照 vault 的值
(${secrets.*})保持不變。redact_secret_text 遮蔽自由文字字串(日誌行)中看似機密的 token,同時
保留周圍的文字與空白。兩者皆接受自訂 mask``(預設 ``"***")。此函式命名為 redact_secret_text 以
與處理 prompt-injection 的 guardrail.redact_text 區分。
執行器命令
AC_redact_config 對 obj``(可為 JSON)回傳 ``{redacted};``AC_redact_secret_text`` 回傳
{text}。兩者皆接受選用的 mask,並以 MCP 工具(ac_redact_config / ac_redact_secret_text)
以及 Script Builder 中 Security 分類下的命令提供。