日志服务 日志脱敏

某公司的日志,部分日志中可能有用户姓名、身份证号、银行卡号等敏感信息,为优化日志写入规范,需要对日志中的敏感数据进行检测和统计。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、原始日志

[ { "operation_time": "2025-04-12 15:32:01", "user_info": "张三申请开通服务,身份证号 522301199201230123", "operation_detail": "成交金额200元" }, { "operation_time": "2025-04-12 15:32:01", "user_info": "李四申请开通服务,身份证号 522301199201230123,银行卡号 6228880123456789123", "operation_detail": "成交金额100元" }, { "operation_time": "2025-04-12 15:32:01", "user_info": "王五申请开通服务,身份证号 522***1992****0123,银行卡号 6228****2345****123", "operation_detail": "成交金额500元" }]

二、场景分析

使用数据加工,从原始日志中,检测身份证号、银行卡号等敏感信息,发现敏感信息后,在该日志中新增一个字段 SENSITIVE_FLAGS,该字段用于填充发现的 敏感信息项,并将加工结果写入目标日志主题。后续,你可在目标日志主题中,使用 SQL 统计敏感信息的类型和个数。

三、DSL 加工函数

//scope=ALL_FIELDS 意为搜索整条日志中的所有字段//sample_ratio=1意为对所有的日志进行敏感信息检测,0.5代表对50%的日志进行检测sensitive_detection(scope="ALL_FIELDS", sample_ratio=1, discover_items="CHINA_IDCARD,DEBIT_CARD")

四、加工结果

[//第一条数据中只有身份证敏感项{"SENSITIVE_FLAGS":"CHINA_IDCARD","operation_detail":"成交金额200元","operation_time":"2025-04-12 15:32:01","user_info":"张三申请开通服务,身份证号 522301199201230123"},//第二条数据中有身份证、银行卡两种敏感项{"SENSITIVE_FLAGS":"CHINA_IDCARD,DEBIT_CARD","operation_detail":"成交金额100元","operation_time":"2025-04-12 15:32:01","user_info":"李四申请开通服务,身份证号 522301199201230123,银行卡号 6228880123456789123"},//第三条数据是安全的, 因此标记为SAFE{"SENSITIVE_FLAGS":"SAFE","operation_detail":"成交金额500元","operation_time":"2025-04-12 15:32:01","user_info":"王五申请开通服务,身份证号 522***1992****0123,银行卡号 6228****2345****123"}]

五、敏感项统计分析

select case when SENSITIVE_FLAGS like '%CHINA_ID%' then '身份证个数' when SENSITIVE_FLAGS like '%DEBIT_CARD%' then '银行卡个数' else 'other' end as type , count(*) as "敏感项" group by type HAVING type != 'other' limit 10000

统计分析结果:

六、场景描述

某用户将日志采集到日志服务(Cloud Log Service,CLS),日志数据中含有用户 ID(dev@12345)、登录的 IP 地址(11.111.137.225)和手机号码(13912345678),用户想将这些敏感信息脱敏。

七、场景分析

该日志本身是一个结构化的日志,因此可以直接对字段进行脱敏处理。

八、原始日志

{ "Id": "dev@12345", "Ip": "11.111.137.225", "phonenumber": "13912345678" }

九、DSL 加工函数

fields_set("Id",regex_replace(v("Id"),regex="\\d{3}", replace="***",count=0))fields_set("Id",regex_replace(v("Id"),regex="\\S{2}", replace="**",count=1))fields_set("phonenumber",regex_replace(v("phonenumber"),regex="(\\d{0,3})\\d{4}(\\d{4})", replace="$1****$2"))fields_set("Ip",regex_replace(v("Ip"),regex="(\\d+\\.)\\d+(\\.\\d+\\.\\d+)", replace="$1***$2",count=0))

十、DSL 加工函数详解

1. 对 Id 字段进行脱敏处理,结果为 dev@***45。

fields_set("Id",regex_replace(v("Id"),regex="\\d{3}", replace="***",count=0))

2. 对 Id 字段进行二次脱敏处理,结果为**v@***45。

fields_set("Id",regex_replace(v("Id"),regex="\\S{2}", replace="**",count=1))

3. 对 phonenumber 字段进行脱敏处理,将中间的4位数替换为****,结果为139****5678。

fields_set("phonenumber",regex_replace(v("phonenumber"),regex="(\\d{0,3})\\d{4}(\\d{4})", replace="$1****$2"))

4. 对 IP 字段进行脱敏处理,将第二段替换为***,结果为11.***.137.225。

fields_set("Ip",regex_replace(v("Ip"),regex="(\\d+\\.)\\d+(\\.\\d+\\.\\d+)", replace="$1***$2",count=0))

十一、加工结果

{"Id":"**v@***45","Ip":"11.***.137.225","phonenumber":"139****5678"}

赞 (0)
上一篇 4天前
下一篇 4天前