- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 授权IAM用户使用云日志服务LTS
- 购买LTS资源包
- 日志管理
-
日志接入
- 日志接入概述
- 使用ICAgent插件采集日志
-
使用云服务接入LTS
- 云服务接入LTS概述
- 应用运维管理AOM接入LTS
- API网关APIG接入LTS
- Astro轻应用接入LTS
- 云堡垒机CBH接入LTS
- 内容分发网络CDN接入LTS
- 云防火墙CFW接入LTS
- 云审计服务CTS接入LTS
- 分布式缓存服务DCS接入LTS
- 文档数据库服务DDS接入LTS
- DDoS防护 AAD接入LTS
- 分布式消息服务Kafka版接入LTS
- 数据复制服务DRS接入LTS
- 数据仓库服务GaussDB(DWS)接入LTS
- 弹性负载均衡 ELB接入LTS
- 企业路由器ER接入LTS
- 函数工作流FunctionGraph接入LTS
- 云数据库GaussDB接入LTS
- 图引擎服务GES接入LTS
- 云数据库 TaurusDB接入LTS
- 云数据库GeminiDB接入LTS
- 云数据库GeminiDB Mongo接入LTS
- 云数据库GeminiDB Cassandra接入LTS
- 华为HiLens接入LTS
- 设备接入IoTDA接入LTS
- AI开发平台ModelArts接入LTS
- MapReduce服务MRS接入LTS
- 云数据库RDS for MySQL接入LTS
- 云数据库RDS for PostgreSQL接入LTS
- 云数据库RDS for SQLServer接入LTS
- 应用与数据集成平台ROMA Connect接入LTS
- 视频直播Live接入LTS
- 消息通知服务SMN接入LTS
- 安全云脑SecMaster接入LTS
- 对象存储服务OBS接入LTS(邀测)
- 虚拟私有云VPC接入LTS
- Web应用防火墙WAF接入LTS
- 使用API接入LTS
- 使用SDK接入LTS
- 跨IAM账号接入LTS
- 使用KAFKA协议上报日志到LTS
- 使用Flume采集器上报日志到LTS
- 使用匿名写入采集日志
- 自建中间件
- 日志搜索与分析(默认推荐)
- 日志搜索与分析(管道符方式-邀测)
- 日志可视化
- 日志告警
- 日志转储
- 日志消费与加工
- LTS配置中心管理
- 查看LTS审计事件
- 最佳实践
- 开发指南
- API参考
- SDK参考
- 场景代码示例
- 常见问题
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
使用DSL加工函数对LTS日志数据脱敏
数据脱敏可以有效地减少敏感数据在加工、传输、使用等环节中的暴露,降低敏感数据泄露的风险,保护用户权益。本文介绍日志服务数据加工过程中常见的脱敏场景、对应的脱敏方法及示例。
背景信息
使用敏感数据包括手机号、银行卡号、邮箱、IP地址、AK、身份证号、网址、订单号、字符串等场景中,您需要为敏感数据进行脱敏操作。在日志服务数据加工服务中,常见的脱敏方法有正则表达式替换(关键函数regex_replace)、Base64转码(关键函数base64_encoding)、MD5编码(关键函数md5_encoding)、str_translate映射(关键函数str_translate)等。更多信息,请参见正则表达式函数和编码解码函数。
场景1:手机号脱敏
日志中包含不希望被暴露的手机号,可采用正则表达式,运用regex_replace函数脱敏。参考如下示例:
- 原始日志
{ "iphone":"13900001234" }
- 加工规则
e_set( "sec_iphone", regex_replace(v("iphone"), r"(\d{0,3})\d{4}(\d{4})", replace=r"\1****\2"), )
- 加工结果
{ "sec_iphone": "139****1234", "iphone": 13900001234 }
场景2:银行卡信息脱敏
日志中包含银行卡或者信用卡信息,可采用正则表达式,运用regex_replace函数脱敏。
- 原始日志
{ "content":"bank number is 491648411333978312 and credit card number is 4916484113339780" }
- 加工规则
e_set( "bank_number", regex_replace( v("content"), r"([1-9]{1})(\d{14}|\d{13}|\d{11})(\d{4})", replace=r"****\3" ), )
- 加工结果
{ "bank_number": "bank number is ****8312 and credit card number is ****9780", "content": "bank number is 491648411333978312 and credit card number is 4916484113339780" }
场景3:邮箱地址脱敏
日志中包含邮箱信息,可采用正则表达式,运用regex_replace函数脱敏。
- 原始日志
{ "content":"email is username@example.com" }
- 加工规则
e_set( "email_encrypt", regex_replace( v("content"), r"[A-Za-z\d]+([-_.][A-Za-z\d]+)*(@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4})", replace=r"****\2", ), )
- 加工结果
{ "content": "email is username@example.com", "email_encrypt": "email is ****@example.com" }
场景4:AK脱敏
日志中包含AccessKey信息,可采用正则表达式,应用regex_replace函数。
- 原始日志
{ "content":"ak id is <testAccessKey ID> and ak key is <testAccessKey Secret>" }
- 加工规则
e_set( "akid_encrypt", regex_replace( v("content"), r"([a-zA-Z0-9]{4})(([a-zA-Z0-9]{26})|([a-zA-Z0-9]{12}))", replace=r"\1****", ), )
- 加工结果
{ "akid_encrypt": "ak id is jdhc**** and ak key is Jkde****", "content": "ak id is <testAccessKey ID> and ak key is <testAccessKey Secret>" }
场景5:IP地址脱敏
日志中包含IP地址信息,可同时运用regex_replace函数,对IP地址进行正则捕获后而脱敏。
- 原始日志
{ "content":"ip is 192.0.2.10" }
- 加工规则
e_set("ip_encrypt",regex_replace(v('content'), r"((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])", replace=r"****"))
- 加工结果
{ "content": "ip is 2.0.2.10", "ip_encrypt": "ip is ****" }
场景6:身份证脱敏
日志中包含身份证信息,可同时运用regex_replace函数,对身份证号进行正则捕获后而脱敏。
- 原始日志
content: Id card is 111222190002309999
- 加工规则
e_set( "id_encrypt", regex_replace(v("content"), r"\b\d{17}(\d|X)\b", replace=r"\1****") )
- 加工结果
{ "id_encrypt": "Id card is 9****", "content": "Id card is 111222190002309999" }
场景7:网址脱敏
对日志内容中的网址做脱敏处理,并且将脱敏的数据转成明文格式,可运用Base64编码解码函数,对网址进行转码。
- 原始日志
{ "content":"https://www.huaweicloud.com/" }
- 加工规则
e_set("base64_url",base64_encoding(v("content")))
- 加工结果
{ "base64_url": "aHR0cHM6Ly93d3cuaHVhd2VpY2xvdWQuY29tLw==", "content": "https://www.huaweicloud.com/" }
说明:
如果想对base64_url进行解码,可以使用base64_decoding(v("base64_url"))DSL语法规则。
场景8:订单号脱敏
对日志内容中的订单号做脱敏处理,同时不希望其他人能够解码,可运用MD5编码函数,对订单号进行编码。
- 原始日志
{ "orderId": "20210101123456" }
- 加工规则
e_set("md5_orderId",md5_encoding(v("orderId")))
- 加工结果
{ "orderId": 20210101123456, "md5_orderId": "9c0ab8e4d9f4eb6fbd5c508bbca05951" }
场景9:字符串脱敏
若希望日志中的关键字符串不被暴露,可通过str_translate函数制定映射规则,对关键字符或字符串进行映射脱敏。
- 原始日志
{ "content": "message level is info_" }
- 加工规则
e_set("data_translate", str_translate(v("content"),"aeiou","12345"))
- 加工结果
{ "data_translate": "m2ss1g2 l2v2l 3s 3nf4_", "content": "message level is info_" }