由于云环境其灵活性、开放性、以及公众可用性这些特性,给应用安全的基本假设带来了很多挑战。这些假设中的一部分可以很好理解,而很多却不容易理解。从设计到运维再到最终退役,云计算如何对一个应用程序的生命周期安全产生影响。所有参与者有关,包括应用程序的设计人员、安全专业人员、运维人员以及技术管理者等,如何最好地降低云计算应用程序的风险并管理其保障措施。
在所有SaaS、PaaS、IaaS的所有层面,对于应用程序来说,云计算都是一个特别的挑战。基于云计算的应用软件需要经过类似于DMZ区部署的应用程序那样的严格设计。这包括了深入的前期分析,涵盖了传统的如何管理信息的机密性、完整性,以及可用性等方面。
在云环境下,应用程序将会对以下重大方面产生影响或被影响:
· 应用安全架构– 必须意识到这样一个事实,大多数应用程序会与其它多个不同的系统产生依赖关系。有了云计算,应用程序的依赖性可能非常动态,甚至每个依赖都代表一个独立的第三方服务提供商。云特性使配置管理和紧随的配置供应比传统的应用程序部署更为复杂。为了保证应用程序的安全,云环境推动了应用程序架构的变革。
· 软件开发生命周期(SDLC) – 云计算影响SDLC的各个方面,涵盖应用程序体系结构、设计、开发、质量保证、文档、部署、管理、维护和退役。
· 合规性 – 合规性明显会影响数据,而且也会影响应用程序(例如,监管要求如何实现程序中的一个特定加密函数)、平台(对操作系统的控制和设置的命令)和进程(如对安全事件的报告要求)。
· 工具和服务– 围绕着开发和维护运行应用程序需要的工具和服务,云计算对工具和服务带来了一系列的新挑战。这其中包括开发和测试工具、应用程序管理工具、对外服务的耦合、以及库和操作系统服务的依赖性,这些可能都源自云服务提供商。了解谁提供、谁拥有、谁运行的后果、并承担相关的责任非常重要。
· 脆弱性 – 这不仅包括很好文档化的和不停演化中的web应用脆弱性,还有那些在机器与机器之间的、面向服务架构(SOA)的应用程序的脆弱性,这些SOA应用正在不断地被部署进云中。
建议
• 软件开发生命周期(SDLC)的安全很重要,应该在高层次上解决基于云开发的三个主要的差异化:1)更新的威胁和信任模型;2)更新的、云环境下的应用评估工具;3)能够说明云应用安全体系架构变化的SDLC的过程和质量检查点。
• IaaS、PaaS和SaaS为软件开发生命周期创造了不同的信任边界,这些都必须在应用的开发、测试以及生产部署过程中得到证明。
• 对于IaaS,成功的关键因素是是否存在可信的虚拟机镜像(image)。最好的办法是能够提供符合你内部政策的虚拟机镜像。
• 虚拟机应该使用DMZ主机系统的加固方案的最佳实践。只开放支持应用“堆栈”所需的服务。
• 保护主机之间的通信安全是基本原则。不要做主机之间存在安全通道的假设,不管是在常用的数据中心或者在同一台硬件设备上。
• 管理并且保护的应用的证书和密钥至关重要。
• 应加倍小心的处理应用程序的日志和调试记录的文件,因为这些文件的位置可能偏远或不明,而且上面的信息可能很敏感。
• 在应用威胁模型中考虑外部管理和多租户场景。
• 对于比较复杂的应用程序,可能会采用企业服务总线(ESB),需要使用某个协议直接保护ESB,例如WS-Security协议。在PaaS环境下不具备隔离ESB的能力。
• 应采用度量方式评估应用程序安全计划的有效性。在直接的具体到应用的安全指标中,可用的包括漏洞分数和补丁覆盖范围等。这些指标会显示应用程序代码的质量。间接的数据处理指标,像加密数据的百分比,会从应用程序架构的角度指出是否在作出负责任的决定。
• 云服务提供商必须支持对他们云环境的应用程序进行WEB动态安全分析工具的使用。
• 应留心恶意行为者在出现一个新的云应用架构,能在监视下掩盖某些应用组件时会如何反应。黑客喜欢攻击能看到代码,包括但不限于在用户环境中运行的代码。他们很可能会攻击基础设施,并进行大面积的黑盒测试。
• 客户应该获得合同中规定的权限来执行远程漏洞评估,包括传统的(网络/主机)和应用程序漏洞评估。由于供应商的无法区分测试和实际攻击,也为了避免对其他客户产生潜在影响,许多云服务提供商限制漏洞评估。