ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

安当DBG数据库加密网关:数据分类分级与脱敏协同的落地方法

安当DBG数据库加密网关:数据分类分级与脱敏协同的落地方法 一、为什么数据分类分级是脱敏的前置条件很多团队做数据库安全时第一步就直接上加密或者上脱敏结果很快遇到两类典型问题。第一类问题叫一刀切导致业务崩坏。把整张用户表都加密订单查询、对账、风控规则全都跑不动把整张表都脱敏运营分析、客服核实身份又失去了依据。安全手段如果和业务逻辑打架最终一定是被业务绕开防护形同虚设。第二类问题叫该护的没护住。运维同学能通过数据库客户端直接看到明文手机号、身份证、银行卡催生了最常见的内部数据泄露通道有权限的人把数据导出到本地。统计口径不同但行业里反复出现的结论是——相当比例的泄露来自内部人员或外包人员而不是外部攻击者。这两类问题的共同根因是缺少一条主线数据本身是有级别的防护动作必须跟着级别走。分类分级不是合规报表里的那个表格而是一套能被系统自动消费的数据属性。一句话总结先做分类分级再做策略映射最后才谈加密与脱敏。顺序反了安全成本和业务阻力都会失控。二、数据分类分级标签体系设计分类分级建议拆成分类和分级两个维度避免混在一起。分类回答这是什么数据通常按业务域划分例如身份类、联系方式类、财产类、健康类、行为类、系统类。分类决定要不要用敏感规则去扫描它。分级回答有多重要、泄露后果多严重给出统一的风险标尺。推荐四级模型从低到高依次是级别名称典型字段举例泄露后果默认处置L1公开商品名称、公告标题、统计聚合值几乎无影响明文展示L2内部内部工单号、部门编号、非精确日志有限影响可用于社工铺垫内部可见对外脱敏L3敏感手机号、邮箱、住址、订单明细可定位到个人引发骚扰或诈骗动态脱敏按权限出明文/掩码L4核心身份证号、银行卡号、密码凭证、生物特征直接用于盗用或欺诈字段级加密存储极少明文未定级待评估新上线的未知字段风险未知按最严策略兜底或阻断几个设计要点级别只增不减。字段一旦被定到 L3不能随意降到 L2降级需要审批留痕。标签要可继承。一张表的字段如果没有显式打标应按表级分类默认继承减少人工成本。标签要可被程序读取。打在元数据里而不是写在文档里网关、扫描器、审计系统都能直接引用。兜底策略必须存在。未知字段默认走最严策略避免漏标即裸奔。标签要有生命周期。字段被删除、合并、语义变更时标签应随之清理或重新评估避免残留标签误导策略引擎。建议把标签变更纳入数据字典的版本管理谁改了标签、为什么改、改成了什么都留有记录。标签粒度要适中。过粗会丢失防护精度过细会带来惊人的维护量。经验上以业务可理解的字段语义为粒度最合适既能被自动发现命中又能被数据 owner 快速确认。三、敏感数据自动发现与打标人工逐字段定级在几百张表的规模下就难以为继必须靠自动发现。自动发现的核心是规则 抽样校验的组合。常见的识别依据有四类列名语义匹配。字段名命中id_card、phone、mobile、email、bank、password、addr等字典。数据内容特征。对抽样数据跑正则例如手机号十一位、身份证十八位带校验位、邮箱含、银行卡十六到十九位。外部知识库。参考行业标准字段目录或历史已定级字段做相似度匹配。业务语义标注。由研发在表注释或数据字典里声明字段敏感属性作为高优先级信号。下面是一段脱敏策略扫描的伪代码示例展示如何把发现结果落为标签# 敏感字段扫描器把命中规则的结果写成标签而不是立即加密importre RULES{id_card:re.compile(r^\d{17}[\dXx]$),phone:re.compile(r^1[3-9]\d{9}$),email:re.compile(r^[^\s][^\s]\.[^\s]$),bank:re.compile(r^\d{16,19}$),}defscan_sample(rows):rows: 抽样得到的字段值列表返回命中级别与依据labels{}forcol,valuesinrows.items():forvalinvalues:forname,patinRULES.items():ifpat.match(str(val)):labels[col](L3,name)break# 命中身份证或银行卡直接升到核心级ifcolinlabelsandlabels[col][1]in(id_card,bank):labels[col](L4,labels[col][1])returnlabels# 输出示例{phone:L3, id_card:L4, bank:L4}自动发现不是终点而是起点。建议把扫描结果先进入待确认队列由数据 owner 在两周内确认或修正确认后的标签才正式生效。这样既能减轻人力又能避免误标导致业务误伤。四、定级到脱敏策略的自动映射标签只有被策略消费才有意义。把级别映射到具体的脱敏与加密动作是整套机制的中枢。下面给出一张可直接落地的策略映射表。级别存储形态输出形态按权限脱敏函数适用动作L1 公开明文明文无直接返回L2 内部明文内部明文 / 外部掩码掩码跨域访问时脱敏L3 敏感明文或加密权限决定明文/脱敏掩码、部分遮蔽、替换动态脱敏为主L4 核心字段级加密极少数高权限明文其余脱敏或密文保留格式加密、全遮蔽加密存储 按需解密未定级按最严按最严全遮蔽或阻断兜底拦截映射时要区分两种脱敏逻辑静态脱敏在数据出库、导出、同步到测试库时一次性处理生成不可逆的脱敏副本。适合给开发、测试、分析用。动态脱敏在查询返回时按请求者身份实时决定展示形态原始数据不动。适合生产环境客服、运营、运维的按需查看。动态脱敏的关键在于同一条 SQL不同人看到不同结果这要求网关能识别会话身份并对照字段标签做实时改写。以安当DBG为例它在应用与数据库之间做透明代理字段上携带的级别标签会在查询返回路径上被读取再结合当前会话的权限角色决定该字段返回明文、掩码还是密文。也就是说定级结果不是给人看的报表而是被网关直接执行的指令应用层完全无感知也就不需要为脱敏逻辑改一行业务代码。五、权限三视图明文、脱敏、密文把谁能看到什么抽象成三种视图是控制内部泄露最有效的方式明文视图仅限数据 owner、经过审批的工单场景、以及必要的核验环节。例如客服核实身份时可看到完整手机号但操作被录屏与审计。脱敏视图绝大多数日常查询的默认形态。手机号展示为138****8000身份证展示为310***********1234既满足业务核对需要又不暴露完整敏感值。密文视图运维人员通过数据库客户端直连时核心字段直接返回密文。运维能看到有数据、结构正常但拿不到能用的明文从根上切断有权限就能拖库的通道。三视图不是靠应用硬编码而是靠策略引擎在网关处统一裁定。好处是策略集中、可审计、可一键调整。今天发现某个角色越权直接改映射规则即可不依赖发版。下面是一段策略判定的简化逻辑说明三视图如何被实时裁定defresolve_view(level,role,purpose):# level: 字段级别role: 请求者角色purpose: 用途标签iflevelin(L1,):returnplain# 公开数据任何人明文iflevelL4androle!data_owner:returncipher# 非数据主人看核心字段给密文iflevelL3androlein(dev,ops):returnmask# 研发运维看敏感字段给脱敏ifpurposeverifyandrolein(csr,audit):returnplain# 核验用途且经审批给明文returnmask# 默认脱敏兜底注意最后一行任何未命中明确规则的请求默认落到脱敏。这就是默认安全原则在数据库访问层的体现。六、与字段级加密的边界划分分类分级之后团队常问一个问题到底该脱敏还是该加密两者职责不同不能互相替代。动态脱敏解决的是展示层的问题数据以明文存在数据库中但在返回给不当角色时被遮蔽。它的优势是对业务几乎零侵入、查询性能好、不影响范围检索劣势是数据库落盘仍是明文一旦存储层被攻破或备份泄露数据就暴露了。字段级加密解决的是存储层的问题数据写入数据库前就被加密落盘即密文。即使拿到数据库文件、备份或磁盘快照没有密钥也解不开。它的优势是存储侧强防护代价是密文不再能直接做范围查询、排序除非采用保留格式加密这类特殊算法。保留格式加密FPE是一个关键折中加密后数据长度与字符集不变因此LIKE前缀匹配、相等比较、部分范围判断仍可执行只是无法做大小比较类的范围扫描。对于身份证、卡号这类需要按前缀检索又必须加密的字段FPE 是优选。需要强调的是FPE 不是万能的。由于密文与明文格式一致它牺牲了部分密文不可辨识性来换取可检索性因此不能单独依赖 FPE 对抗密文统计分析类攻击仍要结合密钥分权、访问审计一起使用。在工程落地时通常只对确实需要检索的核心字段启用 FPE其余核心字段使用更强但不可检索的加密算法做到风险与可用性兼顾。推荐的双层结构第一层用透明数据加密保护数据库文件、备份、表空间抵御存储介质层面的泄露。第二层用字段级加密网关针对 L4 核心字段做列级加密密钥由独立的密钥管理系统托管权限与数据库账号解耦。两者配合既挡住拿到磁盘的攻击又挡住拿到数据库账号的内部泄露。脱敏则覆盖 L2、L3 在查询展示时的按需遮蔽形成存储加密 展示脱敏 权限三视图的完整闭环。七、定级与脱敏联动的架构设计把前面几节串起来一个可落地的联动架构大致长这样┌────────────┐ SQL ┌──────────────────────────┐ SQL ┌──────────┐ │ 应用系统 │ ─────────▶ │ 数据库加密网关代理层 │ ─────────▶ │ 数据库 │ └────────────┘ │ │ └──────────┘ │ 1. 解析 SQL 与访问身份 │ │ 2. 读取字段分级标签 │ │ 3. 匹配脱敏/加密策略 │ │ 4. 改写结果明/脱/密 │ └──────────────────────────┘ │ │ ┌───────────────────┘ └───────────────────┐ ▼ ▼ ┌───────────────┐ ┌───────────────┐ │ 分类分级中心 │◀── 自动发现打标 / 人工确认 ──────│ 密钥管理系统 │ │ (标签元数据存储)│ │ (密钥托管轮换) │ └───────────────┘ └───────────────┘ │ ▼ ┌───────────────┐ │ 全量审计日志 │◀── 谁、何时、查了什么、看到明/脱/密 └───────────────┘数据流说明应用照常发 SQL不感知网关存在实现应用零改造加密。网关拦截所有进出流量先识别这是谁、在查什么字段。对照分类分级中心里的标签把级别映射为对应的展示形态。L4 字段在写入时由网关完成字段级加密密钥从密钥管理系统获取数据库侧只存密文。运维直连数据库时由于字段已是密文且网关对客户端返回也按策略遮蔽看到的是密文或脱敏值。每一次访问都进入全量审计记录主体、客体、动作、结果形态事后可回溯。这种架构的价值不在于某个单点技术多强而在于把分级—映射—执行—审计串成一条自动化链路。安全策略从文档变成代码从人治变成机制。八、落地实施的五个阶段把上述设计落到生产建议分五个阶段推进避免一次性大爆炸式改造盘点与打标阶段用自动发现扫描全库字段生成初始标签进入待确认队列由数据 owner 复核。此阶段不动生产数据。影子运行阶段网关以只读旁路或镜像方式运行记录如果不干预会做什么验证策略映射是否误伤业务修正标签与规则。L4 先行阶段先对核心级字段开启字段级加密因为这部分风险最高、影响面相对可控且通常需要配合密钥管理系统上线。三视图阶段对 L2、L3 开启动态脱敏与权限三视图把运维、研发、客服的访问形态按角色分开。持续运营阶段新上线字段自动进入待定级队列标签随业务变更评审更新审计日志定期复盘异常访问。每个阶段都要有可量化的验收指标例如核心字段加密覆盖率、敏感字段脱敏命中率、越权访问拦截数、审计覆盖率。没有度量的安全项目很难向管理层证明价值也容易在业务压力下被悄悄弱化。九、常见误区与规避误区一把脱敏当成加密的替代品。脱敏不改变存储只改变展示一旦存储泄露脱敏毫无作用。两者必须分层部署。误区二标签只打一次。业务字段会随版本演进新增、变更语义标签需要纳入数据变更的评审流程否则会出现新字段漏标。误区三权限过宽。给运维账号开了明文视图等于把核心数据重新暴露。三视图的明文部分必须配合工单审批和录屏审计而不是永久授权。误区四忽略性能。加解密与脱敏改写都会带来开销需要通过保留格式加密、批量处理、连接池复用等手段把损耗压到可接受区间。实测中合理的工程实现能把单网关损耗控制在百分之五到十并支撑数万量级的每秒查询。误区五审计日志不被查看。审计的价值在于可被检索和告警而不是存满磁盘。应建立异常访问的实时告警例如同一账号短时间大批量拉取敏感字段。误区六把分类分级当作一次性项目。数据在持续变化新业务线、新表、新字段不断产生定级工作若不能常态化半年后标签就会严重失准。正确做法是把发现与打标做成周期性任务并与数据上线流程挂钩让分级成为数据治理的常态环节而非应付检查的临时动作。误区七只防外部不防内部。不少团队把全部预算压在边界防火墙与入侵检测上却放任内部运维、研发、外包人员以明文方式接触核心数据。事实上内部人员因权限天然拥有数据通道一旦缺乏脱敏与三视图约束就成为最便捷的泄露路径。数据库防泄露必须把内部访问纳入同等强度的管控。方案参考对于准备建设数据库防泄露能力的团队给出几条通用落地建议不涉及具体产品能力宣介选型要点优先评估应用零改造方案。要求业务改代码的加密方案落地成本与后续维护成本都会被严重低估应尽可能选择对应用透明的代理或驱动层方案。确认数据库矩阵覆盖度。生产环境往往是多类型数据库并存选型时要核对是否支持团队实际使用的全部类型包括主流开源库与国产数据库。关注对检索友好性。若业务需要对加密字段做查询应确认是否提供保留格式加密等可检索加密能力避免加密即废掉查询。密钥管理要独立。加密强度最终取决于密钥是否独立托管、是否支持轮换与分权密钥与数据同库是最危险的架构。实施建议先分级后加密先核心后全部。从风险最高、范围最清晰的 L4 核心字段切入快速拿到防护收益再逐步覆盖 L3、L2。用影子运行降低风险。正式拦截前先旁路观察策略命中情况用真实流量校验标签与映射避免误伤业务。把分类分级纳入数据变更流程。新表新字段上线即触发定级任务防止出现防护盲区。脱敏与加密分层部署。存储层用字段级加密挡泄露展示层用动态脱敏控访问二者互补而非替代。风险规避明文视图必须配审批与审计。任何能看明文的高权限通道都要有工单、录屏、日志三重约束否则等于打开后门。性能损耗需压测。上线前用真实混合负载压测网关吞吐与延迟确认损耗在业务可接受范围预留扩容余量。远程接入场景重点防护。当数据库允许远程访问或通过跳板机接入时应把运维通道纳入网关统一拦截避免绕过代理直连数据库。兜底策略不可缺失。未知字段、未定级字段默认按最严策略处理宁可先拦后放不可先放后补。审计要可被消费。日志不仅要能存还要能检索、能告警、能复盘让异常访问可被及时发现。组织配套要同步。技术手段再完备若缺少数据 owner 的定责机制与跨团队协同流程分级标签仍会失真。治理先行工具随后才能把防护真正固化下来。
返回列表