在多租户环境中保护数据的基本安全工具之一就是加密。当你对云计算环境不具有完全控制权时,如果实施得当,云计算加密可以让你保护数据。这一点对于私有云计算和公共云计算都是极具价值的,尤其是在你与其他用户共享一个保存有不同敏感等级数据的存储库时。
但是云计算加密并不与你具有完全控制权的单租户环境中所使用的加密技术相同。如果实施失当,加密技术可能无法实现你所期望达到的功能和效果。而且,那些在传统基础设施中常见的错误也有随着云计算迁移而产生更大的负面影响。
任何加密系统都有三个主要的组成部分:数据、加密引擎以及密钥管理。如同使用笔记本电脑进行加密一样,所有这三个组成部分都在相同的位置中运行或存储。在我们的应用程序架构中,任何单一部分的损坏都有可能会导致整个系统的崩溃,因此我们往往会尽可能分离这三部分以便于减少这一可能性。现在,让我们来看看在一些常见的云计算安全架构中这三部分是如何分布的:
1. 当使用云计算进行数据存储时,通常会使用一个虚拟私有存储架构。在把数据发送至云计算之前对其进行加密处理,而当数据发送回来后对其进行解密。例如,使用一个云计算备份服务,在把数据存储在云计算中之前,该服务就在备份软件中使用一个本地密钥对数据在本地进行加密。由于是你自己在管理加密操作和密钥,因此以安全备份的方式保留密钥副本是其中的工具(这应当是你的备份解决方案中密钥管理部分的一个功能)。
2. 对于存储在IaaS应用程序中数据的基本加密操作,你可以在你的实例中使用卷标加密,并把数据保存在第二个加密卷标中。由于你的密钥和加密引擎都保存在你的实例中,因此这并不是最安全的一个方法,但是这个方法确实能够保护你的数据免受非法访问的入侵。例如,假定你已正确地创建了你的实例 ,因此云计算供应商的某人也就无法得到授权运行系统或应用程序(这是典型的默认设置),他们也就没有办法获取密钥进而访问加密卷标。(唯一的例外是,他们从内存中找出了密钥,对于大多数威胁模式,这都是极为罕见的)。
3. 对于更为先进的加密技术,你可以在实例中把密钥与加密引擎分离开来。在这个三层架构中,你有一个卷标用于存放加密数据,一个实例用于运行加密引擎,而第三个密钥管理服务器则可按需提供加密密钥。如果你希望密钥不在实例中,这个方法就能够满足你的要求,因为如果密钥在实例中,那么能够得到这个实例副本的攻击者人也就自然得到了密钥的副本。使用实例中的密钥就能够攻击相同的一个新实例。而外部密钥管理服务器只有在满足一组基于规则的标准时才会返回密钥,例如人工批准一个新的运行实例或在实例中运行的加密客户端中进行一致性检查。这样,内存中的实例就可以使用密钥直至实例关闭。通常这个方法只适用于特殊的云计算加密产品。
这里介绍的用例只是众多云计算加密中的三个,但是他们代表了三种分布加密引擎、密钥管理以及数据的不同方法。例如,在SaaS供应商企业网络和代理流量商业产品的虚拟私有存储中,加密诸如社会安全号码这样的敏感数据。
由于有如此多的不同云计算服务供应商、内部云计算配置以及SaaS、PaaS、IaaS模式,因此我们不可能在这里一一列举。. 但是只要你知道你是在防备谁,你的数据、加密引擎以及密钥在哪里,你就可以设计出非常安全的体系架构,甚至是在你控制之外的多租户环境也是如此。