返回IT运维网
  • |
  • 文章EID:
  • |
  • 账号:
  • 密码:
关系型数据库和NoSQL数据库安全性对比
2011-10-26 ZDNet存储网络 / 转载

问:我正在对各种类型的数据库架构进行研究。您能告诉我非SQL结构的数据库(NoSQL)与主流商业关系型数据库各自的安全性吗?

  对于要安全的存储信息的数据库来说,它需要提供保密性、完整性和可用性(confidentiality,integrity ,availability,简称CIA)。需要时,数据必须是可用的(可用性),但是只限于授权的个人或系统(保密性),而且数据只能由经过授权的人来修改(完整性)。

  关系型数据库包括集成的功能如基于角色的安全、加密的通信和对行、字段访问控制的支持,以及在存储过程之上的通过用户级别权限的访问控制。企业级的关系型数据库(Enterprise relational databases,RDBMS),如Oracle和微软的SQL Server还有ACID(atomicity, consistency, isolation, durability:原子性、一致性、隔离性、耐久性)属性,以保证数据库的事务被可靠地处理;数据复制和日志功能确保耐久性和数据的完整性。但是,这些功能一般都是有成本的,主要是许可费和数据访问速度。

  对于像Facebook这样的社交网络应用以及像Amazon这样的电子商务站点来说,它们需要处理海量的数据,扩展性和可用性是关键的数据库需求。使数据可以跨越数百、甚至数千台服务器进行分发,现在,许多公司已经转向了非关系型数据库管理系统或非SQL数据库(NoSQL)。然而,NoSQL数据库的安全远没有关系型数据库那样强键。

  非SQL数据库(NoSQL)有称之为BASE(基于可用的、软状态、最终一致)的属性,所以没有在每个事务后要求一致性,该属性对于数据库最终保持在一致的状态来说足够了。这意味着用户可能无法看到最新的数据,而是上次进行快照时的数据,例如库存中的物品编号。因为事务没有立刻写入数据库,有可能同步发生的事务受到其它事务干扰。这种固有的竞争条件(race condition),即不是所有的用户一定会在同一时间查看同一个数据,是数据库处理时面临的真正风险,比如共享的事务。

  NoSQL数据库同样缺乏保密性和完整性的特质。例如NoSQL数据库缺少图式(schema),你不能在表、行或列上分隔权限并保持对数据的快速访问,它们很少有内建的安全机制。流行的非关系数据库MongoDB的文档写道,“验证运行Mongo数据库的一个方法是在一个可信的环境中,没有安全和认证……当然在这样的配置中,必须确保只有可信的机器才能访问数据库的TCP端口”。而NoSQL数据库Riak不支持认证或授权。

  这意味着保密性和完整性必须完全地由访问数据的应用来提供。把用于任何极具价值数据的最后一道防线放在应用级别听起来并不现实。应用开发人员们不是以实施安全功能而工作的,更别提必须从头开始编写代码了。这样的话,你只剩下防火墙来保护你的数据了。

相关评论 [查看所有评论]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
心情:
  • 支持
  • 高兴
  • 枪稿
  • 不解
  • 搞笑
  • 愤怒
  • 谎言
账号: 密码:
验证码 看不清?点击更换
相关阅读