本文档为您介绍数据加工过程中对日志数据进行脱敏的一些常见方式。

正则脱敏

使用正则进行数据脱敏,以手机号脱敏为示例,向大家展示如何使用DSL规则做脱敏数据处理。
  • 原始日志
    iphone: 15036171958
  • DSL编排规则
    e_set("sec_iphone",regex_replace(v('iphone'), r"(\d{0,3})\d{4}(\d{4})", replace=r"\1****\2"))
  • 处理后的数据
    iphone: 15036171958
    sec_iphone: 150****1958

Base64转码脱敏

如果需要对日志内容做脱敏处理,并且能够将脱敏的数据转成明文格式,可以使用Base64编码解码函数。
  • 原始日志
    url: https://www.aliyun.com/sls?logstore
  • DSL编排规则
    e_set("base64_url",base64_encoding(v("url")))
  • 处理后的数据
    url: https://www.aliyun.com/sls?logstore
    base64_url: aHR0cHM6Ly93d3cuYWxpeXVuLmNvbS9zbHM/bG9nc3RvcmU=
说明 如果想把base64_url进行解码,可以使用base64_decoding(v("base64_url")DSL语法规则。

MD5编码脱敏

如果需要对日志内容做脱敏处理,并且不希望其他人能够解码,可以使用MD5编码函数。
  • 原始日志
    orderId: 15121412314
  • DSL编排规则
    e_set("md5_orderId",md5_encoding(v("orderId")))
  • 处理后的数据
    orderId: 15121412314
    md5_orderId: 852751f9aa48303a5691b0d020e52a0a

str_translate脱敏

通过返回字符串用字符集映射后的版本进行脱敏。
  • 原始日志
    data: message level is info
  • DSL编排规则
    e_set("data_translate", str_translate(v("data"),"aeiou","12345"))
  • 处理后的数据
    data: message level is info
    data_translate: m2ss1g2 l2v2l 3s 3nf4

银行卡、信用卡等脱敏

如果日志中包含银行卡或者信用卡信息,需要自动检测并且进行脱敏。
  • 原始日志
    content: bank number is 491648411333978312 and credit card number is 4916484113339780
  • DSL编排规则
    e_set("bank_number",regex_replace(v('content'), r'([1-9]{1})(\d{11}|\d{13}|\d{14})(\d{4})', replace=r"****\3"))
  • 处理后数据
    content: bank number is 491648411333978312 and credit card number is 4916484113339780 
    bank_number: bank number is ****978312 and credit card number is ****9780

邮箱地址脱敏

如果日志中包含邮箱信息,需要自动检测并且进行脱敏。
  • 原始日志
    content: email is twiss2345@aliyun.com
  • DSL编排规则
    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 twiss2345@aliyun.com
    email_encrypt: email is ****@aliyun.com

AK脱敏

如果日志中包含AccessKey信息,需要自动检测并且进行脱敏。
  • 原始日志
    content: ak id is rDhc9qxjhIhlBiyphP7buo5yg5h6Eq and ak key is XQr1EPtfnlZLYlQc
  • DSL编排规则
    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****"))
  • 处理后数据
    content: ak id is rDhc9qxjhIhlBiyphP7buo5yg5h6Eq and ak key is XQr1EPtfnlZLYlQc
    akid_encrypt: ak id is rDhc**** and ak key is XQr1****

IP脱敏

如果日志中包含IP信息,需要自动检测并且进行脱敏。
  • 原始日志
    content: ip is 192.168.1.1
  • DSL编排规则
    e_set("ip_encrypt",regex_replace(v('content'), grok('(%{IP})'), replace=r"****"))
  • 处理后数据
    content: ip is 192.168.1.1
    ip_encrypt: ip is ****

身份证脱敏

如果日志中包含身份证信息,需要自动检测并且进行脱敏。
  • 原始日志
    content: Id card is 11010519491231002X
  • DSL编排规则
    e_set("id_encrypt",regex_replace(v('id_card'content'), grok('(%{CHINAID})'), replace=r"\1****"))
  • 处理后数据
    content: Id card is 11010519491231002X
    id_encrypt: idcard is 110105****