深色模式
日志脱敏
日志里常夹带手机号、身份证、银行卡等 PII。在采集端统一遮蔽,比事后清理更可靠。本文用 Filebeat 的
dissect+replace与 Fluent Bit 的modify过滤器演示。
适用环境
bash
# 准备测试日志
echo 'user login phone=13800138000 id=110101199003071234' > /tmp/test.log
which filebeat fluent-bit1
2
3
2
3
操作步骤
1. Filebeat:用正则替换遮蔽
yaml
processors:
- dissect:
tokenizer: 'user login phone=%{phone} id=%{id}'
field: 'message'
target_prefix: ''
- replace:
fields:
- field: phone
pattern: '(\d{3})\d{4}(\d{4})'
replacement: '\1****\2'
- field: id
pattern: '(\d{6})\d{8}(\w{4})'
replacement: '\1********\2'1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
2. Fluent Bit:用 modify + 正则
ini
[FILTER]
Name modify
Match *
Rename phone phone_raw
Rename id id_raw1
2
3
4
5
2
3
4
5
DANGER
脱敏必须在数据离开内网前完成。若只在展示层遮蔽,原始明文仍存于 ES/Loki,存在泄露与合规风险。
验证
bash
# Filebeat 试运行,确认输出中无明文
filebeat run -e -c filebeat.yml -d processor 2>&1 | grep -E '138|110101'
# 期望:匹配不到明文1
2
3
2
3
常见坑
WARNING
正则遮蔽要覆盖所有格式(带空格、带 -、中间有掩码)。建议配合单元测试,定期用真实样本回归,防止新字段漏脱敏。
WARNING
脱敏后无法还原,排障需要原始信息时流程要设计好「受限留档」通道,避免一刀切影响运维。