这个坑值得记一笔。为了排查方便把完整 prompt 和回答写进了结构化日志,合规扫描在日志里发现了用户手机号和身份证号,要求 24 小时内整改并出具说明。

刚开始盯着「历史日志没有保留期限,三年数据都在」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。日志字段直接落了原始请求体;脱敏只做在接口返回,没做在日志;开发环境用了生产数据做联调。

定位哪些字段里含敏感信息

python -c "import json;d=[json.loads(l) for l in open('app.log')];print([k for k in d[0]])"

然后在日志出口统一做字段级脱敏

python -c "import re;print(re.sub(r'1\d{10}','1**********','手机 13800001234'))"

再往下关闭全文日志只留摘要与哈希

python -c "print('log=summary+hash')"

剩下的就是按保留期清理历史日志

find /var/log/app -name '*.log' -mtime +30 -delete

别只看报错消失,验证要多做一步。日志里不再出现手机号与身份证号,合规扫描通过,排查时仍能靠请求哈希关联到具体会话。

容易忽略的是,排查便利和合规经常冲突,把原文换成哈希加摘要,既能关联又不留敏感数据;历史日志要按保留期清理,别等扫描找上门。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189