跳转到主要内容

数据脱敏

本文约需 2 分钟阅读

数据脱敏是指对生产环境的敏感数据进行加工,使其能够在非生产环境 (开发、测试、分析) 中安全使用的技术。将信用卡号「 4111-2222-3333-4444 」替换为「 XXXX-XXXX-XXXX-4444 」就是典型处理方式,它在保持数据格式和统计特性的同时,使个人无法被识别。截至 2025 年,随着 GDPR 和修订后的个人信息保护法日趋严格,在开发与测试环境中引入数据脱敏已成为事实上的必备要求。

现场使用案例

“在将生产数据库的副本部署到预发布环境时,我们会对客户的姓名、地址、电话号码全部进行脱敏处理。上个月的审计中发现了一个遗漏脱敏的字段,因此我们强化了参照完整性检查脚本。”

令牌化的区别

数据脱敏与令牌化容易被混淆,但二者有本质区别。由于数据脱敏对原始数据进行不可逆变换,因此无法从脱敏后的数据还原出原始值。而令牌化保留了令牌与原始数据的对应表 (令牌库),因此具有权限的人可以还原出原始值。无需还原的数据脱敏适合开发与测试环境,而像支付处理那样事后仍需原始数据的场景则适合令牌化。

与加密的区别

加密最大的区别在于可逆性。加密是使用密钥变换数据的技术,持有正确密钥的人可以完全还原出原始数据。而数据脱敏没有解密密钥的概念,原则上无法从脱敏后的数据恢复原始值。二者的用途也不同。加密用于在存储和传输过程中保护「以后还需要读取」的数据,脱敏则用于生成「无需还原」的数据,以便安全地用于测试和分析。像格式保留加密 (FPE) 那样将加密技术用作脱敏手段的情况也存在,但二者的区别在于目的:是保护并可恢复,还是生成不可逆的替代数据。

静态脱敏与动态脱敏

脱敏的应用方式大致分为两种。静态数据脱敏 (SDM) 是先创建生产数据库的副本,将副本中的敏感数据恒久替换为脱敏后的值,再分发到开发和测试环境。分发的数据中不再保留原始值,即使整个环境被带走也不会泄露机密信息。而动态数据脱敏 (DDM) 则保持原始数据不变,在用户查询数据的瞬间实时加上掩码后再显示。它可以根据查看者的权限区别显示,例如「管理员看全部数字,客服只看后 4 位」,因此适合生产环境的界面显示和客户支持业务。基本的使用原则是:向测试环境分发数据用静态,在运行中系统按权限显示用动态。

主要的脱敏手法

实务中使用的手法大致有 4 种。置换 (Substitution) 是用并不存在的值进行替换的方法,例如将姓名转换为随机的名字。混洗 (Shuffling) 在同一字段内交换数值,在保持统计分布的同时切断与个人的关联。置空 (Nulling) 是将值替换为 NULL 或固定值的最简单方法,但作为测试数据的可用性会降低。格式保留加密 (FPE) 生成与原始数据格式相同的密文,将对既有系统的影响降到最低。与加密结合,可以实现多层防护。

实务中的应用要点

随着GDPR和个人信息保护法的施行,将生产数据原封不动地复制到开发环境的做法会带来法律风险。引入脱敏时,维持参照完整性至关重要。如果对客户表的 ID 进行了脱敏,就必须用同样的规则转换订单表的外键,否则测试将无法进行。请用强随机密码保护脱敏工具的管理控制台,以防止脱敏规则被非法篡改。

相关术语

这篇文章对您有帮助吗?