阿里云日志服务(SLS)推出 mask 脱敏函数。相比传统正则脱敏方案的局限性,mask 函数在适用场景上更具优势,并结合典型场景展示其在敏感数据保护与合规要求中的价值。
使用限制
支持地域
华北6(乌兰察布)、华东2(上海)、华南2(河源)、西南1(成都)、中国香港和所有海外地域。日志服务开服地域请参见开服地域。
脱敏方案概述
背景
随着AI时代交互数据的快速增长,个人隐私信息的安全保护成为企业合规经营的重要组成部分。GDPR、《数据安全法》、《个人信息保护法》等法律法规对企业处理敏感信息提出了严格要求。
正则脱敏
阿里云日志服务(SLS)提供了一套完善的数据脱敏体系,支持多种灵活的采集+脱敏Pipeline组合流程,以满足不同业务场景的需求。具体操作请参见云上数据安全保护:敏感日志扫描与脱敏实践详解。
LoongCollector端侧脱敏
处理插件模式:通过配置数据脱敏插件,基于正则匹配完成敏感字段的替换。
SPL语句模式:通过SPL语句使用regexp_replace函数,在服务侧完成高性能脱敏处理。
LoongCollector/SDK + 写入处理器联合脱敏
LoongCollector端/SDK专注数据采集,写入处理器使用regexp_replace函数完成脱敏,避免端侧资源过度占用。
脱敏升级方案:mask函数
针对正则表达式脱敏存在的配置复杂、性能瓶颈和场景适配难等问题,SLS推出全新的mask脱敏函数,以提供更便捷、高效和智能的数据脱敏解决方案。
mask函数
函数语法
mask(field, varchar params)
参数说明
参数 | 说明 |
field | 需要脱敏数据的原始字段名称。 |
param | 该参数是JSON数组,可以定义一条或多条param参数规则。 |
param参数规则
参数 | 是否必填 | 说明 |
mode | 是 | 选择脱敏模式:
|
types | mode选择 | 内置规则列表:
|
keys | mode选择 | 定义需匹配的关键字列表,如 |
maskChar | 否 | 用于脱敏的字符,默认为 |
keepPrefix | 否 | 保留字段开头的字符数,例如 |
keepSuffix | 否 | 保留字段结尾的字符数,例如 |
示例
示例1:交易数据脱敏
DeFi平台每日处理数万笔链上交易,每笔交易都会生成包含用户钱包地址、交易哈希、用户画像等敏感信息的详细日志。为了满足数据保护法规要求,同时保证业务分析和故障排查的需要,需要对交易确认日志中的钱包地址、地址信息、来源IP、手机号、交易哈希等敏感字段进行脱敏,保留前后各3位字符以便业务追溯。
原始数据
2025-08-20 18:04:40,998 INFO blockchain-event-poller-3 [10.0.1.20] [com.service.listener.TransactionStatusListener:65] [TransactionStatusListener#handleSuccessfulTransaction]{"message":"On-chain transaction successfully confirmed","confirmationDetails":{"transactionHash":"0x2baf892e9a164b1979","status":"success","blockNumber":45101239,"gasUsed":189543,"effectiveGasPrice":"58.2 Gwei","userProfileSnapshot":{"wallet":"0x71C7656EC7a5f6d8A7C4","sourceIp":"203.0.113.55","phone":"19901012345","address":"上海市浦东新区文明路1000号","birthday":null}}}
SPL语句
在数据处理器中使用以下SPL语句。
*| extend content = mask(content,'[ {"mode":"keyword","keys":["wallet","address","sourceIp","phone","transactionHash"], "maskChar":"*","keepPrefix":3,"keepSuffix":3} ]')
输出结果
2025-08-20 18:04: 40, 998 INFO blockchain-event-poller-3 [10.0.1.20][com.service.listener.TransactionStatusListener: 65]][TransactionStatusListener#handleSuccessfulTransaction]{"message": "0n-chain transaction successfully confirmed", "confirmationDetails": {"transactionHash": "0×2**************979", "status": "success", "blockNumber": 45101239, "gasUsed": 189543, "effectiveGasPrice": "58.2 Gwei", "userProfileSnapshot": {"wallet": "0x7****************7C4", "sourceIp": "203******.55", "phone": "199*****345", "address": "上海市*********00号", "birthday": null}}}
示例2:Nginx日志中敏感URI参数脱敏实践
某电商平台的API网关每日处理数千万次请求,现需要对URI里的uid和token参数进行脱敏,保留前后各2位字符。
原始数据
这是一条典型的API访问日志URI,包含了用户身份信息和会话认证信息。
http_protocol: HTTP/1.1 remote_addrs: 127.0.0.1 request_time: 5000 status: 302 time_local: 2025-08-19T18:52:03+08:00 uri: "uid=user12345&token=bf81639a41d604&from=web" user_agent: Mozilla/5.0(Windows NT 5.2; WOW64))AppleWebKit/535.1( (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1
SPL语句
在数据处理器中使用keyword模式,定位URI参数进行选择性脱敏。
* | extend uri=mask(uri, '[ {"mode": "keyword", "keys": ["uid", "loginIp", "token"], "maskChar": "*", "keepPrefix": 2, "keepSuffix": 2} ]')
输出结果
http_protocol: HTTP/1.1 remote_addrs: 127.0.0.1 request_time: 5000 status: 302 time_local: 2025-08-19T18:52:03+08:00 uri: uid=us*****45&token=bf**********04&from=web user_agent: Mozilla/5.0(Windows NT 5.2; WOW64))AppleWebKit/535.1( (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1
示例3:大模型交互日志脱敏
智能客服平台每日处理超过10万次用户咨询,用户经常在求助时无意中透露手机号、身份证、银行卡等敏感信息。需要自动识别并脱敏用户输入中的手机号、邮箱、IP地址、身份证号和信用卡号等敏感信息,在保护隐私的同时保留语义完整性,为后续的AI训练和分析提供安全、可用的数据。
原始数据
这是一条用户向AI客服求助的完整对话记录,包含了几乎所有常见的PII类型。
你好,我需要紧急帮助!我是你们平台的长期付费用户,我的账户好像被锁定了,而且一笔年度会员续费失败了。我非常着急,因为我今晚需要使用你们的高级功能来完成一个项目 以下是我的全部信息,请你们的系统管理员或技术支持立刻为我核实并解决问题: 姓名张伟 注册手机号是19901012345 注册邮箱是 zhangwei.service@example.com 我最近一次登录的IP地址 203.0.113.55 身份证号是 110105199003070033 用于支付的信用卡信息如下: 信用卡类型 Visa 卡号是 4539-1488-0343-6467 持卡人姓名 ZHANG WEI 有效期 12/25 CVV码 123 请尽快处理,万分感谢!我真的非常需要你们的帮助!
SPL语句
SPL配置:使用buildin模式,智能识别多种敏感信息类型。
配置说明:
第一条规则:对IP地址和邮箱进行完全脱敏(默认用
*
全部替换)。第二条规则:对手机号、身份证号、信用卡号进行部分脱敏,保留前3位后4位。
* | extend content = mask(content,'[ {"mode":"buildin","types":["IP_ADDRESS","EMAIL","LANDLINE_PHONE"]}, {"mode":"buildin","types":["PHONE","IDCARD","CREDIT_CARD"], "maskChar":"*","keepPrefix":3,"keepSuffix":4} ]')
输出结果
content:你好,我需要紧急帮助!我是你们平台的长期付费用户,我的账户好像被锁定了,而且一笔年度会员续费失败了。我非常着急,因为我今晚需要使用你们的高级功能来完成一个项目 以下是我的全部信息,请你们的系统管理员或技术支持立刻为我核实并解决问题: 姓名张伟 注册手机号是199****2345 注册邮箱是**************************** 我最近一次登录的IP地址 ************ 身份证号是110***********0033 用于支付的信用卡信息如下: 信用卡类型 Visa 卡号是453************6467 持卡人姓名 ZHANG WEI 有效期12/25 CVV码123 请尽快处理,万分感谢!我真的非常需要你们的帮助!