为了保障企业的数据安全和隐私安全,godlp 提供了一系列针对敏感数据的识别和处置方案, 其中包括敏感数据识别算法,数据脱敏处理方式,业务自定义的配置选项和海量数据处理能力。 godlp 能够应用多种隐私合规标准,对原始数据进行分级打标、判断敏感级别和实施相应的脱敏处理。
In order to achieve data security and privacy security requirements for enterprises, godlp provides a serial of sensitive information finding and handling methods, including sensitive detection algorithm, de-identification APIs, business DIY configuration and the big data handling ability. Also, godlp is able to apply a variety of privacy compliance standers, do classification based on sensitive levels, and mask data based on rules.
godlp 能够广泛支持结构化(JSON数据、KV数据、golang map)和非结构化数据(多语言字符串)。
DLP 内置多种敏感数据识别规则,能对原始数据进行敏感类型识别,确保敏感信息能被妥善处理。
DLP 支持多种脱敏算法,业务可以根据需求对敏感数据进行不同的脱敏处理。
除默认的敏感信息识别和处理规则外,业务可以根据实际情况,配置自定义的YAML规则,DLP 能够根据传入的配置选项,完成相应的数据处理任务。
go get github.com/bytedance/godlp@latest
示例代码在 mainrun/mainrun.go
文件中
在godlp代码根目录下输入以下命令可以进行编译和运行
make
make run
make test
make bench
dlpheader定义了 godlp SDK需要的数据结构,常量定义等。godlp SDK主要提供了以下API进行敏感信息识别和脱敏。
- ApplyConfig(conf string) error
- ApplyConfig by configuration content
- 传入conf string 进行配置
- ApplyConfigFile(filePath string) error
- ApplyConfigFile by config file path
- 传入filePath 进行配置
- Detect(inputText string) ([]*DetectResult, error)
- Detect string
- 对string进行敏感信息识别
- DetectMap(inputMap map[string]string) ([]*DetectResult, error)
- DetectMap detects KV map
- 对map[string]string进行敏感信息识别
- DetectJSON(jsonText string) ([]*DetectResult, error)
- DetectJSON detects json string
- 对json string 进行敏感信息识别
- Deidentify(inputText string) (string, []*DetectResult, error)
- Deidentify detects string firstly, then return masked string and results
- 对string先识别,然后按规则进行打码
- DeidentifyMap(inputMap map[string]string) (map[string]string, []*DetectResult, error)
- DeidentifyMap detects KV map firstly,then return masked map
- 对map[string]string先识别,然后按规则进行打码
- ShowResults(resultArray []*DetectResult)
- ShowResults print results in console
- 打印识别结果
- Mask(inputText string, methodName string) (string, error)
- Mask inputText following predefined method of MaskRules in config
- 根据脱敏规则直接脱敏
- Close()
- Close engine object, release memory of inner object
- 关闭,释放内部变量
- GetVersion() string
- Get Dlp SDK version string
- 获取版本号
- RegisterMasker(maskName string, maskFunc func(string) (string, error)) error
- Register DIY Masker
- 注册自定义打码函数
- NewLogProcesser() logs.Processor
- NewLogProcesser create a log processer for the package logs
- 日志脱敏处理函数
- MaskStruct(inObj interface{}) (interface{}, error)
- MaskStruct will mask a strcut object by tag mask info
- 根据tag mask里定义的脱敏规则对struct object直接脱敏
规则文件请见 conf.yml
config 文件以yaml格式为准,整体分为: Global
,MaskRules
,Rules
三个部分。其中:
- Global 包含影响DLP全局的一些配置项,例如API版本、禁用的规则ID、是否启用后端服务辅助判断。
- MaskRules 包含脱敏操作的配置,例如打码、替换等方式。
- Rules 包含识别和处理规则,其中一个识别过程包括 Detect, Filter 和 Verify 三个依次的过程, 处理需要引用上面定义的脱敏规则。
godlp 以 Engine 结构为主,通过Engine对象来实现 EngineAPI 接口,直接实现的接口以sdk.go
,sdkdeidentify.go
,sdkdetect.go
和sdkmask.go
为主。对于deidentify和mask操作,会继续调用子目录下的detector
,mask
子模块。
-
sdk.go: 实现EngineAPI接口中业务无关的API,例如Close()
-
sdk_test.go: 单元测试用例。
-
sdkconfig.go: 实现配置相关的接口,例如ApplyConfig()
-
sdkdeidentify.go: 实现脱敏相关的接口。
-
sdkdetect.go: 实现敏感信息检测接口。
-
sdkinternal.go: 实现 Engine 对象的内部函数。
-
sdkmask.go: 实现直接打码的接口。
-
conf.yml: 内置的默认配置文件,含DLP维护的规则。
-
bindata.go: go generate生成的数据文件,包含conf.yml
-
conf: 实现DlpConf结构,处理配置文件。
-
detector: 敏感信息检测逻辑的内部实现。
-
errlist: 报错信息列表。
-
mask: 直接脱敏的内部实现。
-
util: 辅助功能实现。
-
dlpheader: dlp sdk 定义的接口头文件。
DLP项目从立项开始,一路走来,离不开其中辛苦付出的开发同学们,这里向为DLP写下代码的同学,致以最诚挚的感谢,以下同学排名不分先后。
- 丁保增 负责DLP1.0 识别信息验证模块。
- 王聪 负责DLP1.0 官网、JSON识别处理等模块、多个项目接入。
- 王赛 负责DLP1.0 去标识模块。
- 苏宁宁 负责DLP1.0 性能准确率测试。
- 王帅 负责DLP1.0 API头文件。
- 鲁云飞 负责DLP1.0 AI模块、NLP服务。
- 石岚 负责DLP1.0 AI模块,大数据处理API模块,发版等。
- 黄勇辉 负责DLP1.0 AI模块,优化更新了大量规则。
- 张宇鹏 参与DLP1.0 AI模块。
- 李赛南 参与DLP1.0 AI模块。
- 王珩 负责DLP1.0 保格式加密、保顺序加密模块。
- 夏世文 负责DLP1.0 性能优化、规则代码实现、主要完成了多个项目的合作开发工作。
- 罗同龙 为DLP2.0 提交了log处理性能优化的PR。
- 乔鑫 负责DLP2.0 服务端代码、SDK性能优化、技术实现。
- 杨经宇 负责DLP1.0 和 2.0的整体项目。