安当DBG国产数据库适配:达梦人大金仓OpenGauss字段级加密性能

发布时间:2026/9/19 2:13:15
安当DBG国产数据库适配:达梦人大金仓OpenGauss字段级加密性能 一、国产化替换为何不能丢了脱敏能力过去十年绝大多数企业的核心业务库跑在 Oracle、MySQL、PostgreSQL、SQL Server 之上围绕这些库的数据安全建设早已成熟字段级加密、动态脱敏、运维审计一应俱全。但随着信创推进越来越多单位把业务库迁往达梦、人大金仓、OpenGauss、OceanBase 等国产数据库迁移项目组往往把精力放在语法兼容、存储过程改写、性能压测上安全能力被当成上线后再补的尾巴工作。这种思路埋下了一个隐患国产化替换不是把库换个名字而是把数据资产的承载底座整个换掉。如果新库的加密与脱敏能力跟不上等于在迁移过程中给敏感数据裸奔开了一道缝。实际场景中风险主要来自三类内部数据泄露运维、开发人员通过国产库自带客户端、命令行工具、图形化管控台直接查询明文绕开了原应用层的安全控制。测试与交换环境扩散脱敏后的数据要下发到测试库、报表库、数据中台若脱敏在应用层做、而库本身不存密文迁移后这一环极易断档。备份与容灾明文落盘国产库的备份文件若不经加密离线介质一旦流出加密就形同虚设。因此国产化替换里真正该关注的不是能不能跑而是换库之后字段级加密、动态脱敏、运维管控这三件事是否还在。这就引出了数据库加密网关这一形态它在应用与数据库之间做透明代理把加解密、脱敏、权限视图、SQL 拦截全部下沉到网络层让应用零改造的同时不依赖具体数据库的版本与内核能力。二、数据库加密网关的两种工作模式在展开国产库适配细节前必须先厘清网关的两种基本模式因为不同模式下对数据库内核的依赖度不同适配工作量也不同。2.1 透明加密网关模式透明加密网关在字段落库前完成加密数据库里存的是密文。它的核心特征是加密在网关层完成应用发来的仍是明文 SQL或带明文字段值网关拦截改写后把密文写入库。返回的密文结果在网关层解密后回给应用对应用完全透明。即使 DBA 直接登录数据库查看表看到也是密文从根上阻断内部数据泄露。这种模式对数据库内核零侵入适配重点在驱动与协议解析而不在存储引擎改造因此对国产库的兼容最友好。2.2 运维管控网关模式运维管控网关采用明文存储 输出脱敏思路库里仍存明文或仅对个别极敏感字段加密但所有对外的查询结果、尤其是运维侧查询在网关层统一脱敏。它的价值在于兼容那些暂时不能改存储结构、或查询模式极其复杂大量非等值、非前缀查询的存量表。把脱敏策略与权限策略集中到网关运维人员看到的永远是脱敏后的视图应用看到的可以是明文。配合 SQL 级拦截与全量审计把谁能看什么收敛到一处管控。两种模式可以同一套网关并存按表、按字段粒度切换。例如身份证、手机号走透明加密而长文本备注字段走运维管控脱敏组合使用最贴合真实业务。以安当DBG为例它把上述双模式统一在同一个部署实例里应用通过原来的数据库连接串指向网关即可无需改动一行业务代码这正是应用零改造加密在国产库迁移场景里最容易被忽视、却最该优先评估的价值点。三、国产数据库驱动适配矩阵国产数据库的适配难点并不在算法本身而在三处驱动与线缆协议的差异、数据类型与字符集的差异、以及返回结果集中元数据解析的差异。下面逐一拆解。3.1 协议与驱动层主流国产库在 wire protocol 上各有渊源数据库协议渊源驱动形态适配关注点达梦 DM兼容 Oracle 风格协议JDBC/ODBC/DM 原生驱动包格式、事务标记、绑定变量人大金仓 KingbaseES基于 PostgreSQL 内核兼容 PG 协议驱动扩展类型、函数下推OpenGauss基于 PostgreSQL 演进兼容 PG 协议 私有扩展线程池、密态特性、类型系统MySQL原生 MySQL 协议JDBC/MySQL Connector字符集、预处理语句PostgreSQL原生 PG 协议JDBC/PG 驱动类型 OID、COPY 协议SQL ServerTDS 协议JTDS / MSSQL 驱动批处理、NTLMOracleOCI/TNS 协议OCI/JDBC Thin绑定变量、LOB网关要做的是双端适配对应用侧还原成应用期望的方言与协议对数据库侧翻译成目标库能识别的方言与协议。这意味着网关内部维护一张适配矩阵把不同库的 SQL 方言、类型映射、函数名做归一化。例如LIMIT与ROWNUM、AUTO_INCREMENT与序列、NVL与COALESCE的差异在网关的 SQL 改写层被抹平应用写一套 SQL 即可跨库运行。3.2 字符集与类型映射字段级加密会引入一个隐含问题密文比明文长。尤其是 FPE 之外的随机加密如 AES密文长度随算法与填充方式变化。国产库迁移时常使用 GBK、GB18030、UTF8 多种字符集混布网关在加密改写时要保证列定义长度预留足够余量避免密文超长触发value too long。二进制密文在字符型字段中传输时统一走 base64 或十六进制编码避免字节被字符集转换破坏。数值型敏感字段如金额、证件号加密后类型可能变为二进制或定长字符串网关要在结果集元数据里还原为应用期望的类型应用端无需感知。3.3 返回结果集解析脱敏与权限三视图都发生在返回结果这一刻。网关需要精确解析结果集的元数据列名、类型、表来源才能判断某列是否属于敏感字段、应套用哪种策略。国产库在结果集元数据上偶有非标准实现例如某些驱动把表名、列注释返回为空或大小写处理不一致适配矩阵里需要针对每种库做元数据补全与规范化否则脱敏策略会因为认不出列而漏脱。四、FPE 保留格式加密让密文仍可查询字段级加密最大的工程矛盾是加密之后数据库原生的索引与查询能力基本失效。随机加密的密文无任何结构等值、范围、模糊查询全部失灵业务几乎无法接受。FPEFormat-Preserving Encryption保留格式加密正是为解决这个问题而生。4.1 FPE 是什么FPE 是一类特殊的分组加密构造典型如 FF1、FF3 算法它的输出与输入保持相同的格式与长度。例如手机号13812345678加密后仍是一串 11 位十进制数字91724560382身份证11010119900307XXXX加密后仍是 18 位且末位校验逻辑可保留银行卡号加密后仍是 16–19 位数字。这意味着密文在库里仍是合法的数值/字符串数据库可以继续对其建索引、做等值匹配。明文: 138 1234 5678 │ ▼ FPE(key, tweak) 密文: 917 2456 0382 ← 仍是 11 位数字长度/格式不变4.2 FPE 如何支持 LIKE 与范围查询这是落地的关键。普通加密下WHERE phone LIKE 138%无法命中因为密文与明文前缀无关。FPE 通过两种思路缓解前缀保留Prefix-Preserving策略对需要前缀模糊查询的字段约定前 N 位不加密或采用确定性的前缀映射使LIKE 138%在密文上仍可前缀匹配。代价是暴露了前几位需结合业务评估可接受度。确定性 FPEDeterministic同一明文在同一密钥下恒定映射为同一密文因此等值查询WHERE phone 密文能精确命中索引范围查询在数值型格式化字段上也可借助字典序近似。要注意FPE 是确定性的这意味着它不能抵抗相同明文被关联到同一密文的推断攻击。因此实践中通常对高基数字段手机号、身份证用 FPE换取可查询性对低基数字段性别、状态用带随机盐的随机加密或令牌化避免频率分析关键字段叠加 tweak如用户 ID、机构 ID 作为附加因子让同一明文在不同上下文产生不同密文。以安当DBG为例它在 FPE 之上提供了策略模板可针对每列配置算法族FPE / 随机加密 / 哈希令牌、tweak 来源、是否前缀保留使运维人员无需理解密码学细节即可按字段安全等级下发策略这正是字段级加密在国产库大规模落地时最需要的可操作粒度。4.3 FPE 与索引、执行计划保留格式带来的最大红利是索引可用。在达梦、人大金仓、OpenGauss 上对 FPE 密文列建立普通 B 树索引等值查询走索引性能接近明文模糊前缀查询走索引范围扫描只有全模糊LIKE %123%与后缀查询需要全表或特殊结构。设计上应把高频等值、前缀查询字段用 FPE把低频、需全模糊的字段考虑在应用层建检索副本明文索引表隔离权限或用确定性哈希做等值、放弃模糊对范围查询字段如日期、金额尽量用数值型 FPE使字典序与数值序一致。五、性能3 万 QPS 与 5%–10% 损耗的成因加解密会不会把系统拖垮是每次方案评审必被问到的问题。给出 3 万 QPS、5%–10% 损耗这样的指标前先要讲清楚损耗从哪里来、又如何压下去。5.1 损耗的三大来源加解密计算开销每条 SQL 涉及的敏感字段都要在网关做对称加解密。AES、FPE 均为对称算法单笔开销在微秒级瓶颈在吞吐而非单笔延迟。SQL 解析与改写开销网关要解析 SQL、定位敏感列、改写语句、再解析结果集这部分是纯 CPU 的字符串处理。网络一跳开销应用原本直连库现在多过一道网关多出一次 TCP 往返与序列化。5.2 压到 5%–10% 的工程手段应用 ──► 网关(连接池/批解析/结果缓存) ──► 国产数据库 │ ├─ 连接复用长连接池避免每请求建连 ├─ 语句缓存Parse 结果按指纹缓存重复 SQL 免重解析 ├─ 字段级处理只处理敏感列非敏感列零开销透传 └─ 异步加解密批量字段并行计算关键优化点字段级而非全行处理只有被标记为敏感的列参与加解密绝大多数业务列直接透传开销被摊薄。语句解析缓存同样的模板 SQL 在网关解析一次后缓存 AST后续请求免解析SQL 改写开销趋近于零。连接池与批处理网关对数据库侧维持大连接池应用侧短连接快速复用网络一跳被连接复用吸收。横向扩展网关无状态可多实例前置负载均衡QPS 线性提升3 万只是单集群常见基线而非上限。需要正视的是FPE 比随机 AES 略慢多了格式保持的有限域运算但在字段级、缓存、并行三重优化下整体端到端损耗仍能落在 5%–10% 区间。对绝大多数 OLTP 系统而言这个代价换取密文存储 可查询 运维不可见明文是值得的。5.3 在达梦/人大金仓/OpenGauss 上的实测注意点国产库各自有性能特质压测时要针对性验证达梦注意其线程/进程模型与连接数上限网关连接池大小要与 DM 的MAX_SESSIONS匹配避免连接风暴。人大金仓基于 PG关注work_mem、共享缓冲区对索引扫描的影响FPE 等值查询是否真正走索引要用EXPLAIN确认。OpenGauss线程池模式下网关的连接复用收益更明显若启用其自身密态计算特性要与网关层加密明确分工避免双重加密。六、与 TDE 配合双层防护很多国产库已内置 TDE透明数据加密负责表空间或文件级的静态加密。有人会问既然库自己能加密还要网关做什么答案是两者层级不同、互补而非替代。维度TDE库内静态加密数据库加密网关字段级加密对象数据文件/表空间具体字段防护场景磁盘/备份介质泄露运维查询、应用越权、内部泄露DBA 可见性可见明文只见密文脱敏能力无动态脱敏 权限三视图查询影响几乎无字段级需 FPE 保查询改造量库配置应用零改造代理层因此推荐双层架构TDE 管落盘静态安全网关管字段级 动态脱敏 运维管控。两者叠加既防介质泄露又防内部人泄露且互不冲突。七、密钥与管控KSP 统一管钥字段级加密的安全边界最终落在密钥上。网关本身不应自己保管密钥自己用而应与独立的密钥管理服务解耦。实践中密钥由专用密钥平台KSP统一托管网关只持有使用密钥的权限而非密钥明文。要点密钥分级主密钥KEK与数据密钥DEK分离字段密钥按业务域、按库、按表分级单点泄露影响面可控。轮换不中断密钥轮换时网关支持在线 re-key旧密文逐步改写业务无感。权限收敛谁有权申请密钥、谁有权解密某字段统一在密钥平台审批与留痕。tweak 与密钥绑定FPE 的 tweak 因子如机构 ID与密钥策略联动避免 tweak 被篡改导致密文错乱。八、迁移兼容性的几个坑与对策在达梦、人大金仓、OpenGauss 上落地字段级加密除了算法与性能还有一批迁移专属的兼容性问题提前识别能省下大量返工。存储过程与函数内的明文引用存量业务把敏感字段直接写进存储过程、触发器、视图定义里。网关透明改写的是经过网络的应用 SQL库内对象里的明文引用网关管不到。对策是先扫描库内对象把涉及敏感字段的过程改为通过网关视图访问或在迁移时把敏感逻辑上提至应用层。批量导出与 ETL 路径很多单位用COPY、逻辑导出、第三方同步工具把数据抽到数仓。这些路径绕过应用、直连库若库里是密文抽出去的也是密文若库里是明文则脱敏必须在抽取环节补上。对策是把网关前置到所有抽取客户端之前统一在网关出口做脱敏避免出口即裸数据。字符集混合导致的密文损坏GBK 与 UTF8 混布环境下二进制密文若被当作文本在两种字符集间转码可能出现字节截断。对策是加密列统一声明为二进制或定长编码字段并在网关与驱动两端锁定连接字符集杜绝隐式转码。大对象与超长字段身份证、手机号这类定长字段适合 FPE但地址、备注类变长文本若整段加密密文长度波动大容易触发列宽限制或影响分页查询。对策是只对确需保护的子串如地址中的门牌、姓名做局部加密或令牌化而非整段加密。事务与一致性网关改写 SQL 后原事务边界不能变。对策是网关严格透传事务控制语句BEGIN/COMMIT/ROLLBACK与保存点加解密失败要能回滚整笔事务绝不能出现应用以为提交成功、库里却半密半明的中间态。九、运维管控SQL 拦截与全量审计国产化替换后运维侧是内部数据泄露的高发区。网关在运维管控模式下承担两件事SQL 级拦截对运维客户端发来的语句做规则拦截例如禁止SELECT *、禁止全表导出、禁止对敏感表的UPDATE/DELETE、禁止在业务高峰执行重查询。规则可针对账号、来源 IP、时间窗下发。全量审计所有经过网关的 SQL、执行账号、来源、影响行数、是否命中敏感字段全量留痕。审计日志本身加密存储、防篡改可作为事后追溯与合规举证的原始依据。配合权限三视图同一张表对应用返回明文视图、对运维返回脱敏视图、对审计返回带标签视图真正做到同库不同权、同表不同面。十、落地路径建议把上述能力落到国产库迁移项目建议分四步走资产梳理先盘点哪些表、哪些字段是敏感字段按等级高/中/低打标决定每列用 FPE、随机加密还是脱敏。影子验证网关以旁路或只读方式接入达梦/人大金仓/OpenGauss 测试库跑真实业务 SQL验证方言适配、索引命中、脱敏效果。灰度切流按业务域灰度先把查询类流量导过网关再切写入类全程观察损耗与延迟。双模并存存量复杂表先用运维管控脱敏新表或结构可控表用透明加密逐步收敛到全字段加密。方案参考面向国产数据库达梦、人大金仓、OpenGauss 等的字段级加密与动态脱敏落地可参考以下通用要点优先评估代理层而非库内核改造以应用零改造为目标的数据库加密网关对国产库的兼容成本显著低于在业务代码或存储过程里嵌入加密逻辑迁移可逆、回滚简单。建立驱动与方言适配矩阵把协议、字符集、类型映射、结果集元数据规范化统一维护避免新接一种库就重写一套逻辑。按字段安全等级选算法高基数的手机号、证件号优先 FPE 以保留等值与前缀查询能力低基数字段用随机加密或令牌化防频率分析范围查询字段用数值型 FPE 保证字典序一致。性能上抓三个杠杆字段级处理只算敏感列、语句解析结果缓存、连接池复用配合无状态横向扩展可将端到端损耗控制在个位数到十个百分点。与既有 TDE 明确分工库内静态加密负责落盘介质安全网关负责字段级与运维侧防泄露两者叠加而非互斥。密钥与网关解耦密钥由独立密钥平台托管主密钥与数据密钥分离支持在线轮换与权限审批留痕。运维侧把拦截 审计 三视图做成标配SQL 级拦截限制危险操作全量审计留痕权限三视图区分应用、运维、审计三种视角是国产化后防内部泄露的基础防线。灰度与可回退按业务域灰度切流旁路验证先行保证迁移过程对业务透明、对安全不打折。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询