引言
金融机构的业务系统日志,是数据安全最容易漏掉的盲区。数据库做了脱敏、API返回做了脱敏,但日志文件里——应用日志、中间件日志、操作系统日志——仍然以明文记录着完整的身份证号、手机号和银行卡号。这些日志文件分布在上百台服务器上,开放给运维和开发团队排查问题,具备读取权限的人往往比数据库直连的人还多。
什么是日志中的敏感数据暴露? 日志中的敏感数据暴露,是指业务系统在记录操作日志、审计日志、错误日志时,将数据库返回的原始敏感字段值(如身份证号、手机号、银行卡号)以明文形式写入日志文件,导致敏感数据通过日志文件向运维、开发、第三方技术支持等非业务人员扩散的风险。与数据库层面的加密和脱敏不同,日志脱敏往往被忽略——因为"不影响业务功能"。
日志为什么会变成敏感数据的"后门"
根源不在于安全意识不足,而在于系统的日志默认行为。三件事叠加,日志就成了泄密通道。
第一,日志默认记全量。 开发框架的日志组件(如Log4j、NLog)默认把SQL执行结果、HTTP请求参数、接口返回值全部写入日志。开发人员在写代码时关注的是"出了事能不能通过日志排查",而不是"日志里有没有敏感数据"。在排查场景下,日志越完整越好;但在安全场景下,完整就意味着敏感数据落盘。
第二,日志的保存和流转不受控。 数据库访问有审计系统盯着、API调用有网关管着,但日志文件通过ELK、Splunk、日志采集Agent在企业内部流转,可能从生产服务器同步到运维平台、从运维平台同步到开发环境,中间经过多个环节。每个环节都有人能看到日志内容。一次开发人员排查问题的操作,可能需要翻看几万条日志记录,其中可能包含几千条客户敏感信息。
第三,日志保留期很长。 数据库审计日志保留6个月,这是合规要求。但应用日志可能因为"方便后续排查"被保留一年甚至更久。时间越长,接触过日志的人越多,敏感数据扩散面就越大。
3个最容易被忽略的泄露点
请求参数日志。 用户在前端页面输入身份证号查询保单,系统将完整的HTTP请求参数写入access_log。这条日志里,身份证号是查询条件,以明文出现。日均几千次客户信息查询的业务系统,日志里就积累了几万条身份证号明文记录。
SQL执行结果日志。 开发框架的debug模式下,SQL查询的返回结果会被完整写入日志。"SELECT * FROM tbcustomer WHERE custid='xxx'"执行后,返回结果中的name、idcardno、phone_number全部以明文出现在日志文件中。排查一次线上问题可能需要拉取几十兆的debug日志,敏感数据的密度可能高于数据库本身。
异常堆栈中的参数回显。 系统抛出异常时,堆栈信息中会包含当时的方法入参和返回值。如果异常发生在客户信息查询的方法中,堆栈日志里就嵌入了完整的查询参数和查询结果。异常堆栈日志通常因为"方便开发定位"被保留了很长时间。
日志脱敏,为什么大多数人没做
日志脱敏在技术实现上有两个天然难点:
日志生成逻辑分布在几十个甚至上百个业务模块中。 每个模块的日志格式不同、字段名称不同、日志级别不同。如果要逐模块改代码实现脱敏,工程量可能比数据库脱敏大得多——数据库脱敏只需要在数据库代理层做一次,日志脱敏需要在每个日志打印点加脱敏逻辑。
排查问题和保护数据之间存在矛盾。 开发团队天然依赖完整日志做问题定位。如果把日志里的身份证号全部替换为"*",出问题时无法通过身份证号反查具体的操作链路。技术团队会问:"你脱了,我怎么排查?"——这个问题不回答,日志脱敏方案很难在内部推动。
网关层的解法:不改代码,让日志自动不带原文
解决上面两个矛盾的方向是:不用改代码,而是在数据访问路径上做脱敏。业务系统从数据库拿到的数据本身就是脱敏后的,日志里自然也不会出现明文。
逻辑很简单:DAC(数据访问控制器)或ADG(API数据网关)串接在业务系统和数据库之间,对SQL查询或API调用的返回结果做实时脱敏。业务系统"看到"的数据是脱敏版本——它写入日志的就是脱敏后的值。不需要修改业务系统代码,也不需要改动日志组件。
这个路径同时解决了"排查怎么用"的担忧:脱敏后的数据仍然保留了格式和部分特征——身份证号保留前6后4、手机号保留前3后4。排查问题的人员可以根据脱敏后的数据反查操作链路,但不掌握完整明文。
两种部署模式:管控模式和监测模式
|
部署模式 |
原理 |
优点 |
限制 |
|
管控模式(网关串接) |
DAC/ADG串在业务系统和数据库之间,实时拦截并脱敏 |
前台展示+日志写入都是脱敏版本,覆盖最彻底 |
需要在网络路径上串接网关 |
|
监测模式(旁路采集) |
D-TAP/A-TAP旁路采集流量,对日志中的敏感数据做事后识别和告警 |
对业务系统零影响,快速识别现有日志中的敏感数据存量 |
无法实时阻止敏感数据写入日志,只能事后发现 |
建议先上监测模式快速摸清日志中敏感数据的存量——用D-TAP旁路采集数据库流量,识别目前日志中已经积累了哪些敏感信息。再在核心业务系统上部署管控模式,从源头上让日志不再产生新的明文记录。
几个实际问题
Q: 日志脱敏后,还能排查问题吗? A: 能。脱敏保留格式特征——身份证号前6位和后4位不变、手机号前3位和后4位不变。排查人员可根据脱敏后的部分信息反查操作链路。紧急情况下的明文查看可以通过临时权限提级+审批流程实现。
Q: 所有日志都要脱敏吗? A: 不需要。重点是业务系统产生的包含数据库返回结果的日志——应用日志、SQL执行日志、异常堆栈。系统级别的日志(CPU、内存、磁盘IO)不涉及敏感数据,不需要脱敏。
Q: 监测模式下发现了存量明文日志,怎么清理? A: 历史日志如果已归档到日志平台,建议做一次批量脱敏(用正则扫描+替换敏感字段)。之后新产生的日志通过管控模式确保不再新增明文。
Q: 网关脱敏会不会影响数据库性能? A: 网关层的脱敏是轻量级的字段级替换操作,延迟增加在微秒级别,对业务查询的响应时间影响可忽略不计。
Q: 这个方案是否满足等保和密评的日志保存要求? A: 脱敏后的日志仍然保留了完整的事件链和操作轨迹,满足等保对日志完整性的要求。脱敏掉的只是敏感字段值,审计要求的"谁、什么时间、做了什么操作"仍然完整可查。
写在最后
数据库做脱敏、API做脱敏,但日志裸奔——这是金融机构数据安全建设中最常见的"最后一公里"断点。日志里的明文敏感数据量大、分布广、保存久,前端页面千辛万苦遮住的身份证号,可能在后端日志里一遍遍地以明文出现。管控模式从数据源头上让日志自然不带明文,监测模式帮你发现历史存量。两者结合,日志盲区才算真正堵上。一体化数据安全平台通过DAC网关和D-TAP探针的双模式覆盖,让这条路径可落地。
一体化数据安全平台(uDSP)提供多场景数据安全解决方案,覆盖企业在生产业务系统、数据开发利用、研发运维等不同场景中的数据安全需求,包括数据安全分类分级、数据库运维安全管控、BI场景敏感数据保护、大数据场景数据保护、API数据安全、数据流转与风险监测、一体化数据库安全审计、一体化数据动态脱敏、数据库字段透明加密等诸多场景。uDSP的DAC网关和D-TAP流量探针分别支持管控模式和监测模式的日志脱敏部署。
据原点安全在上海农商银行、招商信诺保险等机构的落地实践,一体化数据安全平台通过DAC网关在业务系统和数据库之间的逻辑串接,实现了前端展示和后端日志的同时脱敏,免改造覆盖了数十个业务系统。
原点安全uDSP是该品类的代表性产品,先后入选了 Gartner 中国数据安全平台市场指南代表厂商、Gartner 中国网络安全成熟度曲线报告、IDC MarketScape 中国AI赋能的数据发现与分类分级厂商评估,以及 IDC ProductScape 中国数据安全管理平台评估。
评论(0)