Dbmask

发现、遮蔽并验证 SQL 数据库中的敏感数据

AI编程开发 部分免费

项目简介

Dbmask 是一款开源工具,用于发现 SQL 数据库中包含敏感数据的列,用真实的确定性假数据遮蔽它们,然后逐行验证遮蔽是否真正生效——一套可审计的扫描→遮蔽→验证工作流,专为制作安全的数据库副本而设计。

生产数据经常泄露到管控较弱的地方:开发和测试系统、演示环境、分析仓库、AI 流程等。Dbmask 用于复制数据的那一刻:它找到敏感列,用一致的假数据重写它们,然后逐行检查自己的操作。

核心功能

  1. 敏感列自动发现 — 通过模式匹配和统计推断自动识别含敏感数据的列(邮箱、姓名、电话、身份证等),无需手动列举。
  2. 确定性假数据遮蔽 — 同一种子生成的遮蔽数据在多次运行中保持一致,确保外键关系和参照完整性不被破坏。
  3. 逐行验证(Validate) — 遮蔽后执行严格验证,逐行比对原始值与遮蔽值,任何不一致都会导致退出码非零,保证数据安全。
  4. 干运行预览dbmask mask --config dbmask.yaml 先预览变更(原始值显示为 ***-**),确认无误后再加 --apply 真正写入。
  5. CLI 与 Python API 双接口 — 既可通过命令行与 Shell 脚本集成,也可作为 Python 库在代码中调用。
  6. 多数据库支持 — 支持 SQLite、PostgreSQL、MySQL 等主流 SQL 数据库,干运行完全不写磁盘。
  7. 完整可审计性 — 所有操作均留下记录,遮蔽配置可版本化管理,满足合规要求。

技术实现

Dbmask 的核心设计原则是"只读发现、写操作需显式授权":

  • 发现阶段(scan):连接数据库,分析每列的数据分布与模式,输出敏感列候选清单,人工复核后方可进入遮蔽。
  • 遮蔽阶段(mask):只有在传入 --apply 标志时才真正写入;无主键列无法原地遮蔽时会大声警告而非静默跳过。
  • 验证阶段(validate):逐行比对行数、Schema 和每个遮蔽后的值,任何不符立即失败(--strict 模式),确保验证是真正的数据出口关卡。

所有敏感操作默认不泄露原始值(--show-values 才会显示),干运行无副作用,验证报告仅包含形状脱敏后的样本。

快速上手

  1. 安装pip install dbmask
  2. 准备配置dbmask.yaml 中声明数据库 URL 和检测策略
  3. 扫描dbmask scan --config dbmask.yaml → 输出敏感列候选清单
  4. 预览遮蔽dbmask mask --config dbmask.yaml → 干运行预览变更
  5. 应用遮蔽dbmask mask --config dbmask.yaml --apply → 真正写入
  6. 验证结果dbmask validate --config dbmask.yaml --strict → 确保全部通过

适用人群

  • 数据工程师与 DBA:需要制作数据库脱敏副本用于开发、测试或数据分析的工程师。
  • 合规与安全团队:需要满足 GDPR、CCPA 等数据保护法规,对数据外泄风险有审计要求的企业。
  • AI/ML 团队:需要将生产数据引入 AI 训练或分析流程,同时必须保护敏感信息的团队。
  • DevOps 工程师:需要自动化数据库环境搭建、确保测试环境数据安全的工程师。

官方链接

https://github.com/sealandseacat/dbmask

团队信息

由 AI 猎手自动发现

评论与建议

0 条评论