首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

logback-自定义日志脱敏组件,一种不错的脱敏方案

前言

在我们写代码的时候,会书写许多日志代码,但是有些敏感数据是需要进行安全脱敏处理的。

对于日志脱敏的方式有很多,常见的有:

使用标签,继承书写一个脱敏工具类,在打印日志的时候对特定特字段进行脱敏返回。

两种方式各有优缺点:

第一种方式需要修改代码,不符合开闭原则。

第二种方式,需要在日志方法的参数进行脱敏,对原生日志有入侵行为。

自定义脱敏组件

(slf4j+logback)

一个项目在书写了很多打印日志的代码,但是后面有了脱敏需求,如果我们去手动改动代码,会花费大量时间。如果引入本组件,完成配置即可轻松完成脱敏。(仅需三步可轻松配置)

一、自定义脱敏组件 - 脱敏效果演示

二、自定义脱敏组件 - 使用方式

1、引入Jar包依赖

前提是你将Jar包打入本地仓库,Jar包地址见后文。

2、替换日志文件配置类(logback.xml)

日志打印方式都只需要替换成脱敏的类即可,如果你的业务不需要,则无需替换。

ConsoleAppender - 控制台脱敏

RollingFileAppender - 滚动文件

FileAppender - 文件

替换示例:

3、添加脱敏配置文件(logback-desensitize.yml)

该配置文件应该放在resources文件下

三、自定义脱敏组件 - 脱敏规范

1、支持数据类型

八大基本类型及其包装类型、Map、List、业务里的Pojo对象、List、JSON字符串。

注:在配置文件中配置的时候,只需要配置对象里的属性值就行。

2、不支持的数据类型

List,因为不知道脱敏的数据源具体是哪一个。

3、匹配规则

key + 分割符 + value,目前仅支持冒号(:)和等号(=),示例如下:

:定义了对应需要脱敏的关键字,如上诉的email、phone等以及业务对象中的字段、Map中的Key、JSON中的Key

:需要脱敏的值,如上诉的、。

4、日志规范

建议书写日志的时候尽量规范,对于key为中文的是没有办法脱敏的,规范程度可以见脱敏效果演示里的代码。

四、logback-desensitize.yml配置说明

上面这个配置是相对完整的,一定要严格遵守层级配置格式。

自定义脱敏支持的方式

1、key:value的方式

phone:4,7,表示phone属性的4-7位进行脱敏

原始数据:

脱敏后:

2、以符号作为起始、结束节点作为脱敏标志

,为脱敏标志,表示其为结束节点,表示其为开始节点。即表示对之前的进行脱敏,表示对之后的进行脱敏。这个示例就是前的数据的第4-7位进行脱敏。

注意:这种规则里的双引号、括号不能省略,其次和不能作为标志符号,因为和匹配规则有冲突

原始数据:

脱敏后:

脱敏后:

3、自定义正则脱敏

customRegex:正则表达式,如果符合该表达式,则使用其对应的脱敏规则(position)

4、一个字段,根据多种值含义进行自定义脱敏

比如说,username字段的值可以是手机号、也可以是邮箱,这个值动态改变的,前面几种方式都没办法解决,可以使用该方式。

注意:上面示例中匹配规则里的 双引号和括号 都不能省略

该组件内置四种匹配规则:手机号、身份证号、邮箱、other(其他匹配不到时用的),内置一种脱敏方式:password,表示完全脱敏,可用于pattren下的。

注:当pattern和patterns下的key有重复的时候,只会使用pattern下指定的方式进行脱敏。

Jar包地址和源码地址:

https://github.com/liuchengyin01/LogbackDesensitization/tree/master/repo/pers/liuchengyin/logback-desensitization/1.0.0

Github地址:

https://github.com/liuchengyin01/LogbackDesensitization

Jar包打入Maven本地仓库的方式

1、下载Jar包,放在一个文件夹里

2、在这个文件夹里打开cmd(打开cmd,进入到这个文件夹)

3、执行命令(前提保证maven配置正常,使用命令查看是否正常,如果显示版本号表示正常)

命令说明:

- EOF -

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230117A02J9000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券