Dbmask
发现、遮蔽并验证 SQL 数据库中的敏感数据
项目简介
Dbmask 是一款开源工具,用于发现 SQL 数据库中包含敏感数据的列,用真实的确定性假数据遮蔽它们,然后逐行验证遮蔽是否真正生效——一套可审计的扫描→遮蔽→验证工作流,专为制作安全的数据库副本而设计。
生产数据经常泄露到管控较弱的地方:开发和测试系统、演示环境、分析仓库、AI 流程等。Dbmask 用于复制数据的那一刻:它找到敏感列,用一致的假数据重写它们,然后逐行检查自己的操作。
核心功能
- 敏感列自动发现 — 通过模式匹配和统计推断自动识别含敏感数据的列(邮箱、姓名、电话、身份证等),无需手动列举。
- 确定性假数据遮蔽 — 同一种子生成的遮蔽数据在多次运行中保持一致,确保外键关系和参照完整性不被破坏。
- 逐行验证(Validate) — 遮蔽后执行严格验证,逐行比对原始值与遮蔽值,任何不一致都会导致退出码非零,保证数据安全。
- 干运行预览 —
dbmask mask --config dbmask.yaml先预览变更(原始值显示为***-**),确认无误后再加--apply真正写入。 - CLI 与 Python API 双接口 — 既可通过命令行与 Shell 脚本集成,也可作为 Python 库在代码中调用。
- 多数据库支持 — 支持 SQLite、PostgreSQL、MySQL 等主流 SQL 数据库,干运行完全不写磁盘。
- 完整可审计性 — 所有操作均留下记录,遮蔽配置可版本化管理,满足合规要求。
技术实现
Dbmask 的核心设计原则是"只读发现、写操作需显式授权":
- 发现阶段(scan):连接数据库,分析每列的数据分布与模式,输出敏感列候选清单,人工复核后方可进入遮蔽。
- 遮蔽阶段(mask):只有在传入
--apply标志时才真正写入;无主键列无法原地遮蔽时会大声警告而非静默跳过。 - 验证阶段(validate):逐行比对行数、Schema 和每个遮蔽后的值,任何不符立即失败(
--strict模式),确保验证是真正的数据出口关卡。
所有敏感操作默认不泄露原始值(--show-values 才会显示),干运行无副作用,验证报告仅包含形状脱敏后的样本。
快速上手
- 安装:
pip install dbmask - 准备配置:
dbmask.yaml中声明数据库 URL 和检测策略 - 扫描:
dbmask scan --config dbmask.yaml→ 输出敏感列候选清单 - 预览遮蔽:
dbmask mask --config dbmask.yaml→ 干运行预览变更 - 应用遮蔽:
dbmask mask --config dbmask.yaml --apply→ 真正写入 - 验证结果:
dbmask validate --config dbmask.yaml --strict→ 确保全部通过
适用人群
- 数据工程师与 DBA:需要制作数据库脱敏副本用于开发、测试或数据分析的工程师。
- 合规与安全团队:需要满足 GDPR、CCPA 等数据保护法规,对数据外泄风险有审计要求的企业。
- AI/ML 团队:需要将生产数据引入 AI 训练或分析流程,同时必须保护敏感信息的团队。
- DevOps 工程师:需要自动化数据库环境搭建、确保测试环境数据安全的工程师。
官方链接
团队信息
AI产品库
官方
由 AI 猎手自动发现
评论与建议
登录 后参与评论或提建议