已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】 我负责一套跑在 K8s 1.28(containerd,自建集群)上的 Java 17 / Spring Boot 3.1 业务,日志链路是:应用打 stdout → 节点 filebeat 采集 → Logstash 过滤 → Elasticsearch 7.17 → Kibana。最近一次合规审计挂了一条:「日志中出现的手机号、身份证号、银行卡号必须脱敏后落盘,且不得在采集链路任一环节以明文留存」。
【现象 / 卡点】
mutate.gsub + 正则打码,能跑,但:身份证 18 位和银行卡 16–19 位正则写不准(误伤订单号、traceId),且 Logstash 挂掉时 filebeat 已经把明文 spool 到本地了,等于没脱;【已尝试与结果】
mutate.gsub 正则打码:能跑,误伤率约 2%(订单号、traceId 被误打),且解决不了 filebeat spool 与 nginx 日志的明文;geoip / user_agent 处理器,没有 PII 脱敏插件,社区版 dissect/grok 组合写正则成本太高;【期望得到的答案形态】 希望跑过同类链路的同学给一个可落地的分层方案,重点:
processors(如 mask、mutate)/ Logstash 三层各自适合拦哪类日志,有没有「只在 filebeat 一层就够」的判据?mask processor 对身份证支不支持)?怎么和订单号、traceId 区分?不用贴完整 pipeline,给分层判据 + 关键配置片段 + 踩坑点就行。