文档首页/ 云日志服务 LTS/ 最佳实践/ 日志加工(邀测)/ 使用DSL加工函数对LTS日志数据脱敏
更新时间:2024-08-02 GMT+08:00
分享

使用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_"
    }

相关文档