非关系型数据库安全研究综述

发表时间:2020/12/21   来源:《科学与技术》2020年8月22期   作者:张领 王明君 王宏博 李松
[导读] 随着云计算与大数据技术的发展,除了考虑部署传统的关系型数据安全机制
        张领  王明君   王宏博   李松
        北京首都国际机场股份有限公司   北京市  100621
        摘 要: 随着云计算与大数据技术的发展,除了考虑部署传统的关系型数据安全机制,同时还需要重点考虑如何保障非关系型(NoSQL)数据库的安全。非关系型数据库存储了大量的视频、音频、图片等数据,可以快速处理海量数据,具有高并发性、高可扩展性等优势。本文从非关系型数据库的基本概念入手,通过对非关系型数据库的安全分析,总结出十大安全实践场景。
        关键词: 非关系型数据库;加密传输;安全存储
1 非关系型数据库安全概述
1.1 非关系型数据库概念
        NoSQL是Not Only SQL的简写,其含义是“不仅是结构化查询”,是不同于传统的关系型数据库的数据库管理系统的统称。NoSQL与SQL的最显著的区别是NoSQL不使用SQL作为查询语言,其数据存储不需要固定的表格模式,也避免使用SQL的JOIN操作,具有水平可扩展性。NoSQL的实现具有两个特征,使用硬盘或者尽可能把随机存储器当作存储载体。[1]
1.2 非关系型数据库的威胁模型
1.2.1 事务完整性与性能矛盾
        与传统数据库相比,NoSQL为了满足大规模数据集而使用了分布式存储,以提供接近线性的性能扩展,同时为了保障可靠性,采取了多份数据保存的方式,进而满足了CAP模型中的可用性和分区容错性,但是牺牲了数据一致性。[2] 但NoSQL还是实现了一定程度上的数据一致性的。

        作为NoSQL的三大基石之一,BASE模型 是Basically Available,Soft-state,Eventually Consistency 的缩写,它是反ACID 模型。它允许数据只满足最终一致性(Eventually Consistency)。
常见的NoSQL数据库如HBase MongoDB大多是基于BASE模型的以实现最终一致性。在分布式系统中,在各个节点见维护数据的一致,必然会进行节点间数据的比较和先后校验,进而会产生相应的网络带宽和计算需求。在算法复杂度一定的情况下,对某一时段一致性的要求越高,就意味着校验的频率提升,进而增加校验算法对计算资源和网络的占用,进而降低NoSQL数据库的性能。这产生了事务的完整性和性能之间此消彼长的矛盾。
2 非关系型数据库安全分析
2.1 确保数据的安全性
2.1.1 数据完整性通过应用程序或中间件层实施
        数据完整性是维护并保证数据全生命周期的精度和稳定性的统称 。对于数据库而言,数据完整性特指数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类:实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)、用户自定义完整性(User-definedIntegrity)。 对于NoSQL数据库而言,其实体完整性由key来保证,但由于缺乏对VALUE的约束,和无外键机制,所以缺乏域完整性和参照完整性。
2.2 NoSQL架构应在所有层支持可插拔认证模块
        由于NoSQL低效的授权机制,许多数据库实例甚至只使用了用户授权,导致用户权限过高,极易造成隐私泄露。考虑到NoSQL的授权效率,过于复杂的授权对性能影响很大,因而需要只对需要授权的层级进行认证控制,所以需要在服务层面上对用户、表、列族层次均实现可插拔的认证模块,以满足不同粒度的授权需要。
2.2.1 控制跨集群通信
        由于NoSQL常采用分布式的工作方式以提高性能,因此会形成相对应的数据库集群,除了外部的用户作为安全对象外,NoSQL数据库的内部安全的对象为内部存储以及服务节点,涉及到内部服务的访问控制、数据文件存储以及内部服务;考虑到运行于可信环境的设计目标和松懈的身份验证机制,这要求在节点工作和建立连接前进行充分的验证,以避免恶意节点的接入导致数据泄露。
2.2.2 适当的日志机制
        通过运行时日志分析、聚集和应用关联的日志分析可以揭露出可能的攻击
虽然NoSQL本身的权限管理相对薄弱,但是其对文本类数据的较高的分析支持性能可以实现传统关系型数据库难以实现的分布式运行时日志分析,进而通过挖掘日志中的关联信息发现可能的攻击。
3 结合HADOOP的非关系型数据库安全实践
3.1 密码保护
        由于NoSQL的数据的弱验证特性,在用户认证和密码保护需要从设计级增强,通过使用加密算法如SHA2和SHA3及数据加盐的方式生产hash结果并储存用于校验,可以有效避免密码的碰撞和暴力破解。
3.2 静态数据安全加密
        NoSQL数据库缺乏对数据的存储保护,所有数据均是明文形式存储,管理员可以不经过用户允许直接查看、修改用户在云端保存的文件,很容易造成数据泄露。为避免该风险,通过使用加密算法如SHA2和SHA3及数据加盐的方式进行数据加密,同时代码和加密密钥的存储必须与数据存储或存储库分开,并将加密密钥备份在脱机的安全位置。
3.3 传输层安全
        TLS主要提供三个基本服务: 加密、身份验证和消息完整性校验。
TLS协议是基于TCP协议之上的,第一个蓝色往返是TCP的握手过程。之后的两次橙色的往返,就是我们要重点说的协商过程了,可以叫做TLS的握手。握手过程如下:
Client1:TLS版本号 + 所支持加密套件列表 + 希望使用的TLS选项;
Server1:选择一个客户端的加密套件 + 自己的公钥 + 自己的证书 + 希望使用的TLS选项 +(要求客户端证书);
Client2:(自己的证书) + 使用服务器公钥和协商的加密套件加密一个对称密钥;
        Server2:使用私钥解密出对称密钥后,发送的加密的Finish消息,表明完成握手。
3.4适当的日志机制
        使用适当的日志机制如NIST 日志。
3.5 使用模糊方法进行安全测试
使用模糊测试工具如Sulley,产生无效,意外或随机输入并进行测试。典型的策略包括使用完全随机输入的模糊测试和基于输入格式制作输入数据的智能模糊测试等。
3.6 确保恰当的数据标注技术
        通过采用时间戳对数据进行标注,时间戳是一段完整的、可验证的数据,它表示在某个特定时间点存在数据。通常是一个字符序列,唯一地标识某一刻的时间。通俗的讲,时间戳是一份完整的可验证的时间数据证明,它能够证明一份数据存在或发生于哪个时间点。
Reference:
[1] 陈明.NoSQL数据库系统.计算机教育,2013(11):107-111.
[2] Vogels W., Eventually Consistency[J], Queue, 2008, 6(6), p. 14-19.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: