Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

增加系统通用字符串脱敏规则-三段式通用脱敏规则、脱敏字段支持* #2698

Merged
merged 27 commits into from
Aug 7, 2024

Conversation

feiazifeiazi
Copy link
Contributor

@feiazifeiazi feiazifeiazi commented Jun 25, 2024

需求背景:

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

增加功能:

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

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

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

image

Copy link

codecov bot commented Jun 25, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

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              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@LeoQuote
Copy link
Collaborator

LeoQuote commented Jun 28, 2024

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

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

@feiazifeiazi
Copy link
Contributor Author

feiazifeiazi commented Jul 1, 2024

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

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

通用脱敏规则:

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

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

image

@LeoQuote
Copy link
Collaborator

LeoQuote commented Jul 1, 2024

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

@feiazifeiazi
Copy link
Contributor Author

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

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

@LeoQuote
Copy link
Collaborator

LeoQuote commented Jul 1, 2024

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

@LeoQuote
Copy link
Collaborator

LeoQuote commented Jul 1, 2024

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

@feiazifeiazi
Copy link
Contributor Author

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

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

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

@feiazifeiazi
Copy link
Contributor Author

feiazifeiazi commented Jul 2, 2024

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

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

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

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

@LeoQuote
Copy link
Collaborator

LeoQuote commented Jul 2, 2024

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

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

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

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

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

@feiazifeiazi
Copy link
Contributor Author

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

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

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

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

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

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

Copy link
Collaborator

@LeoQuote LeoQuote left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

经过沟通确实了解了这个功能的实际用途, 请将规则的名字改为 "三段式通用脱敏规则", 其他 LGTM

@feiazifeiazi feiazifeiazi changed the title 增加系统通用字符串脱敏规则01、脱敏字段支持* 增加系统通用字符串脱敏规则-三段式通用脱敏规则、脱敏字段支持* Jul 8, 2024
sql/models.py Outdated Show resolved Hide resolved
sql/utils/data_masking.py Outdated Show resolved Hide resolved
sql/utils/data_masking.py Outdated Show resolved Hide resolved
@feiazifeiazi
Copy link
Contributor Author

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

@LeoQuote
Copy link
Collaborator

rebase下到最新版,有冲突

@feiazifeiazi
Copy link
Contributor Author

feiazifeiazi commented Aug 7, 2024

rebase下到最新版,有冲突

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

@LeoQuote LeoQuote merged commit 9dbaf0b into hhyo:master Aug 7, 2024
10 checks passed
feiazifeiazi added a commit to feiazifeiazi/Archery_Genuine2 that referenced this pull request Oct 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants