Archery icon indicating copy to clipboard operation
Archery copied to clipboard

增加系统通用字符串脱敏规则01、脱敏字段支持*

Open feiazifeiazi opened this issue 1 year ago • 2 comments

需求背景:

  1. 实例很多, 所有库的字段共计100万+,不同环境的库名不一样,有后缀。
  2. 敏感长度不一样。是全球化公司,电话,身份证,卡号长度完全不一样。

增加功能:

  1. 增加系统通用的脱敏规则。规则:根据字段长度自动分成3份,中间段脱敏。
  2. 脱敏字段配置时,支持对库名,表名使用*,不用再关心库名和表名,只用关心新增的敏感字段名,方便配置。

使用建议: 在配置脱敏字段时,只需要找出系统中phone,moblie,passowd等敏感的的字段名,向data_masking_columns表插入数据,不用再关心库名和表名。

不同长度的敏感字段脱敏效果: image

image

feiazifeiazi avatar Jun 25 '24 03:06 feiazifeiazi

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 77.43%. Comparing base (3bad15a) to head (a47beea).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2698      +/-   ##
==========================================
+ Coverage   77.39%   77.43%   +0.04%     
==========================================
  Files         119      119              
  Lines       16330    16359      +29     
==========================================
+ Hits        12639    12668      +29     
  Misses       3691     3691              

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar Jun 25 '24 04:06 codecov[bot]

不好意思,我没太理解这里的通用脱敏规则的含义,能否帮忙再详细说明一下使用方法?

方便的话写到代码中去一下。

LeoQuote avatar Jun 28 '24 10:06 LeoQuote

不好意思,我没太理解这里的通用脱敏规则的含义,能否帮忙再详细说明一下使用方法?

方便的话写到代码中去一下。

通用脱敏规则:

  1. 这个规则是将所有的字符串平均分成3份, 中间那份脱敏。 不用关心是不是 手机,邮箱,证件号,不需要一个个类型配置规则。
  2. 就是一个正则表达式:^([\s\S]{2,})([\s\S]{2,})([\s\S]{2,})$ , 正则的数据2是根据字段的长度动态计算的。

使用方式和以前一样的。只是可以选择 “通用规则”。

image

feiazifeiazi avatar Jul 01 '24 10:07 feiazifeiazi

能否将名字改为"三段式通用脱敏规则", 这样更加好理解一些, 你觉得如何? 还有可以考虑在model里预留几个槽位, 然后让管理员可以在系统配置中配置正则规则. 三段式的可以写死没问题, 我觉得这个确实是通用性很高

LeoQuote avatar Jul 01 '24 10:07 LeoQuote

能否将名字改为"三段式通用脱敏规则", 这样更加好理解一些, 你觉得如何? 还有可以考虑在model里预留几个槽位, 然后让管理员可以在系统配置中配置正则规则. 三段式的可以写死没问题, 我觉得这个确实是通用性很高

  1. 恩。新名字可以。 要不要加01呢。 这个规则只处理字符类型, 并没有处理金额等数字类型。
  2. 正则一开始我是放开的。 我现在放开吧。

feiazifeiazi avatar Jul 01 '24 11:07 feiazifeiazi

不用加01,你预留的槽位可以再加 01,02 一直到10

LeoQuote avatar Jul 01 '24 11:07 LeoQuote

可以考虑适配下数字类型?

LeoQuote avatar Jul 01 '24 11:07 LeoQuote

不用加01,你预留的槽位可以再加 01,02 一直到10

懵了。“model里预留几个槽位” 这句话不明白意思了。get不到点。

如果放开正则,正则配置是在“脱敏规则配置” 菜单里面配置的。

feiazifeiazi avatar Jul 02 '24 01:07 feiazifeiazi

可以考虑适配下数字类型?

数字类型,没有具体的需求哎。

可能需求:把数字 乘以一个随机数? 可能需求:把某一位数字变成*?

现在的代码把数字转为str类型,去脱敏了。 我在想这个通用规则要不要这样处理。 感觉需要加10个通用规则才行。

feiazifeiazi avatar Jul 02 '24 02:07 feiazifeiazi

不好意思, 我才关注到可以使用 脱敏规则设置和 脱敏字段配置 两个配置来结合, 配置脱敏规则, 那这样的话, 你当前的这个需求, 是不是可以直接用 其他 这个脱敏规则来实现?

脱敏字段配置时,支持对库名,表名使用*,不用再关心库名和表名,只用关心新增的敏感字段名,方便配置。

我建议本次 pr 先加这个功能, 然后你用 "其他" 这个规则进行关联.

如果你想扩展这个功能, 比如说可以设置无限个脱敏规则, 可以扩展 其中的 rule_type, 使其支持很多的规则, 欢迎后续再提 pr .

对于数字类型的字段, 我比较建议转换为文本然后再做实现.

LeoQuote avatar Jul 02 '24 03:07 LeoQuote

不好意思, 我才关注到可以使用 脱敏规则设置和 脱敏字段配置 两个配置来结合, 配置脱敏规则, 那这样的话, 你当前的这个需求, 是不是可以直接用 其他 这个脱敏规则来实现?

脱敏字段配置时,支持对库名,表名使用*,不用再关心库名和表名,只用关心新增的敏感字段名,方便配置。

我建议本次 pr 先加这个功能, 然后你用 "其他" 这个规则进行关联.

如果你想扩展这个功能, 比如说可以设置无限个脱敏规则, 可以扩展 其中的 rule_type, 使其支持很多的规则, 欢迎后续再提 pr .

对于数字类型的字段, 我比较建议转换为文本然后再做实现.

  1. 用“其他”这个规则实现不了需求。因为正则表达式必须要动态生成。
  2. 需要新加一个规则“其他2” (或者叫 三段式通用脱敏规则),正则需配置为"^([\s\S]{@Length01,}?)([\s\S]{@Length02,}?)([\s\S]{@Length03,}?)$",然后需要代码支持将正则中的@Length01,@Length02,@Length03 替换为真正的数字的。

feiazifeiazi avatar Jul 02 '24 07:07 feiazifeiazi

@LeoQuote 已修复,麻烦再看一下。2024-7-31

feiazifeiazi avatar Jul 31 '24 02:07 feiazifeiazi

rebase下到最新版,有冲突

LeoQuote avatar Jul 31 '24 02:07 LeoQuote

rebase下到最新版,有冲突

已rebase。为啥我本地没有显示冲突?好奇怪。

feiazifeiazi avatar Aug 07 '24 03:08 feiazifeiazi