上周一个新闻事件吸引了媒体的注意,450,000个一些来自称名为‘雅虎声音’的雅虎服务的将近450,000个密码被攻破击了。关于这个事件的评论说到,黑客主要通过SQL Injection(SQL注入)技术是黑客从数据库获得信息然后并将这些信息发布信息时所采取的主要技术。
即使是修改完成的原创文章,如果在进行一次检查也能够发现错误。技术也是一样,正如每一个更每一次深入的讨论都能够发现新的问题,。其实每一次被攻击的公司都对数据进行了安全保护,但是被攻击的事件依旧层出不穷。我们能做的就是对数据进行更多的保护,并把我们发现受到影响的公司采取了更多预防措施来当做确保数据安全的是他们的最高优先级事件。不得不说这些此事件将对也整体上动摇了云计算产生一定的影响,企业的在企业会被采纳,因为这些事件使CIO们的头脑中增加了对云安全的恐惧、不确信和怀疑。
然而随后的事情是应该被每个企业采取最好的实践和指导方针,当企业准备采纳混合云计算时,这种一次性事件不应该阻碍他们采纳混合计算方法的道路。
换句话说,这个事件不是真的因为云的采纳或者一个多用户模型,而是因为没有遵守选择适合的云计算年久的而导致的错误,这是一个最好的反面教材最好的实践。同时这也暗示表明了了对企业计算算法数据管理具有丰富的知识经验的并日益重要的云经纪人或者云技术中介协调人存在的重要性,更是确保企业选用以一个安全方式采纳云计算的关键的重大意义。
从雅虎密码被攻击得到的教训
1.在开发过程中不要遵循安全框架
不管技术发生了什么如何变化,开发的基本原则和编码是不变的。大多数时候SaaS供应商对于市场时间有感到很大的压力,市场时间有时仅够使他们围绕完成基础的安全设施基本原则工作,但这是不对的。如果你从用户那里接受输入,那么通常在输入进行之前就需要被确认。缺少输入的确认是会引起像Cross-Site Scripting或者SQL Injection等背后袭击的根源。在一个多用户世界中,SQL Injection的风险增加了好多倍,因为黑客通常能够通过创建一个虚拟的账户后作为一个合法用户进入系统,然后开始攻击其他用户的数据。
早期我在2010年的一篇文章里已经详细阐述了在SaaS中的SQL Injection,当涉及到开发SaaS或多用用户应用时,我认为输入确认是进程仍然是行之有效的。
2.不要在数据库级别加密
总的来说,关键数据加密是是确保任何所有数据库安全最重要的安全方面法则之一,并且这对于多用户数据库则显得尤其更加重要。然而大多数企业会采取在虚拟机或者路径音量级加密的方法,这就意味着整个硬盘即使它实际上真被偷,也不会对黑客来说也并有无用处。
虽然这是一个非常有用的功能,但是当黑客合法的进入数据库所在的虚拟机时,这种级别的加密仍然不够有用。所以另外的,进一步提供了用户加密的数据库级别的加密,例如只有能获得读允许操作的用户才能浏览这个数据库的数据,将提高安全级别。
在名为我早期的文章《在公有云上静静的保护数据》的文章中,我已经对比了中型商品中间件和RDBMS(关系型数据库)在保护数据方面的选择。,很明显这两种方法的结合会使多用户数据库的有很高的安全性更高。
3.暴露太多元数据
有多少次你会有一个数据库表存储信用卡信息,并且把它命名为‘信用卡’或者在信用卡密码栏在一个用户数据库里被设为PIN或者Password?虽然在过去,数据库设计的最好做法是提示正确的栏目名称、和像数据库级别的评论的元数据的使用,但是他们对于当今世界中的敏感数据也可能有害处。
通常建议避免不要把太多的元数据放在敏感栏,并且保持使它们只作为支持主要文件的一部分,而不是全部。这里没有规则说要把信用卡信息存储在一个名字为‘temp_t1’的表中而且你的应用图temp_t1确实是一个包含信用卡信息的表。
4.不要使用为数据库配备最好的安全功能中的最好的功能
今天,在没有综合数据库的情况下,大多数的软件供应商对其正在运营的产品对于使他们的产品在没有综合数据库的情况下运行,还都会倍感是面临有压力的。但这同样也这给了他们一个更广阔的市场营销能力。虽然这比商业前景重要,但因为这种限制,我们已经看到正在使用强大的RDBMS(关系型数据库)系统的产品仅作为一个纯粹的数据存储而不使用他们最好的安全功能。
在在我早期的文章《使用甲骨文虚拟私人有数据库来实施多用户》中,我已经详细的阐述了最好的功能——就像甲骨文提供的VPD功能——。如果提供了设置了很多安全功能,除非确保应用设置在了恰当的环境中,所以如果并且使用合理的使用的话,因为一些数据对于是用户是不可见的,除非应用设置恰当的环境。类似的,这些功能也可以把某些未直接访问的可以把一个确认的栏目在被直接咨询的时候,伪装变成不可见的。同样,像精细的数据审计提供了很多审计功能来对抗数据库安全攻击的功能。
同样,如果数据库级别安全被合理应用的话,我们可以利用使用角色任务、准许确认和特权的方式,。用这样一种方式——在存储进程方面,数据库连接只有得到‘执行’特权的指令,数据库才会执行连接,将并且不存在直接到基本表的‘读出’的入口。这些种设计模式进一步将对数据进行行之有效的保护了数据。
这同样也指出了一个事实——,产品供应商应该集中注意力到数据库独特的安全功能上,像甲骨文、SQL Server和DB2等数据库,除了设置应用级别安全权限,还应该在他们的设计中实施加入这个建议更多类似功能。值得一提的是,移植应用到多数据库的需求,不应该减少应用的安全需求。
5.不要掩盖伪装伪装数据
伪装数据是关于的意思是,把数据的真实从最近的形式中转化为一个不同的格式来存储。这和加密有些许的不同,因为这类数据这样的话数据通常情况下是可读的,但是如果你不知道解密伪装算法格式的话,这些被显示的数据是错误的,也是没有任何意义的。传统的伪装只有在当产品生产数据被输入到一个测试或者一个开发机器中时以及当产品生产数据被输入到海外开发地点时才会做。
然而,我们还没有见过太多使用伪装技术来保护安全信息的真正的生产产品数据的例子并不多见,还没有广泛应用于市场。
黄金法则是说,一个社会安全数字通常被定为作为一个有9个特征的单独的栏目来字符连续不间断的存储在栏目中,如果相同的数字被存储在3个不同的栏并存在数字翻转,然后应用程序颠倒他们并形成一个合理的社会安全数字,会怎么样呢将能够大大提高密码的安全指数?。这只是一个例子,相同的规则可以应用到信用卡或者密码或者pin码,所以只有应用程序知道如何将自身从一个伪装的敏感数据中解出其含义密成真实数据,而其他任何一个人都不知道。
综上所述,正如在文章开头所提示的那样,当新服务在短时间越来越多的被应用于公共网络时,必然将会出现越来越多的被安全攻击的例子。然而,企业不需要因为这些事而担心,因为他们并未使用云或者多用户模式。企业应采取最好、最适合企业本身的设计模式,文章上面也提到采用数据库分级别保护技术、分段数据库访问模式,并将数据库进行分段调用,再加上合理的确认程序,将彻底阻断未来的数据攻击。