Skip to content

hitsz-ids/openDLP

Repository files navigation

openDLP

结构化与半结构化数据敏感数据识别工具。

简介

openDLP(open Data Loss Prevention)是一个敏感数据识别工具,使用正则表达式、人工智能算法、数据校验规则等多种技术对结构化数据表和Json之类的半结构化数据进行字段级敏感数据识别,可以帮助企业和组织进行数据资产分类分级,保障数据安全。

正则表达式是敏感数据识别的常用技术手段,openDLP的正则表达式智能生成功能能够基于提供的正、负训练样本数据,自动学习生成正则表达式,帮助提高正则表达式编写效率。

重要链接
📖 文档 项目API文档
:octocat: 项目仓库 项目Github仓库
📜 License Apache-2.0 license
示例 AI靶场上运行opendlp示例(敬请期待)

目录

主要特性

  • 表格数据敏感数据识别:
    • 目前支持身份证号、人名等17中常见敏感数据类型识别,详见:文档
    • 对于不在内置类型中的类别,支持用户传入正则表达式,对自定义敏感数据类型进行识别;
    • 采用神经网络分类模型、实体识别、正则表达式、数据校验规则等技术进行敏感数据识别。
  • 正则表达式生成:
    • 基于正、负样本数据,自动学习生成正则表达式;
    • 考虑了样本数据串中的频繁子字符串,能够捕获到数据中的细节特征。

安装

推荐使用 pip 命令进行安装:

pip install opendlp

将从PyPI获取并安装最新的稳定版本。

快速开始

结构化数据表敏感字段识别

示例1:使用内置敏感数据类型识别

from opendlp.sensitive_analyze import table_analyzer
# openDLP github项目中的数据,根据实际情况修改路径
csv_table_path = 'openDLP/tests/data/dataset-test.csv'   
result = table_analyzer.analyze(csv_table_path)
print(result)

输出如下:

{'PERSON': {'success': True, 'type': 'PERSON', 'fraction': '969/1000'},
 'ID_CARD': {'success': True, 'type': 'ID_CARD', 'fraction': '1000/1000'},
 'TELEPHONE': {'success': True, 'type': 'TELEPHONE', 'fraction': '1000/1000'},
 'MOBILE_PHONE': {'success': True,
  'type': 'MOBILE_PHONE',
  'fraction': '1000/1000'},
 'EMAIL': {'success': True, 'type': 'EMAIL', 'fraction': '971/1000'},
 'LICENSE_PLATE': {'success': True,
  'type': 'LICENSE_PLATE',
  'fraction': '1000/1000'},
 'BANK_CARD': {'success': True, 'type': 'BANK_CARD', 'fraction': '1000/1000'},
 'PASSPORT': {'success': True, 'type': 'PASSPORT', 'fraction': '1000/1000'},
 'COMPANY_NAME': {'success': True,
  'type': 'COMPANY_NAME',
  'fraction': '789/1000'},
 'SOCIAL_CREDIT_CODE': {'success': True,
  'type': 'SOCIAL_CREDIT_CODE',
  'fraction': '1000/1000'},
 'IPV4': {'success': True, 'type': 'IPV4', 'fraction': '1000/1000'},
 'IPV6': {'success': True, 'type': 'IPV6', 'fraction': '1000/1000'},
 'MAC': {'success': True, 'type': 'MAC', 'fraction': '1000/1000'},
 'DOMAIN_NAME': {'success': True,
  'type': 'DOMAIN_NAME',
  'fraction': '965/1000'},
 'LOCATION': {'success': True, 'type': 'LOCATION', 'fraction': '997/1000'},
 'POSTCODE': {'success': True, 'type': 'POSTCODE', 'fraction': '993/1000'},
 'DATE': {'success': True, 'type': 'DATE', 'fraction': '1000/1000'}}

示例2:使用用户自定义敏感数据类型识别

csv_table_path = 'openDLP/tests/data/data-udf.csv'
regex_pattern_file = 'openDLP/tests/data/pattern.json'
threshold = {'QQ':1}

result = table_analyzer.analyze(csv_table_path, regex_pattern_file, threshold)

输出如下:

{'QQ': {'success': True, 'type': 'OTHER', 'fraction': '9/10'},
 'PASSWORD': {'success': True, 'type': 'PASSWORD', 'fraction': '10/10'}}

“QQ”为数据表中的列名,“success”标识该列是否识别成功,“type”为识别成的敏感数据类型,OTHER表示不是敏感数据类型,“fraction”为该列中识别比例最高的类型的占比,这里的"9/10"的含义是该列有10个元素,有9个识别为了QQ,但QQ的判断阈值设置的是1,大于0.9,所以其类型被判断为了OTHER。

更多使用示例见:文档

API

openDLP提供了表格敏感数据识别和正则表达式生成接口,具体接口参数请参考 API文档

维护者

openDLP开源项目由哈尔滨工业大学(深圳)数据安全研究院发起,若您对openDLP项目感兴趣并愿意一起完善它,欢迎加入我们的开源社区。

Owner

Maintainer

您可以联系项目Owner,若您通过审核便可成为openDLP的Maintainer成员之一。

如何贡献

非常欢迎你的加入!提一个 Issue 或者提交一个 Pull Request。

许可证

openDLP开源项目使用 Apache-2.0 license,有关协议请参考LICENSE

Used by

开源项目

  • eoapi:一个可拓展的 API 工具,简单(Easy) & 开源(OpenSource)的 API 生态系统

组织

组织

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages