尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

DataWorks数据安全治理实战:敏感识别、脱敏与审计全解析

DataWorks数据安全治理实战:敏感识别、脱敏与审计全解析 做了这些年大数据平台和数据仓库建设我越来越觉得数据安全治理是那种平时没人提出事了全员加班的领域。很多团队在DataWorks上跑了几百张表、上千个任务但问到哪些表里有手机号、身份证、银行卡往往没人能立刻答出来。等到监管检查、数据泄露、或者内部审计来问询的时候才想起来要补安全治理的课。这篇文章我把DataWorks数据安全治理从思路到落地完整拆一遍覆盖敏感数据识别、分级分类、动态脱敏、权限管控、审计告警这几条核心链路。如果你正在用DataWorks做数据平台建设或者刚好被安排牵头数据安全合规的治理工作这篇文章应该能帮你省掉不少摸索的时间。内容偏实操大部分步骤都是我实际跑过的配置路径和踩坑记录也捎带讲清楚每一步背后的原理。1. 先想清楚DataWorks数据安全治理到底要治什么1.1 为什么安全治理总在补课先说一个我观察到的普遍现象。数据平台建设初期业务方要数据给数据、要权限给权限数仓开发同学天天忙着接数、建模、调任务数据安全基本处于裸奔状态。等表多了、人多了、下游应用多了问题才集中暴露开发环境能查到生产环境的明文手机号离职员工的账号还挂着管理员角色某个临时查询把几百万条用户明细拉到了本地。这些问题的本质是数据安全和数据开发的节奏没有对齐。业务跑得快安全跟不上最后只能靠事后补救。所以我在推进治理的时候第一件事不是去配脱敏规则而是先跟团队对齐一个共识数据安全治理不是约束业务而是给数据流动划定边界。边界清楚了开发效率反而更高因为大家不用每次取数都提心吊胆。1.2 DataWorks安全治理的完整链路DataWorks本身不是单一的安全产品它是一站式大数据开发治理平台安全能力分散在好几个模块里但组合起来能形成一条闭环链路数据地图负责元数据采集和数据血缘是摸清家底的基础没有元数据后面所有安全规则都是空中楼阁。数据保护伞负责敏感数据识别、分级打标、动态脱敏和异常行为监控这是治理动作的核心执行层。权限中心以及底层引擎的ACL/Label权限体系负责账号授权、角色管理、权限申请审批解决谁能看什么的问题。操作审计负责记录谁在什么时候对哪张表做了什么操作是事后追溯和责任认定的依据。这四个模块对应的是四个核心问题数据在哪里、哪些数据敏感、谁能访问、访问行为是否合规。把这四个问题管住数据安全治理的大框架就立住了。1.3 治理推进的四个阶段我习惯把治理落地分成四个阶段团队可以按自己的节奏逐步推进第一阶段盘点。用数据地图把全量元数据采集上来先搞清楚有哪些项目空间、哪些表、哪些字段、谁是负责人。第二阶段识别与分级。配置敏感数据识别规则自动扫描出包含手机号、身份证、银行卡、地址等信息的表字段然后按敏感程度打标分级。第三阶段管控。基于分级结果做差异化管控敏感字段默认脱敏高敏数据限制导出权限申请走审批流程。第四阶段审计与运营。开启操作审计设置异常行为告警定期复核权限和分级标签形成持续运营机制。这四个阶段不用一口气全做完但顺序最好不要乱。我见过一上来就配脱敏规则的团队结果发现很多表压根没被元数据采集到脱敏规则覆盖不全最后还是要回头补盘点的功课。2. 敏感数据识别与分级分类治理的地基工程2.1 数据地图的元数据采集要做扎实数据安全治理的第一步是找到数据。DataWorks的数据地图会自动采集MaxCompute、EMR、Hologres等引擎的元数据包括表结构、分区信息、责任人、变更记录。但我实际用下来有几个细节需要特别注意采集范围要确认。新建的项目空间需要手动同步元数据不然数据地图里看不到新表后续的敏感识别自然覆盖不到。责任人字段要维护好。DataWorks的安全体系里责任人是权限审批和告警通知的关键角色责任人缺失会导致审批流程卡住、告警没人处理。表的描述信息尽量补全。虽然这不直接影响安全规则但在做分级打标的时候表描述能帮你快速判断业务含义减少一个个点开看字段的工作量。数据地图的界面里可以按项目、引擎、表名、责任人等维度筛选和搜索建议每周花十分钟看一眼新增表的情况确认元数据采集没有遗漏。这个习惯能避免很多规则配了但表被漏掉的问题。2.2 识别规则的配置内置加自定义数据保护伞内置了一批常用的敏感数据识别规则比如手机号、身份证号、银行卡号、邮箱、IP地址、车牌号等覆盖了大多数通用场景。但实际业务里真正要花心思的是自定义规则。举个例子我们平台上有不少订单表里面有个字段叫buyer_remark存的是买家下单时的备注。这个字段内容五花八门可能包含地址、电话、微信号单靠内置规则很难识别出来。我的做法是配置自定义规则用正则表达式去匹配1[3-9]\d{9}这类手机号模式同时配合备注|留言|remark这种字段名特征做组合判断。配置识别规则时有几个参数要理解清楚识别范围选择要扫描的项目空间或者表规则只对范围内的数据生效。匹配方式有正则匹配、关键字匹配、字段名匹配等一般建议字段名加上内容匹配一起用降低误报。抽样方式平台会从表里抽一部分数据做识别验证抽样行数可以调。数据量大的表适当降低抽样比例能减少扫描耗时但识别准确率会略降需要平衡。我踩过的一个坑是给某张核心表配置了手机号识别规则但识别出来的结果只有几十行命中因为这张表的历史分区里手机号是加密存储的只有新分区是明文。后来我改成按分区范围去识别并且把字段名包含mobile/phone作为辅助特征准确率才上来。这个经验说明识别规则不是配一次就完事随着数据变化要定期review。2.3 分级分类模型怎么设计才实用分级分类是数据安全治理里最容易纸上谈兵的部分。很多团队照搬行业标准把数据分成四级五级定义写了一大堆落地的时候发现业务同学根本分不清某张表到底算敏感还是机密。我采用的是一套尽量简化的四级模型L1 公开数据对外可公开的信息比如商品类目、公告内容脱敏不是必须。L2 内部数据仅限内部使用泄露会造成轻微影响比如内部报表、非敏感的运营配置。L3 敏感数据包含个人信息、业务机密泄露会造成较大影响比如手机号、身份证、订单明细、员工信息。L4 高敏数据包含核心机密或大规模个人信息泄露会造成严重影响比如批量用户全量明细、财务核心数据、密钥类信息。在实际打标的时候我建议遵循就高不就低的原则。一张表里只要有一个字段是L4整张表至少按L3来管。这样虽然有点保守但能减少管理成本。因为如果你按字段维度去精细化管控规则复杂度会爆炸日常运维根本扛不住。分级打标有两种方式一种是数据保护伞自动识别后生成建议标签人工确认另一种是直接在数据地图里手动给表或字段打标签。我推荐先用自动识别跑一轮生成候选清单然后让各业务线的数据owner去确认和修正。这样既利用了机器的效率又保留了人对业务的理解。2.4 打标之后的持续运营分级打标不是一次性动作。新表会不断创建老表的字段会调整业务含义可能变化所以标签体系需要持续运营。我建议每个月做一次标签复核重点关注新增的表是否已经识别和打标之前标记为L1/L2的表是否因为业务变化包含了新的敏感字段标签被频繁修改的表要查一下为什么改是不是识别规则有问题。这个复核动作不需要专门安排一个人全职做数据平台的负责人顺手花半天就能搞定。但如果完全不管半年之后再来看分级标签的准确率会下降到没法用的程度脱敏和权限规则都会跟着失效。3. 数据脱敏既要挡住泄露又不能影响业务3.1 静态脱敏和动态脱敏别搞混脱敏是数据安全治理里最直观、业务感知最强的一个环节。DataWorks体系下脱敏分两条路线静态脱敏把生产数据复制一份到开发/测试环境之前先对敏感字段做不可逆的变形处理。开发同学拿到的是一份看起来像真的但其实是假的数据既能正常开发调试又不会泄露真实信息。动态脱敏生产环境查询的时候在SQL执行引擎层面对敏感字段做实时脱敏。用户执行SELECT能看到表结构但敏感字段返回的是掩码后的值没有权限的用户即使绕过应用直接连引擎看到的也是脱敏后的数据。这两条路线解决的是不同的问题。静态脱敏解决的是开发测试环境的数据安全动态脱敏解决的是生产环境查询的安全。很多团队只做了静态脱敏觉得开发环境安全了就行但生产环境的即席查询、临时取数、报表导出依然能拿到明文风险并没有真正消除。我的建议是两条腿走路生产环境至少把动态脱敏做起来。3.2 脱敏算法的选择逻辑数据保护伞内置了多种脱敏算法选哪个不是随便点的要根据业务特征来哈希脱敏把原始值通过MD5、SHA等算法变成固定长度的摘要理论上不可逆。适合需要做关联分析但不关心原文的场景比如用用户ID关联订单和日志。注意哈希算法如果只对短值做容易被彩虹表撞出来所以关键字段建议加盐。掩码脱敏保留部分字符其余用星号或x代替比如手机号138****1234。这是业务可读性最好的方式适合前端展示、客服查询等场景。替换脱敏用随机值或字典值替换原值比如把姓名替换成张*或随机生成的假名。适合需要保持数据格式和分布特征的测试场景。加密脱敏用对称加密算法加密字段密钥单独管理需要的时候再解密。适合既要脱敏、又需要在特定场景还原数据的场景但要注意密钥管理和加解密性能开销。我个人的经验是绝大多数场景用掩码和哈希就能搞定。掩码解决展示问题哈希解决关联分析问题。替换和加密用起来成本高、维护复杂只有在特殊合规要求下才需要。3.3 配置动态脱敏的具体路径在DataWorks数据保护伞里配置动态脱敏核心步骤大致如下进入数据保护伞的脱敏规则管理页面新建脱敏规则。选择脱敏的引擎类型和数据范围比如MaxCompute的某个项目空间下的某些表。配置字段级或者表级的脱敏策略敏感字段关联之前配置好的分级标签。选择脱敏算法设置参数比如掩码的保留位数。配置例外白名单允许特定角色或账号查看明文。发布规则并进行联调验证。这里最关键的逻辑是规则基于敏感标签生效。如果某张表的某个字段没有打上L3/L4标签脱敏规则是不会自动作用于它的。这也是我前面强调分级打标要做扎实的原因——脱敏只是执行层标签才是决策层。实际验证的时候最好用一个没有白名单权限的测试账号去执行查询确认返回结果是脱敏后的值。同时也要验证白名单账号能正常看到明文避免把管理层或审计需要的明文访问也一起挡掉了。3.4 脱敏落地中的几个坑脱敏这个环节我踩过的坑不少挑几个有代表性的说说。第一个坑是脱敏规则和查询方式不匹配。DataWorks的SQL查询有好几类入口数据开发里的临时查询、数据分析里的SQL查询、数据服务的API调用。有些脱敏规则只在特定入口生效如果你只在数据开发的查询入口验证过就以为万事大吉那很可能即席查询那边还是能查出明文。我建议验证的时候把常用的查询入口挨个测一遍。第二个坑是白名单配得太宽松。有些团队为了方便直接把项目空间管理员或者数据开发这类大角色加进白名单结果脱敏形同虚设。更合理的做法是单独建一个明文访问角色只给真正需要看明文的人比如安全审计、合规对接授予并且定期review白名单。第三个坑是脱敏后数据不可逆造成的二次污染。比如你把某张表的手机号做了掩码脱敏下游任务又把这张表的数据同步到另一张表那另一张表里的手机号也是脱敏后的。如果有业务需要这两张表做Join关联键就失效了。这个问题的解法是在建表和数据同步链路上提前规划好需要关联的字段用哈希脱敏而不是掩码或者用加密脱敏在受控环境解密。4. 权限管控与操作审计把谁能看什么管到位4.1 权限模型最小权限不是一句口号DataWorks的权限体系分为两层一层是DataWorks平台本身的角色权限比如项目空间管理员、开发、运维、访客另一层是底层数据引擎的数据权限比如MaxCompute的ACL权限、Label权限、Package授权。实际治理中最容易出问题的是平台角色权限过大。项目空间管理员能看项目下所有表的数据数据开发角色默认能读取和操作项目内的表。如果团队里每个人都是开发角色那权限管控就形同虚设。我的建议是角色规划要细数据开发负责开发和调度任务默认只能读写自己负责的表。数据运维负责任务运维和告警处理默认不主动读表数据。数据分析师可以查询表数据但不能修改表结构敏感字段默认脱敏。访客/只读只能看元数据和数据地图不能执行查询。这需要在DataWorks的项目空间管理里逐个配置角色同时配合引擎侧的数据权限。不要嫌麻烦权限模型的前置设计做得越好后面日常运营越省心。4.2 权限申请、审批与回收的闭环权限管控不能只是管理员手动开权限一定要走线上化的申请审批流程。DataWorks的权限中心支持用户发起权限申请指定要访问的表或者字段然后由表负责人或者项目管理员审批。这里的两个关键设计是审批人不要全都设成项目管理员。如果每个权限申请都要项目管理员审批他很快就会变成瓶颈或者因为审核不过来而随便点通过。更合理的方式是由表的负责人数据owner审批因为owner最清楚这张表的数据能不能给对方看。权限要有有效期。临时权限申请比如给一个数据分析师开一周的某张表读权限到期后要自动回收。长期权限也要设定周期性的复核机制比如每季度review一次发现超过一定时间未活跃使用的权限就回收。我见过最典型的反面案例是某位离职员工的账号还在DataWorks里角色是项目空间管理员直到有一次安全演练才被发现。这个问题的根因就是权限回收没有形成机制。后来我们接入了企业账号体系员工离职流程能自动触发DataWorks账号禁用这个问题才算解决。4.3 操作审计日志不是存了就行要看DataWorks会记录用户在平台上的关键操作日志包括登录、查询、下载、权限变更、任务运维等。这些日志主要存在操作审计模块里也支持投递到SLS等日志服务做进一步的聚合分析。但是记录日志和有效审计是两回事。我见过很多团队的审计日志开了但从没人去看等出了事才去翻。要发挥审计的作用得做三件事建立异常行为的告警规则。比如凌晨时段的批量查询、单账号单日查询次数突增、下载数据量超过阈值、权限变更操作。一旦触发告警立刻通知安全管理员。定期导出审计日志做人工review。不需要每天做但至少每月一次。重点看有没有异常的查询模式或者权限变更记录。关键审计日志要长期留存。一些合规要求可能要求日志保留至少180天甚至更长提前确认一下你所在行业的留存要求别等要用的时候发现日志已经被覆盖了。4.4 自动化运营把安全规则嵌入开发流程权限管控和审计做到后面还有一个提升方向是把安全规则嵌入到数据开发的日常流程里。具体来说新建表的时候强制要求填写分级标签否则不允许发布。这个可以通过DataWorks的表管理规范来落地。同步任务、数据集成任务涉及敏感表时自动提示或者阻断必须填写用途说明才能继续。数据服务API发布的时候自动检查API涉及的字段是否有敏感字段如果有默认开启脱敏或者要求申请明文权限。这一步需要平台团队和开发团队一起配合在DataWorks的规范配置和数据开发流程里做约束。虽然前期会多花一些配置时间但长期来看它能让安全从人盯人变成规则自动执行这是数据安全治理成熟度提升的重要标志。5. 使用DataWorks做安全治理的常见问题排查实录5.1 脱敏规则配置了但查询还是能看到明文这个是我被问到最多的问题。排查思路按顺序走先确认敏感标签是否打上。去数据地图里看目标表的目标字段确认是否已经打上了L3或L4级别的敏感标签。如果标签没有脱敏规则不会生效。再看脱敏规则的作用范围。确认规则覆盖了目标项目空间和目标表有的规则是按项目空间配置的新加的表没被包含进去。确认查询账号不在白名单里。如果查询账号被配了明文访问例外那它看到明文是符合预期的这不是bug是配置问题。确认查询入口。脱敏规则是否覆盖了当前使用的查询入口比如即席查询和开发查询可能走的是不同的规则链路需要用实际入口去验证。5.2 权限申请通过了但执行查询还是报错这种情况我遇到不止一次。权限申请通过只是第一步在MaxCompute这类引擎上角色需要把权限加载到会话中才生效通常需要重新登录或者重跑一次查询才会刷新。如果刚审批通过就立刻查询可能因为会话里的权限快照还没更新而报错等几分钟再试就好。另一种情况是权限层级的问题。DataWorks的查询权限和MaxCompute底层的表读取权限是两个层次。有时候你在DataWorks平台层面已经有了表的访问权但底层的ACL权限没配SQL在引擎执行阶段会被拒绝。排查的时候两边都要确认。还有一种是行级列级权限Row/Column Level Security配置冲突比如某条规则限制了用户只能访问满足特定条件的数据行而你查询的时候条件不匹配自然查不到数据。这种问题通常在规则发布的时候会有提醒但有时多个规则叠加表现就会很隐晦。5.3 敏感识别结果不准确误报漏报都很多识别准确率是数据保护伞这类工具绕不开的话题。误报多业务会被频繁骚扰漏报多风险敞口依然存在。我的调优经验是优先用字段名特征内容特征的组合规则大幅降低误报。对每一条识别规则设置合理的阈值比如内容匹配率高于多少才算命中避免偶发噪音触发。利用抽样结果的确认/忽略反馈来迭代规则同样的错误不要发生第二次。敏感数据识别是一个持续优化的过程不要指望一次配置就达到100%准确率先做到80%跑一段时间再调优到更高水平。5.4 治理运营的几个心得最后分享几个我对数据安全治理运营层面的观察不一定都是DataWorks的功能但都是实战中沉淀下来的经验。第一个心得别追求一步到位。数据安全治理是慢功夫先解决最敏感的数据有没有被保护这个核心问题再慢慢扩展到次要数据的覆盖。一上来就想把几百张表全部打标、全部脱敏项目大概率会中途夭折。第二个心得一定要有业务方的参与。光靠平台团队和安全团队推业务不配合分级标签永远打不准。让业务线的数据owner参与自己负责表的打标和权限审批他们才愿意配合后续的治理动作。第三个心得安全治理做得好不好要有一个可量化的指标。我建议每个季度统计一次比如敏感表覆盖率、脱敏命中率、权限回收及时率、异常告警响应时长。有了数字才能向管理层证明治理工作的价值也才能争取到更多资源去持续投入。DataWorks这套数据安全治理能力本质上提供的是工具链真正的治理效果取决于你怎么组织权限模型、怎么设定分级标准、怎么运营标签和规则。把这套逻辑想清楚了再回到控制台去配配置你会发现一切都顺理成章。如果你们团队也正在规划数据安全治理希望这篇实操记录能给你一些参考。
返回列表