公有云和私有云谁更安全?

一个接一个的调查表明,潜在用户采用公有云最大的顾虑是安全问题。例如,2010年4月的一项调查指出,45%的以上的受访者认为,云计算的风险要超过其能带来的利益。CA 和Ponemon Institute进行的一项调查研究,也发现了相似的担忧。但是他们也发现,尽管有安全的顾虑,他们依旧部署了云计算。然而,依旧有诸如此类的调查和研究结果不断发布,指出对于云安全的不放心继续存在。

当然,大多数对云计算的担心与公有云有关。全球IT从业者不断地对使用一个公有云服务提供商提出同样的问题。例如,这周我在台湾,在台湾云SIG会议上发表了演讲。并做了一篇关于台湾云计算SIG的演讲。250人参加了这个会议,正如预料的那样,人们向我提出的第一个问题就是,“公有云计算足够安全吗,我是否应该使用私有云以避免所有的安全问题?”所有地方的人们似乎都认为公有云服务提供商是不可信赖的。

然而,把云安全的讨论归结为“公有云不安全,私有云安全”的公式似乎过于简单化。简单地说,这个观点存在两个大谎言(或者说是两大主要的误解)。产生这两大误解的主要原因是,这种新的计算模式迫使安全产品和操作手法发生了巨大变化。

误解一:私有云是安全的

这个结论的依据仅仅是私有云的定义:私有云是在企业自己的数据中心边界范围内部署的。这个误解产生于这样一个事实:云计算包含与传统计算不同的两个关键区别:虚拟化和活力。

第一个区别是,云计算的技术基础平台是一个应用的管理程序。管理程序能够把计算(及其相关的安全威胁)与传统的安全工具隔离开,检查网络通讯中不适当的或者恶意的数据包。由于在同一台服务器中的虚拟机能够完全通过管理程序中的通讯进行沟通,数据包能够从一个虚拟机发送到另一个虚拟机,不必经过物理网络。一般安装的安全设备在物理网络检查通讯流量。

至关重要的是,这意味着如果一个虚拟机被攻破,它能够把危险的通讯发送到另一个虚拟机,机构的防护措施甚至都不会察觉。换句话说,一个不安全的应用程序能够造成对其它虚拟机的攻击,机构的安全措施对此无能为力。仅仅因为一个机构的应用程序位于私有云并不能保护这个应用程序不会出现安全问题。

当然,人们也许会指出,这个问题是与虚拟化一起出现的,没有涉及到云计算的任何方面。这个观察是正确的。云计算代表了虚拟化与自动化的结合。它是私有云出现的另一个安全缺陷的第二个因素。

云计算应用程序得益于自动化以实现灵活性和弹性,能够通过迅速迁移虚拟机和启动额外的虚拟机管理变化的工作量方式对不断变化的应用状况做出回应。这意味着新的实例在几分钟之内就可以上线,不用任何人工干预。这意味着任何必要的软件安装或者配置也必须实现自动化。这样,当新的实例加入现有的应用程序池的时候,它能够立即作为一个资源使用。

同样,它还意味着所有安全软件必须自动化地安装和配置,不能有人工干预。遗憾的是,许多机构依靠安全人员或者系统管理员人工安装和配置必要的安全组件,通常作为这台机器的其它软件组件安装和配置完毕之后的第二个步骤。

换句话说,许多机构在安全做法与云要求的现实方面是不匹配的。估计私有云本身是安全的这个观点是不正确的。在你的安全和基础设施做法与自动化的实例一致之前,你会有安全漏洞。

而且,使它们一致是非常重要的。否则,你可能出现这种情况:你的应用程序自动化超过了你的安全做法的应对能力。这不是一个好现象。毫无疑问,人们不喜欢解释为什么好像安全的私有云最终还是有安全漏洞,因为云计算的自动化特征还没有扩展到软件基础设施的所有方面。

因此,关于云计算的第一个大谎言的结果是私有云本身就是不安全的。

误解二:公有云的安全完全取决于云服务提供商

现实是,服务提供商领域的安全是提供商与用户共同承担的责任。服务提供商负责基础设施的安全以及应用程序与托管的环境之间的接口的安全;用户负责接入这个环境的接口的安全,更重要的是负责应用程序本身的内部安全。

没有正确地配置应用程序,如环境安全接口或者没有采取适当的应用程序级安全预防措施,会使用户产生一些问题。任何提供商也许都不会对这种问题承担责任。

让我提供一个例子。与我们合作的一家公司把自己核心的应用程序放在亚马逊Web服务中。遗憾的是,这家公司在使用亚马逊Web服务安全机制或者简单应用程序设计问题等方面没有采取适当的安全措施。

实际上,亚马逊提供一个虚拟机级别的防火墙(称作安全组)。人们配置这个防火墙以允许数据包访问具体的端口。与安全组有关的最佳做法是对它们分区,这样,就会为每一个虚拟化提供非常精细的访问端口。这将保证只有适用于那种类型机器的通讯能够访问一个实例。例如,一台Web服务器虚拟机经过配置允许端口80上的通讯访问这个实例,同时,数据库虚拟机经过配置允许端口80上的通讯访问这个实例。这就阻止了来自外部的利用web通讯对包含重要应用程序数据的数据库实例的攻击。

要建立一个安全的应用程序,人们必须正确地使用安全组。这个机构没有这样做。它对于访问所有实例的通讯都使用一个安全组。这意味着访问任何实例的任何类型的通讯都可以访问每一种类型的实例。这显然是糟糕地使用亚马逊Web服务安全机制的一个例子。

关于机构的应用程序本身,它采用了糟糕的安全做法。它没有在不同类型的机器之中对应用程序代码分区,它把所有的应用程序代码都装载到同一个实例中。这个实例接收其企业网站的通讯,并且还有也在它上面运行的包含专有算法的代码。

这种情况的关键事实是:如果这个机构以为所有的安全责任都由云服务提供商(在这个案例中是亚马逊Web服务),这将是一个严重的疏忽,因为它没有采取重要步骤解决安全问题,而这个安全问题是没有任何一个云服务提供商会承担责任的。这是共同承担责任的意义——双方必须建立自己控制的安全方面。没有这样做,意味着应用程序是不安全的。即使云服务提供商在自己控制的范围内所做的一切都是正确的,如果这个应用程序的拥有者没有正确地履行自己的责任,这个应用程序也将是不安全的。

我曾经会见过许多安全人员讨论有关公告云服务提供商的问题。他们拒绝认为自己的公司在这些环境中的责任,坚持把每一个安全话题转向担心云服务提供商的责任。

坦率地说,这使我感到他们是轻率的。因为这暗示他们拒绝认真地做一些必要的工作,以便创建一个基于公有云服务提供商的尽可能安全的应用程序。这个态度好像所有的安全责任都在云服务提供商身上,与安全人员无关。进一步扩展就是他的公司与在云服务提供商环境中运行的应用程序的任何安全事故无关。因此,这种情况——有关人士坚决支持私有云,声称私有云有优越的安全性——并不让人感到意外。

现实是,机构正在越来越多地在公有云服务提供商环境中部署应用程序。安全组织采取行动,保证自己的机构采取的所有步骤尽可能安全地执行应用程序是非常重要的。这意味着机构本身需要在这方面采取些什么步骤。

因此,安全是云计算的第三条轨道。安全一直被说成是私有云固有的好处和公有云计算的基本缺陷。实际上,事实比这些情况暗示的还要模糊不清。断言公有云环境有安全缺陷,不认真考虑如何缓解这些不安全因素,似乎是不负责任的。这个证据表明这种观点认为研究缓解安全问题的技术是没有必要。

一个管理不善和配置糟糕的私有云应用程序是非常容易受到攻击的。一个管理妥当、配置合格的公有云应用程序能够达到很好的安全性。

在这两个环境中,更有建设性的做法是就以下问题进行咨询:必须采取什么行动才能实现在时间、预算和容许风险的条件下,尽可能保证应用程序安全的目标。考虑到一个具体环境和应用,安全从来不是一个或黑或白的简单问题,而是如何尽可能地照亮一个阴影的问题。不承认这个问题会破坏这个话题的讨论,影响如何最好地保证一个机构的基础设施以及尽可能地高效率和节省成本等问题。

相关推荐