社区编辑申请
注册/登录
数据存储加密之方案与难点 原创 精选
存储 数据管理
数据加密是存在风险的,可能存在加密后无法还原的风险。通常的做法是使用明文与密文并存方式解决。但由于明文的存在,必然会导致安全风险。目前针对这一问题没有很好的解法,常规的做法就是并存+隔离、小步快跑的策略。

随着云计算、大数据的快速发展,政府越来越意识到网络、数据安全的重要性。相应的法律法规不断完善,这其中包括《网络安全法》、《网络安全等级保护》、《重要数据出境安全评估指南》、《个人信息安全规范、大数据安全标准白皮书》、《大数据服务安全能力要求》等等。作为数据安全的重要组成部分,数据存储安全是安全的基础之一。本文,将描述数据存储加密的主流方案并进行对比,同时针对痛点难点问题进行说明。

1. 数据存储加密的场景方案

要对数据进行有效的存储安全管理,可遵循如下步骤:

步骤1:分析并确定要保护的关键数据

要对数据进行保护之前,首先要确定哪些数据需要保护和为什么要保护这些数据。这其本质是一个数据分级的问题。数据分级从概念上讲是根据数据的敏感程度和数据遭到篡改、破坏、泄露或非法利用后对受害者的影响程度,按照一定的原则和方法进行定义。另一方面也需要关注的就是法规遵从性需求。例如《数据安全法》第二十一条就规定,”国家建立数据分类分级保护制度,根据数据在经济社会发展中的重要程度,以及一旦遭到篡改、破坏、泄露或者非法获取、非法利用,对国家安全、公共利益或者个人、组织合法权益造成的危害程度,对数据实行分类分级保护”。下图就是就是按数据敏感程度做的一个划分示例:

图片

步骤2:选择适合技术方案和加密算法

作为数据防护是否能够成功实施的关键,企业需要在关键数据的安全性、保持应用系统的功能可用性,和系统可维护性方面综合考虑,来确定适合企业需要的加密保护的技术方案。下表罗列常用加密技术及应对的安全风险。

图片

  • 磁盘加密

磁盘采用的块级别加密技术,例如AWS的EBS,阿里云的ECS等都支持磁盘加密。这种加密最大的好处在于,它对操作系统是透明的。性能在加密后较加密前有所降低,根据上层应用的不同性能下降幅度各异。

  • 文件加密

通过堆叠在其它文件系统之上(如 Ext2, Ext3, ReiserFS, JFS 等),为应用程序提供透明、动态、高效和安全的加密功能。典型的是用于加密指定的目录。需要关注的是这种加密方式可能会产生较大的性能损失。

  • 数据库加密-TDE

透明数据加密TDE,是数据库提供的一种加密技术,即对数据文件执行实时I/O加密和解密。数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序。其对应密钥管理也是由数据库提供的API或组件实现,应用透明。在某些场景下磁盘或系统无法对用户开放(如云环境)的条件下,这种方式就比较适合。

  • 数据库加密-三方加固

数据库加密还有种方式是采用对数据库进行三方加固的方式,即将第三方专业数据库加密厂商的产品内置在数据库之中,提供透明数据加密能力。所谓透明是指,用户应用系统不需要做改造即可使用,且具有权限的用户看到的是明文数据,完全无感。此外,还可以增强原有数据库的安全能力,如提供三权分立、脱敏展示等。

  • 应用层加密

应用层加密,可以说是一种终极方案,其可保证在数据到达数据库之前,就已经做了数据加密,可实时保护用户敏感数据。这里关键需要提供应用透明性,保证应用无需改造或仅需少量改造。这种方式完全由用户自己控制,无需信任任何三方厂商提供的数据安全保障,得到充分的自由度和灵活性。例如可以跨多数据库提供统一安全加密策略等。

对比几种方式

图片

步骤3:保护好数据的加密密钥

为了保护好加密数据,不会被非法窃取,需要保护好数据的加密密钥。避免第三方厂商或个人接触到明文数据,最好做法就是将密文数据的密钥控制在用户自己手中。密钥管理包含了密钥的创建、存储、生命期管理、保护。密钥的安全性直接决定了加密数据的安全性。建议密钥独立存储,并采用根密钥保护,根密钥受硬件加密卡保护,或者被KMS服务的密码保护。所谓KMS密钥管理,是通过用户的口令保护主密钥,口令正确主密钥解密;主密钥对密钥文件进行保护,只有主密钥成功解密后,密钥文件才能使用,最后通过密钥文件生成可用的密钥。

图片

步骤4:实施必要的防数据泄漏措施

虽然采取了必要的数据加密措施,但并不能彻底解决来自应用系统环境和运维环境的安全威胁,典型的如来自应用系统的SQL注入攻击、后门程序、利用数据库漏洞的攻击行为、第三方运维人员的误操作等。因此需要采用数据库防火墙这样的数据边界防护技术,利用其细粒度的访问控制、防攻击、防批量数据下载等特性,实现有效的防数据泄漏。

步骤5:监控并审计数据的访问行为

一方面,黑客攻击行为千变万化,另一方面,系统的复杂性带来的数据正常维护和管理行为往往也是不可预期的。因此,需要对重要数据的访问行为采取持续、及时的监控和审计,形成有效的风险报告提供给用户发现新的风险,帮助用户更好地进行数据保护。

步骤6:利用自动脱敏防止测试环境数据泄漏

除了生产环境的数据防护外,企业内部测试环境也是一个重要信息泄漏源,特别是需要“抽取”源端生产数据用于测试系统时;利用数据自动脱敏技术可以在有效地保护生产数据的同时,为测试环境提供可用的符合用户预期的测试数据。

2. 数据存储加密的若干难点

应用透明问题

在数据存储安全的同时,如何提供如未加密前的使用体验非常重要。这里可总结为对应用的透明性。使用者或应用系统不需要关心系统进行了哪些保护,可完全无感地使用数据。这样的透明性主要体现在以下方面:

  • SQL 语句透明:如常规的SELECT、UPDATE、INSERT、DELETE 等语句可进行操作,应用程序不用作修改即可拥有安全特性。
  • 库内计算透明:对于应用透明支持的含义还包括库内的计算(如存储过程和函数透明的支持等)。
  • 开发接口透明:提供对应用开发接口的全面透明支持,包括:JDBC、ODBC等。
  • 生态工具透明:数据库自身及周边生态工具仍然可以正常使用。

厂商绑定问题

如上面提到的几种加密方式中,存储层加密、文件层加密会存在完全依赖于底层基础设施厂商(或云厂商)的问题,数据库加密也要部分依赖于数据库厂商或三方安全厂商;上述几种方式都会存在厂商绑定风险。对比而言,应用层加密相对灵活度最大,可完全从用户角度考虑加密问题,但这一方式必然存在较大投入,如何能做到应用无感是比较头疼的问题。目前主流有通过数据中间层的方式解决,即在应用与数据库之间构建访问层,将数据加密、解密、脱敏等功能实现其中。对上面的应用提供标准化、透明的数据访问接口,对下数据库提供标准规范的安全策略,可不绑定具体产品。

接入方式问题

如前面谈到的应用层加密,也许是个不错的选择。对应用来讲,最好的透明使用方式是提供出标准的数据库接口服务。当前主流是采用Proxy模式,可以让应用完全无感地使用。但想做到无感,是需要从数据库协议层面仿真模拟,但受限于商业数据库协议的封闭,是存在一定局限的。虽然可以通过如JDBC/Client的方式去做,但这种方式一是无法完全无感,二是会存在更新客户端困难等问题。

性能效率问题

数据存储安全所涉及的数据加密、解密、脱敏等,势必会影响到应用使用效率。虽然很多产品都号称效率很高,但这个性能瓶颈是客观存在的。这里首先需要的是正视效率问题,能客观评估效率差异;此外如何能通过某些方式去扩展计算能力,部分解决效率低下问题也是一种思路。相对而言,采用存储层、文件层方式,可在一定程度上解决此问题。

清洗迁移问题

针对数据加密,存在一个存量的问题。如果是新建项目,完全可以采用全新的数据安全策略,但对于已有项目且存在数据,是需要解决数据清洗及迁移问题。针对前者,难点在于如何实现动态清洗,在系统在线的同时,应用可同步处理新旧数据,逐步完成清洗动作。清洗后的解决还需解决数据校验等,确保清洗是准确的。针对后者,在清洗完毕后,需要做应用层面迁移,完全切换回去;这里需解决平滑过度问题及可能出现的回退问题。针对上述难点,应用层方案,无疑是比较好可以解决此问题的。

安全计算问题

数据最终是要参与到计算中的,不能因安全需求而影响到计算。对于数据安全计算,取决于其所处的位置在何处。对于存储层、文件层,其位于数据库之下,作为数据计算主体的数据库是可不感知的,但对于数据库层和应用层是要解决这一问题。数据经过加密后,会失去其数据特征,这会影响到优化器、执行器的工作。应用层加密也是同样的。目前存在一些密态计算技术,能在一定程度上解决这一问题。

国密算法问题

国密算法,即国家商用密码算法。是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。如SM系列密码,SM代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。之前很多的安全产品(特别是国外产品)是不支持国密算法的,这点是企业在做安全策略时需考虑的问题,特别是重监管的企业。

统一管控问题

数据散落在企业各处,提供统一、全局、细粒度的安全管控,包括复杂条件授权等是很有意义的。对于企业可采用统一的数据视角解决安全问题。目前通常的做法是基于不同数据库自己来实现各自安全策略,对客户不甚友好,如能统⼀处理,非常具有商业意义。针对这点,是需要站在单一产品之上,从数据使用生态标准角度去考虑。

数据加密风险

数据加密是存在风险的,可能存在加密后无法还原的风险。通常的做法是使用明文与密文并存方式解决。但由于明文的存在,必然会导致安全风险。目前针对这一问题没有很好的解法,常规的做法就是并存+隔离、小步快跑的策略。

用户意愿问题

这是一个终极问题,由于数据存储安全需求带来的各种问题,势必会影响用户对数据的使用且会存在较大的成本投入及面临风险。因而导致用户整体意愿不高,更多是政策层面的驱动。针对这一问题,一方面要看到数据安全已受到国家层面的关注,是必须要解决的问题;一方面通过技术上的不断完善成熟,加速稳定落地。

作者介绍

韩锋,51CTO社区编辑,CCIA(中国计算机协会)常务理事,前Oracle?ACE,腾讯TVP,阿里云MVP,dbaplus等多家社群创始人或专家团成员。有着丰富的一线数据库架构、软件研发、产品设计、团队管理经验。曾担任多家公司首席DBA、数据库架构师等职。在云、电商、金融、互联网等行业均有涉猎,精通多种关系型数据库,对NoSQL及大数据相关技术也有涉足,实践经验丰富。曾著有数据库相关著作《SQL优化最佳实践》、《数据库高效优化》。

责任编辑:武晓燕 来源: 韩锋频道
相关推荐

2022-06-15 08:25:07

Python天气数据可视化分析

2022-06-08 08:38:21

云存储数据安全

2022-06-21 21:47:13

数据系统

2022-06-29 14:46:00

网络攻击数据泄露勒索软件

2022-06-23 12:43:36

区块链加密货币

2022-06-15 16:16:21

分布式数据库鸿蒙

2022-05-12 15:54:43

机器学习加密流量分析安全

2022-05-09 15:08:56

存储厂商NFV领域华为

2022-06-29 09:19:09

静态代码C语言c代码

2022-06-27 23:44:37

云原生云存储云计算

2022-06-13 08:00:00

数据湖数据仓库大数据

2022-06-17 18:32:54

开源大数据数据调度

2022-06-30 10:56:18

字节云数据库存储

2022-05-12 15:05:32

云计算数据压缩

2022-06-22 05:53:49

城域网广域网VXLAN

2022-06-08 13:25:51

数据

2022-06-27 15:25:08

架构模型治理

2022-06-17 09:47:04

Linux命令

2022-05-17 11:27:17

容器数据存储

2022-06-28 14:47:43

数据中心服务器科技

同话题下的热门内容

Commvault与Oracle合作,提供Metallic数据管理即服务

编辑推荐

从携程系统瘫痪,看国内企业数据管理乱象大数据有道之spark选择去重微服务架构下的分布式数据管理分布式存储中的元数据管理数据管理的未来发展趋势
我收藏的内容
点赞
收藏

51CTO技术栈公众号