本文介绍了如何特别地为更易于受到当今最常见攻击的云开发安全的应用。还将讨论一些需要落实到位的控制措施以便于在应用开发和部署之后还能确保这些云应用的安全性。
如何安全地开发云应用
在企业一头扎进云应用开发过程之前,企业的安全团队就应当鼓励他们的开发人员摸索安全开发平台、编程安全产品以及由云厂商所提供的相关工具。采用代码安全措施和安全开发措施的平台即服务(PaaS)供应商的典型代表之一就是Salesforce.com的Force.com,他们在维基上有专门的一个页面介绍开发人员安全与编程最佳实践。Force.com的维基页面对设计、开发、测试以及发布各个阶段的安全问题分别进行了全面的概述,这基本上就是一个相当标准的软件开发生命周期(SDLC)了。Force.com提供了一些最佳实践的文章,一个可以帮助指导安全决策的自评估工具以及专供SDLC各个阶段使用的特定工具。同样,微软公司也提供了一些适合开发人员使用的资源,其中包括该公司的“云计算基础”系列视频。
如何基于网络应用经验开发云应用
虽然有了这些可用的资源,但是目前还没有任何一家云厂商能够提供所有的资源和其他的程序组件,以便于满足在公有云和混合云环境中确保安全应用程序健全开发的需求。成功的安全云应用开发要求我们能够根据云应用的风险特点采取有针对性的措施。安全开发的责任人应当把云应用视为比标准内部应用程序更具开放性的开发对象。这是为什么呢?首先,云应用通常都存在于一个独立于企业核心IT设备以外的环境中被托管和维护,因此与传统的内部应用程序相比,企业对云应用的控制权限更少。其次,大多数云应用都是基于网络的,这就意味着很可能需要面对各种各样标准尚未流行的网络应用程序的安全威胁,其中包括了跨网站的脚本程序、SQL注入以及目录遍历等。
一个信息安全团队应当建议其开发人员认真考虑开放式网络应用程序安全项目(OWASP)提出的十大网络应用程序攻击,然后在发布应用程序并部署至云计算环境前开发和集成针对这些攻击的缓解措施。很多网络应用程序受到攻击的主要原因就在于缺乏对输入的过滤,所以开发人员应当严格定义应用程序可接受的数据类型、长度和格式。开发人员还应当小心谨慎,尽可能地避免在他们的云应用中暴露应用程序编程接口(API)。一直以来,API滥用被云计算安全联盟列为云计算的主要威胁之一。
云应用安全性意味着认证和加密
鉴于云应用游离于企业网络和企业监控的范围之外,要实现他们的认证和授权就必须施以更高强度的控制。开发人员应当确保认证页面或接口能够完全驾驭所有的应用程序内容和功能。账户劫持则是另一个常见的云计算安全问题,所以开发人员可能需要实施一种比内部应用程序更严格的身份认证策略,他们应尽可能地充分利用多元认证方法、强大的密码复杂性和长度策略。鉴于云应用被托管在多租户环境中,使用文件和应用程序级加密技术可能是非常适合的。虽然恶意合作租户妥协方案的可能性是难以预料的,但是使用加密技术和认真审查库及其他第三方代码组件是可以遵循的稳健做法。
一个企业的现行SDLC也应适用于云应用的开发和发布。在正式发布至云计算平台前,应考虑强制性地仔细测试代码和执行QA流程。由于考虑到云计算资源固有的可伸缩性,应执行可用性测试、性能测试以及一定程度的压力测试。
安全开发需要一定的时间
一般情况下,随着企业越来越迅速地实施云计算,目前业界已出现了一个快速开发程序(如Agile)的发展趋势。除非企业能够在开发项目的每个阶段都能够投入必要的时间和资源以确保代码的安全性,否则这些希望实现他们云应用安全性的企业就应当在交付这样的应用程序时特别地审慎。显而易见,当开发安全云应用时,有大量的问题需要予以关注和解决,所以加快这一过程的后果只能是增加出现有问题应用程序的风险而已。