数字化时代,数据安全与隐私泄露事件频发,同时,安全事件涉及面较广、影响力巨大,数据安全威胁问题愈发凸显。
随着数据安全在国家安全体系中的重要地位进一步明确,数据安全相关法律体系也不断在完善,如《数据安全法》《个人信息保护法》《网络安全法》和《网络数据安全管理条例(征求意见稿)》。
防范数据安全风险事件的发生、保障业务运营以及企业自身的发展需要都成为了企业在数据安全建设中的关注焦点。在信通院发布的《2021 数据安全行业调研报告》中,有 97% 的受访企业表示监管驱动是企业开展数据安全能力建设的主要动力。
图片来源:信通院《2021 数据安全行业调研报告》
加密改造面临的挑战
审计合规
-
满足合规要求
-
过程可回溯
-
密钥可定期更换
改造成本
-
改造系统
-
上下游系统、服务集群保持一致策略
业务安全性
-
保证改造过程的平滑
-
出现问题可快速回滚
-
减少对系统的影响
性能
-
加密运算带来的性能损耗
-
ROI 可控,满足预算要求
常见的 6 种数据存储加密方案
在整理文章的过程中查找了相关的材料,基本上会将常见的方案定义为 6 种:
-
应用加密方案
-
数据库加密网关方案
-
后置代理加密方案
-
数据库 TDE 加密方案
-
文件加密方案
-
磁盘加密方案
1. 应用加密方案
在应用内实现数据库加密是一种较早的加密方案,使用灵活但实现难度相对较大。该方案是在业务代码层面通过加密 API 实现加密需求,可根据业务特点进行灵活地设计,敏感数据在应用层经过加密后,以密文的形式入库,检索数据也需要在应用内进行解密。
加密位置:应用程序内部
适用场景:适用于防超管权限、业务需要处理加密表或字段相对较少的场景。
优势
-
防超管权限:系统管理员及 DBA 无法获取明文数据;
-
无外部组件依赖:通过业务自身即可实现数据加密的需求,无需依赖第三方厂商支持;
-
灵活地加密设计:可深度结合业务的特点进行定制化业务开发。
劣势
-
业务改造难度较大:已有系统无法透明移植,续升级维护实施成本高、影响面大;
-
对开发人员要求较高:要求开发人员在理解业务的迁移,还需要精通加密技术方案,如密钥的合理使用,未来更新密钥的方案等问题;
-
数据库原生能力受限:同应用内加密方案相同,加密网关方案仍需面对不能对应用完全透明的问题,复杂的数据计算无法通过数据库原生能力来完成,如 <、>、like 和 between 等原生能力。
2. 数据库加密网关方案
在部分材料中,数据库网关加密也被称为数据库前置加密。顾名思义,该方案是在数据库之前完成了数据加密。
与应用内加密方案较大的区别是,加密网关方案以独立组件的形式提供加密服务,它可以是 JDBC 驱动形态,也可以是代理形态,研发人员不需要关注业务与加密之间的逻辑问题,更多精力可聚焦于业务的研发。
数据库加密网关在对业务入侵较小的前提下,还具备灵活选择加密算法的特点,是一种较为通用的加密方案。若选择了 JDBC 驱动形态,则可对任意数据库进行数据加密。
加密位置:业务代码与数据库之间,JDBC 驱动层或代理层
适用场景:适用于防超管权限,同时业务侧及数据库侧不需关注加密实现的场景。
优势
-
防超管权限:系统管理员及 DBA 无法获取明文数据;
-
加密粒度细:可在字段级别完成加密处理;
-
入侵少:业务系统几乎不改动或者少改动代码,即可通过加密网关实现数据加密的需求;
-
通用性强:驱动+代理两种接入端,可覆盖大部分加密场景需求,避免重复“造轮子”。
劣势
-
数据库原生能力受限:同应用内加密方案相同,加密网关方案仍需面对不能对应用完全透明的问题,复杂的数据计算无法通过数据库原生能力来完成,如 <、>、like 和 between 等原生能力。
3. 后置代理加密方案
后置代理加密方案也被称为外挂加密,是一种透明的加密方案。第三方工具借助数据库原生能力实现加密需求,包括视图、触发器、扩展索引和外部调用。通过视图实现加密数据透明查询处理、通过触发器实现数据的加密插入和更新处理、通过数据库的扩展索引接口实现加密索引、通过外部接口调用实现独立于数据库的权限控制和加密算法,对应用完全透明。
加密位置:数据库外层
适用场景:适用于防超管权限、对权限进行细分、对应用透明且检索加密字段不多的场景,同时仍需考虑数据库的支持情况。
优势:
-
独立权限体系:具备更细粒度的权限管理,独立权限管理体系可防止超管用户越权检索敏感数据;
-
对应用透明:应用程序无需做调整,对应用完全透明;
-
加密粒度细:可在字段级别完成加密处理。
劣势:
-
可选产品较少:需产品开放高级接口,数据库产品可选范围较小;
-
替换数据库难:由于该方案高度依赖数据库的原生能力,因此未来更换数据库较难;
-
性能损耗较高。
4. 数据库 TDE 加密方案
TDE(Transparent Data Encryption)即透明数据加密,是一种在数据库内部实现的加密方式,顾名思义,对业务和用户透明。数据文件中存储密文数据,加解密均在内存中完成,且不会增加数据文件的大小。
加密位置:数据库内核层
适用场景:使用于业务程序不能做修改的场景,在数据库产品能够支持 TDE 技术的前提下,该方案可覆盖多数加密需求的场景。
优势:
-
对应用透明:应用程序无需做调整,对应用完全透明;
-
自动管理密钥:用户无需关注密钥管理问题。
劣势:
-
超管权限不受限:无法有效限制系统管理员及 DBA;
-
加密算法受限:无法满足有国密算法要求的场景;
-
可选产品较少:支持透明加密的数据库产品有限。
5. 文件加密方案
在操作系统文件驱动层,将数据库的存储文件经过加密后存储到磁盘上。在数据存储文件被打开的时候进行解密,在数据落地后再进行加密,在具备基础加解密能力的同时,还能够根据操作系统用户或者访问文件的进程 ID 进行基本的访问权限控制。
加密位置:文件系统层
适用场景:适用于透明加密需求,同时对应用进程有绑定需求的场景,只有授权的“白名单”应用进程访问文件时,才能获得明文。
优势:
-
对应用透明:应用程序无需做调整,对应用完全透明;
-
加密粒度细:可在进程级别进行控制。
劣势:
-
超管权限不受限:无法有效限制系统管理员及 DBA;
-
加密粒度粗:无法实现字段级别的加密处理;
-
性能损耗较大。
6. 磁盘加密方案
指通过动态加解密技术,对磁盘或分区进行动态加解密的技术,可通过软件或硬件的方式进行加密。当数据库访问磁盘扇区的时候,对加密扇区再进行解密。这种方式对于数据库自身来说是透明的,数据库管理系统也感觉不到加密解密过程的存在。
加密位置:磁盘层
适用场景:全磁盘加密技术适用于磁盘上所有数据(包括操作系统)进行动态加解密的场景。
优势:
-
对应用透明:应用程序无需做调整,对应用完全透明;
-
性能损耗低:磁盘加密技术通过操作系统内核层实现,能够最大化减少加解密损耗。
劣势:
-
超管权限不受限:无法有效限制系统管理员及 DBA;
-
加密粒度粗:无法实现字段级别的加密处理。
总结
为便于大家对比,下表对以上六种方案做了能力的比对。这里要特别说明的是,以下内容均为网络搜集整理,部分内容可能会存在偏差,欢迎纠错。
![](https://i-blog.csdnimg.cn/blog_migrate/81982662e4122de1255de228699d73e5.png)
参考
[4] 中安威士. 关于数据库加密,你不能不知道的秘密(一)