"不是生产,无所谓" ——被低估的非生产环境数据泄露
一、三个月后,投诉电话打进了健身房
一家做会员营销系统的软件公司,为了测试新报表功能,直接把生产库克隆了一份,交给外包团队用。
测试环境没做隔离,外包电脑上也装着各种顺手工具。
三个月后,他们的客户——一家连锁健身品牌——开始接到会员投诉:有人拿着会员的消费记录和手机号,精准地打电话推销。
一追到底,数据就是从那份"测试库"流出去的。
二、最松的那道口子,往往挂着"测试"的牌子
测试环境嘛,大家都觉得"不是生产,无所谓"。
于是权限松、加密无、拷贝随意。
恰恰是这种"无所谓",把它变成了整条链路上最松的一道口子。
这种事在行业里有个专门的词,叫非生产环境数据泄露。
◆开发要真实数据调程序
◆测试要真实数据跑场景
◆报表分析要真实数据看趋势
◆给客户演示要真实数据才像样
每一个理由都正当。但每一次交付,都是一次泄露风险。
个保法实施之后,"测试环境泄露了真实个人信息"同样要担责——法官不会因为你写的是测试代码就轻判。
三、脱敏不是打码:三个层次
很多团队对脱敏的理解,停留在"把手机号中间几位换成星号"。
真正做起来,是三个层次:
第一层:直接替换
姓名、手机号、身份证、银行卡、地址这些直接标识字段,用假数据整体替换。
关键在于一致性——同一个张三,在订单表和会员表里得是同一个假名。不然关联查询直接报错,开发就得返工,返工到最后,往往就有人把脱敏给关了。
第二层:间接标识处理
出生日期加小区名,可能锁定到一个人;消费金额加城市,能反推出收入水平。
这些组合字段,要么泛化(用年龄段代替生日),要么扰动。
第三层:关联关系保留
脱敏后的数据,还得能反映真实的业务分布——否则压测出来的性能数据全是假的,测试本身也失去意义。
这也是为什么,手工打码撑不起大规模场景。
四、落地三步走
① 定规则
哪些字段属于敏感数据、对应什么脱敏算法,写成一张表,挂进开发规范。别让每个程序员自己发挥。
② 上工具
从生产库导出到测试环境,统一走脱敏网关或脱敏任务。禁止直接 dump 生产库——这一条要写死在系统里,而不是写在文档里。
③ 堵例外
例外申请必须有审批留痕:谁申请的、用在哪个环境、什么时候销毁,台账记清楚。
五、最容易被忘的那个屏幕
还有一类场景,几乎每家公司都有,却几乎没人管——给客户和领导做的演示环境。
演示库里躺着全量真实客户数据,投影一开,全场都看见了。
而这类场景,用脱敏数据同样够用:界面、交互、效果,一样不差。
六、制度之外,再上一道锁
规矩管的是人,技术管的是文件。
在制度之外,还可以再补一道技术保险:上邦的文档加密方案,可以把测试环境落地的数据文件整体纳入加密管控——环境内随便用,想拷出去,文件离开指定范围就是乱码。
开发和测试该有的效率一点不少;数据想"顺路出走",就没那么容易了。
七、测试环境不是法外之地
制度写在前面,工具装在前面,例外审批卡在前面。
脱敏做在前面,比出事之后写检讨,便宜得多。