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

资讯详情

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

大数据平台数据合规改造实战:从资产盘点到权限管控

大数据平台数据合规改造实战:从资产盘点到权限管控 去年我们团队接到一个紧急改造任务把一套已经跑了三年、每天处理上百亿条记录的大数据平台在三个月内改造成符合数据合规要求的体系。刚听到这个需求时我第一反应是“这玩意儿不是法务该管的事吗”但真正动起手来才发现数据合规在大数据项目里根本不是一纸制度而是要从底层架构、权限模型、数据流转链路、审计追踪一路改到最上层的对外输出。团队里和我一样做大数据开发的朋友过去最关心的是吞吐量、稳定性、调度延迟突然要跟“合规”“分级分类”“脱敏”“审计留痕”这些词打交道一开始都很懵。这篇文章我就用实际落地的顺序把整套改造拆成四件事资产盘点与分级分类、权限模型与访问控制、全链路审计与数据血缘、对外输出的合规闸口。每个环节我都会讲清楚为什么这么做、具体怎么做、踩过哪些坑。内容主要面向大数据平台负责人、数据架构师、数据治理岗位的同学也适合刚入门想了解数据合规真实工作内容的开发者。哪怕你现在还没遇到合规改造的需求这套思路对你自己维护的数据平台同样有参考价值。1. 数据合规在大数据项目里到底管什么1.1 合规不是法务的独角戏很多公司一谈到数据合规第一反应是让法务部门出一套制度文件。但大数据平台上的数据是跑在几十上百台节点上的数据天天在流动平台每天有几百个任务在读写仅靠一份制度根本管不住。等监管检查或客户审查真来了拿不出技术证据光靠制度文件是不够的。在实际项目里数据合规落到技术侧核心就是回答四类问题数据从哪来、存哪了、谁在访问、输出给谁。具体到数据开发人员手上就要搞清楚哪些字段是敏感的个人信息、哪些表是核心业务数据谁有权限跑全量数据、谁只能看脱敏结果每一次越权访问有没有留痕往外提供的每个数据文件有没有审批和用途说明。1.2 四个环节的合规风险点我把一套大数据平台的数据生命周期分成四个环节采集、存储、加工、输出。合规风险在每个环节的表现都不同动手前必须把风险点列清楚。采集环节最常见的问题是过度采集。有些埋点设计图省事把用户手机号、身份证号跟着日志一起上报有些业务方为了后续分析方便在数据接入时就把能拿到的字段全部拉回来。这个环节的合规要点是字段最小化能不上报的敏感字段尽量不上报不能不上报的要立刻进入敏感字段管理流程。存储环节的问题集中在“裸奔”。数仓里ODS层的原始表往往权限宽泛所有数据开发都能select甚至能全量导出。更麻烦的是很多表没有分级标记敏感字段和普通字段混在一起等要打标的时候才发现根本分不清楚。存储环节的合规要点是加密、分级、分区隔离。加工环节容易被忽略。很多人以为数据放到数仓里就算处理完了实际上加工环节的临时表、中间结果、异常数据堆得到处都是。我们当时排查发现一个离线任务会把包含身份证号的中间结果写在普通目录下权限还是777。加工环节的合规要点是临时数据的生命周期管理中间结果也要纳入敏感数据管理。输出环节是最容易被查的。邮件发送、FTP传输、接口开放、第三方合作数据文件任何一条链路漏了前面做的加密、脱敏、分级全白费。输出环节的合规要点是事前审批、事中管控、事后审计三件套。1.3 落地优先级先解决看得见的风险合规改造千头万绪不可能一口气全做完也不建议一上来就追求完美。根据我们实际经验排序原则很简单先解决“一旦出事后果最严重、且技术改动量相对可控”的部分。对于绝大多数团队第一优先级是资产盘点与分级分类。因为这一步是后面权限、脱敏、审计的基础连哪些数据敏感都没搞清楚后面做再多策略都是盲打。第二优先级是权限收敛和访问控制把“谁都能碰全量数据”关进笼子。第三优先级是审计与血缘让每一次敏感访问都有据可查。最后才是对外输出管控因为在前面三步没有完成之前输出口的管控很容易变成“有流程无实效”。这个顺序还有一个好处每一步做完都有独立成果方便跟老板汇报也方便逐步建立团队信心。2. 第一件事资产盘点与数据分级分类2.1 没有盘点就没有后续几乎所有做数据合规的平台第一步都必须做资产盘点。很多团队以为盘点就是让DBA把数据库表列一遍实际上大数据平台的数据资产远比想象中散乱。以我们平台为例有Hive数仓表、Kafka消息数据、HBase在线表、ES索引还有临时跑出来的文件目录。只算Hive表就有几万张很多是历史项目留下的废弃表根本没人维护。盘点不是只列清单那么简单。每一张表需要搞清楚业务归属、更新频率、数据规模、是否包含个人信息或核心商业秘密、谁在申请访问、是否有下游依赖。这些信息汇总起来就是数据资产的根基。如果你们公司还没有元数据系统这一步会很痛因为需要人工逐张表核对但必须做。2.2 字段级打标分级分类怎么实操资产盘点最大的坑在于只做到表级没有做到字段级。表级标记只能告诉你这张表是敏感表但实际数据需求往往只需要敏感表中的部分字段。如果只按表控权要么放得太松要么卡得太死业务没法干活。我们的做法是把分类维度拆成两层。第一层是业务属性比如“用户个人信息”“员工信息”“经营数据”“运维数据”这决定了数据属于哪个管理域。第二层是敏感级别按影响程度分成四档L1公开数据、L2内部数据、L3敏感数据、L4核心敏感数据。L3包含了手机号、出生日期、精确地理位置这类单独可识别身份的信息L4则是身份证号、银行卡号、账号密码、健康医疗记录等一旦泄露影响特别严重的数据。字段级打标怎么落地我们做了一张敏感字段字典把常见敏感字段名和正则规则放进去包括字段名包含name、phone、idcard、bank、address等关键词的再结合抽样数据校验。用脚本批量扫描表结构先自动打标一遍再让业务方逐批确认。注意这一步不能全自动因为很多缩写字段名看不出含义比如“sjh”可能是手机号也可能是实际上报时间必须人工介入。2.3 元数据管理与自动化扫描做完一轮打标后难点是打标结果要持续维护。新建设的表、新接入的字段不会自动带标记如果只靠人工更新半年后标记又失效了。我们后来把逻辑做进了发布流程建表评审时先过敏感字段字典过完才能上线同时每周跑一次全量扫描发现未打标的新表就告警。工具方面商业化的元数据产品很多开源社区也有Atlas、Amundsen这类方案。如果没有条件上重型工具自己写脚本配合Hive metastore的元数据库也能撑起基础能力的建设。关键不是工具多高级而是扫出来的结果有人确认、有流程闭环。我见过不少团队把Atlas搭起来了但打标规则没人维护最终扫描结果还是摆设。2.4 常见误区不能只看库表名做分级分类最容易犯的错误就是“看表名猜敏感度”。一个内部表叫user_tag_info看起来像用户标签但里面可能直接存了用户的真实手机号和身份证号从表名和注释上根本看不出来。我们之前就碰到一张名为temp_2023_xx的表查完发现里面是全量用户手机号加设备序列号这种漏网之鱼一旦被导出后果非常严重。所以盘点的核心逻辑永远两条看字段、看样例数据。字段名命中敏感词只是线索必须抽查真实数据判断。注意抽查时要防止数据外泄抽查结果不要落到个人电脑上。3. 第二件事权限模型与访问控制3.1 从“谁都能碰”到“最小权限”大数据平台过去是一个重开发轻管控的环境。很多团队一个集群只有几个管理员账号大家共用同一套认证登录跑任务用同一个队列账号权限模型约等于零。到了合规改造时候第一步要做的就是把“共享账号”消灭掉所有访问都必须落到个人实名账号上。这个改动听着简单做起来很吓人。因为历史任务、定时调度、应用账号可能都是共用账号配置的一旦强制切换大量任务会认证失败。我们的策略是分两步走先给所有人建独立账号再逐个迁移存量任务。迁移期间共用账号继续保留但权限收敛到只读和历史调度同时加审计告警谁还在用共用账号马上定位三周左右迁移完成共用账号直接禁用。最小权限的真正含义是“按需授权”。数仓开发访问原始表、报表开发访问汇总表、业务运营只能看脱敏结果这些角色差异必须在权限模型里体现出来。不要迷信“给开发全部权限方便干活”权限放得太松是数据泄密的头号原因。3.2 RBAC 与 ABAC 怎么选权限模型通常有基于角色的RBAC和基于属性的ABAC两种主流方案。大数据平台落地时我们通常推荐以RBAC为主、ABAC为辅。RBAC的好处是模型直观配置简单适合团队规模不太大、角色边界清晰的场景。比如数据开发、分析、运维、业务运营各一个角色每个角色对应的库表权限提前定好新员工入职加角色就能干活。缺点是精细控制能力弱比如“只允许访问上海地区的用户数据”这种按条件控权RBAC做不到。ABAC可以做到基于数据属性动态决策。比如访问行为要求“部门风控”“数据地域上海”“访问时间工作日”满足条件才能放行。ABAC更灵活但规则复杂规则冲突排查起来很痛苦。我们实际的做法是主体用RBAC管角色客体字段用标签、分级等属性参与决策相当于在做Hive表授权时除了角色匹配还要求数据分级不能超过角色允许的最高级别这样就用简单手段实现了半动态的权限控制。3.3 权限平台的落地配置示例如果你用的组件是Hive、Spark、Hadoop生态权限平台一般会选Apache Ranger或放弃Ranger用原生HDFS ACL。Ranger的部署是一次性的但策略配置才是日常主要工作。我们的授权策略基本遵守这样几类规则数据开发角色对ODS层敏感表必须有审批流程才能访问分析角色只能访问已脱敏视图或汇总表运维人员只能操作元数据管理任务不能select业务数据。Ranger策略里把用户组、表、字段受控条件、访问类型组合起来做允许/拒绝校验。以下是一个策略简化示例Ranger的policy JSON简化版{ service: hive_dev, policyName: salary_detail_authorized_analyst, resources: { database: dw, table: employee_salary, column: [base_salary, bonus] }, policyItems: [ { groups: [analyst_approved], accesses: [ {type: select, isAllowed: true} ], conditions: [ {type: accessed_from_ip_range, values: [10.20.30.0/24]} ] } ] }这个示例表达的意思就是“只有approved的分析师组可以从内网IP段内查询工资明细表”。配置权限策略时别忘了拒绝规则优先原则Ranger的allow和deny同时存在时deny优先。我们曾因为只写了allow没写deny导致普通用户通过“不在策略内默认拒绝”的盲区误以为安全实际上如果服务默认allow逻辑策略之外就全放开了。上线前必须检查默认行为。3.4 数据脱敏静态和动态两种场景权限控制没法解决所有问题。业务方确实需要手机号后四位完成运营分析、需要身份证号前六位加后四位做去重关联这时候就要上数据脱敏。脱敏分为静态脱敏和动态脱敏用途完全不同。静态脱敏是数据从生产环境复制到开发或测试环境时做的清洗让开发环境不再存真实敏感字段。做法是在ETL链路中插入脱敏逻辑用哈希算法替换手机号、身份证号同时保持映射关系一致性支持同一用户在多个表中join不出错。需要注意哈希脱敏时要加盐不加盐的用户手机号哈希很容易被彩虹表撞出来。动态脱敏是在查询访问时实时改写返回结果。比如分析师正常跑count查询没问题但一select身份证号字段看到的就是打码后的值。Hive和Spark上可以用Ranger做列掩码策略也可以用视图方式实现。动态脱敏最大优点是生产库数据保持不变不用做数据复制性能影响却需要重点评估字段多、访问量大的表做正则替换比正常查询要慢不少。我们当时有一条经验不要把脱敏方案只挂在权限系统上因为权限系统只解决“能不能查”脱敏解决的是“查出来是什么”两者要配合使用。对L4级字段默认动态脱敏除非有特殊审批通过的抽取需求否则干脆不开放原始值查询。4. 第三件事全链路审计与数据血缘4.1 审计日志最少要记录哪些字段有了权限和脱敏还不够审计是数据合规里的“证据链”。曾经有个合作方质疑我们泄露了某批用户数据我们花了整整两天翻日志才证明这批数据的访问记录全部在授权范围内。如果没有审计这种事情根本说不清。审计日志最少要包括操作时间、操作人账号、来源IP、操作类型、访问的库表、命中的字段、扫描的数据量、执行结果。注意操作类型不只select还要包括导出、写入、权限变更、策略修改。权限策略的变更一旦没有审计后面追责就无从下手。数据量字段特别重要。一个分析任务跑3小时扫描了几百亿条数据和开发人员用客户端下载几万条数据风险等级完全不同。只要数据量异常拉高必须触发人工复核。审计日志本身也要保护。日志必须追加写、不能修改删除存储位置与生产库隔离日志权限只给审计管理员。日志保留期限要定我们按监管要求和内部风险评估定的是至少保存一年。4.2 敏感操作识别与规则告警审计日志躺在那儿没人看等于没有。靠人工翻日志不现实必须有规则告警。常见的敏感行为包括以下几种非工作时段访问L4级数据比如凌晨三点批量查询身份证号。下载量异常比如同一账号单日导出记录超过阈值。越权尝试访问权限外的数据。权限变更频繁短时间内给同一个账号多次提升权限。数据文件外发检测到向邮箱、外网FTP上传数据包。我们把规则做成了告警管道日志实时入Kafka用Flink跑规则命中后通知到合规管理员和业务负责人。刚开始规则别加太多先跑精的阈值宁高勿低等人力和流程跟上后再逐步收紧。4.3 数据血缘的实际用途数据血缘最直接的价值是回答“这份数据影响哪些报表”“这张表的数据源头在哪”。合规场景下血缘用于出问题时的溯源。如果出现一份包含手机号的文件泄露通过血缘可以查到这份文件的数仓表来源、加工任务、最后一批写入的时间以及谁在这个时间点访问过。血缘的另一个用途是辅助权限治理。通过血缘下游依赖可以评估“如果把这个表权限回收会影响多少任务”。我们实际回收过一批长期没人访问的敏感表权限靠血缘证明下游确实没有依赖业务方和DBA都放心。血缘工具在开源生态里可以选择Atlas或DataHub如果任务调度用的是DolphinScheduler、Airflow这类配合解析SQL方言能自动抽取表级血缘。注意血缘质量取决于任务编排规范程度任务全写在一大段SQL里、临时表满天飞的话血缘会断成一截一截的。想做好血缘先逼团队把SQL写得结构清晰表名统一规范。5. 第四件事数据对外输出的合规闸口5.1 三种输出形态接口、文件、数据库同步对内治理做到位了数据对外输出是最后一个高风险口子。对外输出大致分三种形态接口服务、文件下载、数据库同步。不同形态的管控手段差别很大。接口服务最需要关注的是接口全量数据传输。很多数据服务接口在内部设计时直接透传底层字段对接外部系统后没有做字段筛选。我们做过一次接口字段盘点发现一个名不见经传的“车辆信息查询接口”竟然返回了车主手机号和身份证号。对接口的合规改造要把字段视角改成“每个调用方能看到的最小字段集”并且每个调用方要有独立AppId、独立限流、独立鉴权。文件下载是最难防的输出形式。一张报表支持导出CSV用户就可以把全量明细拖走。文件类输出的管控要前置到“是否允许导出原始数据”的审批技术上区分“在线预览”和“导出文件”两步预览只展示脱敏数据导出需审批且加数据水印。导出的文件落库、留痕并关联到期日。数据库同步常用于合作方数据交换比如双方系统通过数据库连接直接拉取数据。这种形态要重点管控连接账号的连接IP白名单、同步行数和表范围同时禁止同步方用账号反向查询不在约定范围内的表。5.2 审批流与技术管控的配合审批流和技术管控一定要配合不能走走形式。很多公司有审批单但审批人根本不看申请内容点一下通过就算完。审批通过后技术侧还要再做一道检查申请说明里写的用途和数据内容是否匹配。比如申请理由是“数据分析需要手机号段”结果申请的表里还包括身份证号这种申请应该直接驳回。我们落地时建了一套输出申请流程申请填表、业务负责人审批、数据Owner审批、合规管理员复核、技术侧自动发权限。技术侧还会自动生成有效期到期自动回收。这个方法能解决存量数据权限一直挂着不回收的问题。数据合规不是“审批过了就完事”持续的有效期管理和定期复核同样重要。5.3 共享数据的二次保护水印、加密、用途限定数据一旦输出到外部控制力就弱了很多。所以要对共享数据做二次保护。最常见的手段是数据水印在导出的数据里加入不可见标记可以是加一行冗余的哈希字段也可以把某些不显著的数字字段做微小偏移。文件一旦泄露解开水印能追溯到哪个申请人的哪次导出。加密主要是针对传输和落盘传输用SFTP或HTTPS落盘用文件级加密密钥分开管理收数方不能拿到密钥。用途限定体现在合同和协议里但技术侧也能做一部分约束比如通过文件命名、数据版本号、回传访问日志等方式方便追溯对方是否超范围使用。这里特别提醒一点不要只盯数据文件本身。数据同步账号、接口Token、解密密钥这些基础设施泄露会让所有输出管控形同虚设。钥匙要比锁更重视。6. 落地中的常见问题与避坑实录6.1 业务部门不配合盘点走不动合规改造最难的往往不是技术是推动力。业务部门觉得盘点打标是“耽误我做业务”每次让业务方确认字段敏感等级都被拖两周。后来我们的做法是“合规收益前置”。先给业务方做一件他们真正受益的事比如基于血缘帮他们梳理出“我这张表的下游到底是谁在消费”或者把过去需要频繁提申请才能访问的数据做成自助脱敏平台业务方自己就能点击申请。当合规工作看起来像服务配合度就上来了。这个心态调整很重要数据合规团队不能只当警察还要当数据管家。6.2 存量平台改造成本爆炸老平台的改造比新建平台费劲得多。权限模型混乱、账号体系没有打通、历史表没打标这些都是躲不掉的债。我们当时做了一个决定不追求一次性全部改造按“业务线”切分。每条业务线按“资产盘点—权限收敛—脱敏上线—审计开启”四步走每做完一条线就切换一条线的流量。这种方式避免了大爆炸式改造带来的系统不可用风险。另一个成本大头是存量任务的适配。强制启用Ranger后很多现有任务会因为没有授权失败尤其是夜间调度任务失败后要人工补数据。上线前两天我们协调数据开发组全员待命一批批处理失败任务这在前期是正常的别怕一周后新增规则越来越少。6.3 合规工作怎么量化价值做技术的人往往不知道怎么向老板展示合规工作的价值。合规改造成果不像性能优化那样可以用数字证明。我们团队把量化指标分成三类覆盖类、收敛类、事件类。覆盖类指标包括敏感表打标覆盖率、核心表权限策略覆盖率、审计日志完整性。收敛类指标包括L4级数据访问账号数下降了百分之多少、拥有全表select权限的人数减少了多少。事件类指标包括异常调用拦截次数、越权告警响应时长、数据泄露风险发现数量。用这些指标做月度复盘才能让管理层看到这项工作“一直在发生”。6.4 一份可以抄作业的自检清单根据这一年多来的改造经验我整理了一份自检清单可以直接对照自己平台的状态检查项达标标准未达标时的风险敏感字段字典覆盖常见个人信息、账户、内部业务字段敏感数据漏网表级/字段级打标核心表覆盖率100%新表上线必打标权限策略无依据账号体系无共用账号所有访问实名审计无法定位操作人最小权限策略L4级数据默认无权限需审批内部人员越权访问动态脱敏敏感字段默认脱敏特殊访问需审批原始敏感数据大面积暴露审计日志包含操作人、对象、时间、数据量出事之后无法溯源告警规则覆盖异常时间、异常数据量、越权尝试风险行为无人响应数据血缘核心数据链路可追溯到源头问题数据无法定责输出审批流技术管控与人工审批联动数据外发失控定期复核权限有效期到期自动回收无用权限长期挂留这份清单基本上也是我们内部月度巡检的检查依据。合规建设是长期工程每一条都不是一劳永逸的。最后再分享一点个人体会。数据合规这项工作做起来确实绑手绑脚初期会觉得处处限制尤其是对做技术出身的人来说往往有一种“本来可以跑更快偏偏被加了减速带”的憋屈感。但真正在这个行业里看多了各种由数据泄露引发的问题之后我才意识到合规不是负担而是把数据当作真正有主权的资产来管理。一个平台如果连谁在碰敏感数据都答不上来它跑的再快也让人睡不踏实。越早把合规逻辑内嵌到平台底层后续的业务扩展、合作输出、平台开放才会越省心。如果你所在团队也正准备启动这类改造建议别想一步到位从一张表的盘点、一个敏感字段的脱敏开始逐步推进你已经比大多数还没动手的平台往前迈了一大步。
返回列表