数据脱敏和加密在合规里怎么选

安全与风控

给数据安全工程师一套按场景选脱敏还是加密的判断框架,附带决策清单、取证留档顺序和常见误区排查。

做合规落地时最容易卡住的一步,不是「要不要做保护」,而是同一份数据里,哪些字段该脱敏、哪些必须加密、哪些两者都要。选错了要么业务跑不起来,要么审计时拿不出证据。这篇按场景给判断口径、决策清单和留档顺序,不讲空泛原则。

做合规落地时最容易卡住的一步,不是「要不要做保护」,而是同一份数据里,哪些字段该脱敏、哪些必须加密、哪些两者都要。选错了要么业务跑不起来,要么审计时拿不出证据。这篇按场景给判断口径、决策清单和留档顺序,不讲空泛原则,只讲怎么落地。

先说一个前置判断:脱敏和加密不是替代关系,是两种不同的风险处理手段,对应不同的场景需求。很多团队纠结选哪个,往往是因为没先把「这份数据最终谁要看、看完要做什么」这个问题回答清楚。先把这个问题定下来,后面的技术选型才有意义。

先分清场景,再谈技术选型

把使用场景拆成四类,这四类对「原值要不要保留」的要求完全不同。展示与查看类场景,用户只需要看到数据的样子,不需要原值参与计算;分析统计类场景,需要保留数据的统计特征但不能暴露个体;开发测试类场景,需要真实数据的行为特征但不能带真实身份;跨系统传输类场景,关注的是链路上谁能截获原值。

场景类型核心需求对原值的要求
展示与查看让人看见但看不清无需原值
分析统计保留聚合价值无需个体原值
开发测试行为特征真实无需真实身份
跨系统传输链路防截获传输中不暴露

脱敏的目标是让人看不见原值但保留数据形态,加密的目标是让没有密钥的人拿不到原值。两者解决的不是同一个问题。有个不适用情形要提前说清楚:如果只需要在界面上遮住几位、后端仍按原值处理的场景,硬上加密会让查询链路全部重写,得不偿失。

什么情况下优先用脱敏

读多写少、需要保持格式可读的场景,脱敏的成本和收益最划算。比如报表展示、对账单、客服工单、日志排查,这些场景里数据需要被人看到和理解,但不需要暴露完整的原始信息。脱敏后的数据形态仍然可读,业务人员不用额外学习成本。

  • 报表、对账单、客服工单、日志排查等读多写少场景,脱敏后格式仍然可读
  • 需要保留统计价值但不能暴露个体,比如按地区、年龄段做聚合分析
  • 同一份数据要给多个下游看、且下游权限等级不同,脱敏可以按角色出不同强度的版本
  • 数据形态需要保持一致但内容需要替换,比如测试环境需要看起来真实的数据

有个关键的不适用情形:脱敏后的数据还要参与精确匹配、唯一性校验、风控打分时,脱敏会破坏关联性。比如你按手机号做用户去重,脱敏后的号码没法唯一对应,这时应改用可逆方案或加密。判断标准是问一句:下游拿到这份数据是为了「看」还是为了「算」,为了算就要谨慎。

什么情况下必须上加密

存储侧是最典型的需要加密的场景。数据库、备份文件、对象存储里的敏感字段,加密能防止拖库和运维随手导出。这里的判断标准是:如果数据泄露会导致直接的身份定位或财产损失,就必须加密。传输侧同样如此,跨网络、跨机房、跨组织的链路,包括大模型接口调用这类外部通道,传输中不加密等于裸奔。

存储加密
数据库、备份文件、对象存储里的敏感字段,防止拖库和运维导出
传输加密
跨网络、跨机房、跨组织的链路,包括外部接口调用通道
密钥材料
密钥管理相关的材料本身,以及能反推出原始身份的组合字段
组合字段
单独看不敏感但组合起来能定位到个人的字段组,也要纳入加密范围

有一个常见的不适用情形:加密字段无法直接做模糊查询和范围查询。如果业务强依赖「按手机号前缀搜」这种操作,得先改查询设计再谈加密。实际做法是加一个脱敏后的辅助列专门用于搜索,原值列只做加密存储,这样既保住查询能力又不暴露原值。

两者叠加的常见组合与顺序

实际落地时,最常见的是「加密存储 + 按权限脱敏输出」这个组合。密钥管住谁能还原,脱敏管住还原之后还能看到多少。顺序上一般先加密再脱敏,反过来会让脱敏规则作用在密文上,结果整段不可读,等于白做。

  1. 第一步:字段分档同一张表里不要对所有字段用同一种处理方式,按敏感度分档:高敏加密、中敏脱敏、低敏只做访问控制。
  2. 第二步:确定处理顺序先加密再脱敏,确保脱敏规则作用在可读的数据形态上。
  3. 第三步:定义还原条件把「谁在什么条件下能看到原值」写进流程,而不是只写技术方案。
  4. 第四步:验证输出用不同角色的账号跑一遍查询,确认该脱敏的看不到原值、该加密的拿不到密文对应的明文。

合规检查看的是留档,不是方案文档

合规检查不是看你写了多少方案文档,而是看你能不能拿出证据链。每个字段要有清单:字段名、敏感等级、处理方式、密钥或规则归属人、最近一次复核时间。变更要留痕:改了脱敏规则、换了密钥、新开了权限,都要有可追溯的记录。

留档项内容要求更新时机
字段清单字段名、敏感等级、处理方式、归属人新增字段或调整处理方式时
变更记录规则修改、密钥轮换、权限调整每次操作后即时记录
复核记录复核时间、复核人、发现的问题按既定周期或触发事件时
权限记录谁能访问、访问条件是什么权限授予或回收时

有个容易被忽略的不适用情形:字段清单本身如果包含明文样例,那它就是新的泄露点。清单里放遮蔽后的样例即可,不要把真实数据贴进去。很多团队做合规时栽在这个细节上,清单做得越详细反而风险越大。

一张可执行的选型清单

  1. 第一步:定场景确认字段属于看、算、测、传哪一类,这决定了后续的处理方向。
  2. 第二步:定原值是否需要被还原如果业务不需要看到原值,优先脱敏;如果需要精确匹配或参与计算,考虑加密。
  3. 第三步:定谁能还原明确哪些角色在什么条件下可以拿到原值,这决定了密钥管理和审批流程的复杂度。
  4. 第四步:选工具前三步定完了再选工具,避免被工具的功能清单牵着走。

对已上线系统做改造时,先挑一条链路试点,跑通查询性能和回溯流程再铺开。任何字段只要满足「能定位到具体个人」且「会被非授权角色看到」这两个条件,先归入待处理,不急着区分脱敏还是加密。把结论写成一句话放进设计文档:「本字段对 A 角色脱敏,对 B 角色加密存储、经审批可还原」,避免后续扯皮。

最容易踩的几个坑

  • 把脱敏当成匿名化,以为处理完就不受个人信息相关要求约束,实际可逆或可关联时仍然算个人信息
  • 密钥和脱敏规则写在代码仓库或配置文件里,等于没做保护,任何能看代码的人都能还原
  • 只保护生产库,忘了备份、日志、导出文件、测试环境这几条影子链路,审计时一查就露馅
  • 脱敏规则没有版本管理,改了之后无法回溯旧数据是按哪套规则处理的
  • 权限给了之后没人回收,离职转岗后访问权限还在,这是最常见也最难查的问题

有一个不适用情形要客观说明:如果团队规模极小、数据量也小,可以先用最粗的分档加人工审批兜住,不一定要立刻上完整工具链。判断标准是看风险是否可控,而不是看方案是否完整。小团队用最笨但能执行的办法,比用一套跑不起来的复杂方案更有效。

多久复核一次,谁来复核

建议与既有的安全评估节奏对齐,不用另起一套日历,避免两套表互相打架。复核重点看三件事:字段清单有没有新增漏项、权限有没有扩大、密钥有没有到期或人员变动未交接。这三件事是合规检查里最容易被问到的问题。

复核项检查内容触发条件
字段清单是否有新增字段未纳入管理新增业务字段时
权限范围是否有扩权未记录或离职未回收人员变动或权限调整时
密钥状态是否到期、是否完成交接密钥轮换或人员变动时
处理规则规则是否仍然适用当前业务业务逻辑变更时

判断标准拿不准时,用 /ai-dict/category/safety 里的术语口径先统一团队说法,再讨论方案。术语不统一会导致讨论半天其实说的不是一回事。比如「脱敏」在不同团队里可能指遮蔽、替换、泛化三种不同操作,先对齐定义再谈落地。

合规不是一次性的方案选择,而是持续的留档和复核。选对了技术手段只是第一步,能拿出证据链才算真正落地。
下一步想对照当前的安全与合规条目检查自己的字段清单,可以到站内安全合规页逐项核对,再结合模型资料库里的术语口径统一团队说法。

常见问题

脱敏之后还算个人信息吗?

要看是否可逆、是否还能关联到具体个人。简单的掩码或替换如果保留原值映射、或配合其他字段能反推身份,通常仍按个人信息处理;只有做到无法还原且无法关联时才可能脱离该范畴。具体口径按所在地区和行业要求判断,拿不准就先按更严格的那档做。

加密了是不是就不用脱敏了?

不是。加密解决的是「没密钥拿不到原值」,但拿到密钥或被授权还原之后,看到的就是完整数据。面向展示、导出、日志这类场景,仍然需要脱敏控制可见范围。两者管的是不同环节,不是替代关系。

加密字段没法做模糊查询怎么办?

常见做法是把需要检索的部分单独抽出来做规范化处理,或者改用可检索的加密方案,代价是性能和实现复杂度上升。也可以用中间层:敏感字段加密存储,另建一张只有脱敏值的查询表,两者通过内部标识关联。选哪种取决于查询频次和实时性要求。

小团队没有专人做这件事该怎么起步?

先把字段清单列出来,按「能定位到人」和「会被谁看到」两个维度分三档,高敏字段做加密存储加审批还原,中敏做展示脱敏,低敏只做权限控制。清单和审批记录就是最基础的留档,等人手够了再补工具链。

审计时被问「你怎么证明做了保护」,该拿什么?

拿三样:字段级处理清单、权限与审批记录、变更留痕。方案文档只能说明打算怎么做,清单和记录才能说明实际做了什么。建议把这三样放在同一个位置维护,避免审计时到处找。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。