我曾开玩笑说,各种越来越多的不同云计算应用就如同是在打造一只存储数据加密工程师的“金饭碗“。一直以来,加密就是一个重要的安全工具,但是在大多数情况下,我们还没有频繁地使用这一工具来保护存储数据。而正是由于云计算的出现以及众多公共数据泄漏事件的影响,这一情况已发生了改变。
目前,采用云计算加密的原因可能并不如你所认为的那样。最常见的想法是应该由你的云计算服务管理员来保护数据(这里主要是指公共云计算)。毫无疑问,对你的数据垂涎欲滴的云计算供应商是一个潜在的风险,但对大多数人来说,这可能只是一个小风险。这也带给我们一种错觉,即不需要对私有云计算数据进行加密。
实施云计算加密的动因
除了加密数据(无论是进还是出云计算)的常见原因,还有两个主要的原因:
1. 云计算是由API而不是物理访问来管理。因此,如果有人获得了对管理平台的管理级访问权,那么他们就可以很容易地复制和移动大量的数据,而这一点在传统基础设施中是根本无法实现的。所有所需的仅仅是一个并不强壮的管理系统以便于窃取你的整个基于云计算的数据中心。
2. 即便是私有云计算,它也是具有多租户特点的。加密技术可以让你的数据与其他用户(甚至是管理员)保持安全的距离。它允许你使用一个更加开放的共享基础设施,同时还能够保护你自己的数据,当然前提是你必须操作正确。
考虑到这些原因,那么就让我们来看看两种IaaS存储方法,以及应当如何对它们进行加密以实现IaaS安全性。
云计算加密:对象存储
首先是对象存储,例如Amazon S3 或 OpenStack Swift。对象存储是一个文件/对象库。可以把它想象成一个文件服务器或硬盘驱动器。虽然,你可以配置大部分的对象存储系统并对它们所存储的所有数据进行加密,但是这种方式的作用是片面的,它只能防止驱动器丢失,而不是保护你的文件免受外人的访问。
为了在一个共享库中保护你的文件,你需要使用一个我称之为“虚拟私有存储”的架构。就如同虚拟私有网络(VPN)允许我们加密私有数据并使用公共网络一样,虚拟私有存储允许我们在公共存储设备中保护私有数据。
其原理是相当简单的:在你把你的数据发送至云计算之前,对其进行加密。根据你的实际工作情况,这一步操作可以在你用于访问对象存储的代理/应用程序中自动执行。例如,我使用Dropbox (它在S3中存储文件),通过把敏感文件存放于存储在服务中的加密卷标来对它们进行保护。只有我自己有密钥,因此我的数据是安全的。
云计算加密:卷标存储
下面,让我们谈谈卷标存储,例如Amazon EBS 或 RackSpace RAID。当在云计算中运行长期计算实例时,你就会用到这种存储系统。它们模拟成一个普通的硬件卷标,然后我们使用类似的技术对其进行加密。
第一种方法就是加密与你的实例相关的卷标。你的实例并没有被加密(对于引导卷标来说,其情况更为复杂),但是你的敏感数据存储在与实例相关的加密卷标中。有很多工具支持这一功能,它们甚至不需要针对云计算做任何特殊的改动。为了实现进一步的安全性,你可以把你的密钥存储在你的实例之外(对不起,鉴于篇幅有限,这一问题我将在今后的文章中具体介绍)。
另一个方法是使用特殊的加密代理,它位于计算实例和存储卷标或用于文件服务器的第二实例之间。当你有一堆实例连接至相同的存储或需要模拟出比实例中由工具支持的存储更多的类型时,这种方式就有用武之地了。这些代理一般都是成熟的商品,基本上就是在你的云计算环境中运行的虚拟设备。
最后,对于私有云计算或混合云计算,你可以使用外部管理加密工具,它们有可能是物理硬件。此外,这些成熟商品对于利用现有的加密投资或更为复杂的部属都是有用的。
我并不是想要过分简化IaaS存储加密。我并没有用过多的笔墨来介绍很多的方法和用例,但是IaaS的安全基础可能并不如你想象的那样复杂。云计算安全联盟的培训包括了一个手把手的卷标加密操作,其费时只需10分钟。