您的位置: 网界网 > 行云之路 > 正文

如何安全地开发云应用

2013年07月10日 17:49:43 | 作者:佚名 | 来源:51CTO | 查看本文手机版

摘要:随着越来越的企业寻找着可部署在云厂商环境中的应用程序,业界对于健全的安全措施与技术的需求也变得至关重要起来。

标签
安全
云厂商
云应用

随着越来越的企业寻找着可部署在云厂商环境中的应用程序,业界对于健全的安全措施与技术的需求也变得至关重要起来。那么,应当如何开发云计算[注]环境中的应用程序以便于实现安全性的最大化呢?这些云应用是否有别于传统的内部应用程序呢?在开发周期和质保(QA)过程中,需要有什么样的变化呢?在把应用程序迁往公有云[注]环境前,就必须解决所有上述这些问题。

在本文中,我们会提供指导,介绍如何特别地为更易于受到当今最常见攻击的云开发安全的应用。我们还将讨论一些需要落实到位的控制措施以便于在应用开发和部署之后还能确保这些云应用的安全性。

如何安全地开发云应用

在企业一头扎进云应用开发过程之前,企业的安全团队就应当鼓励他们的开发人员摸索安全开发平台、编程安全产品以及由云厂商所提供的相关工具。采用代码安全措施和安全开发措施的平台即服务[注](PaaS[注])供应商的典型代表之一就是Salesforce.com的Force.com,他们在维基上有专门的一个页面介绍开发人员安全与编程最佳实践。Force.com的维基页面对设计、开发、测试以及发布各个阶段的安全问题分别进行了全面的概述,这基本上就是一个相当标准的软件开发生命周期(SDLC)了。Force.com提供了一些最佳实践的文章,一个可以帮助指导安全决策的自评估工具以及专供SDLC各个阶段使用的特定工具。同样,微软公司也提供了一些适合开发人员使用的资源,其中包括该公司的“云计算基础”系列视频。

如何基于网络应用经验开发云应用

虽然有了这些可用的资源,但是目前还没有任何一家云厂商能够提供所有的资源和其他的程序组件,以便于满足在公有云和混合云[注]环境中确保安全应用程序健全开发的需求。成功的安全云应用开发要求我们能够根据云应用的风险特点采取有针对性的措施。安全开发的责任人应当把云应用视为比标准内部应用程序更具开放性的开发对象。这是为什么呢?首先,云应用通常都存在于一个独立于企业核心IT设备以外的环境中被托管和维护,因此与传统的内部应用程序相比,企业对云应用的控制权限更少。其次,大多数云应用都是基于网络的,这就意味着很可能需要面对各种各样标准尚未流行的网络应用程序的安全威胁,其中包括了跨网站的脚本程序、SQL注入以及目录遍历等。

一个信息安全团队应当建议其开发人员认真考虑开放式网络应用程序安全项目(OWASP)提出的十大网络应用程序攻击,然后在发布应用程序并部署至云计算环境前开发和集成针对这些攻击的缓解措施。很多网络应用程序受到攻击的主要原因就在于缺乏对输入的过滤,所以开发人员应当严格定义应用程序可接受的数据类型、长度和格式。开发人员还应当小心谨慎,尽可能地避免在他们的云应用中暴露应用程序编程接口(API)。一直以来(+本站微信networkworldweixin),API滥用被云计算安全联盟列为云计算的主要威胁之一。

云应用安全性意味着认证和加密

鉴于云应用游离于企业网络和企业监控的范围之外,要实现他们的认证和授权就必须施以更高强度的控制。开发人员应当确保认证页面或接口能够完全驾驭所有的应用程序内容和功能。账户劫持则是另一个常见的云计算安全问题,所以开发人员可能需要实施一种比内部应用程序更严格的身份认证策略,他们应尽可能地充分利用多元认证方法、强大的密码复杂性和长度策略。鉴于云应用被托管在多租户环境中,使用文件和应用程序级加密技术可能是非常适合的。虽然恶意合作租户妥协方案的可能性是难以预料的,但是使用加密技术和认真审查库及其他第三方代码组件是可以遵循的稳健做法。

一个企业的现行SDLC也应适用于云应用的开发和发布。在正式发布至云计算平台前,应考虑强制性地仔细测试代码和执行QA流程。由于考虑到云计算资源固有的可伸缩性,应执行可用性测试、性能测试以及一定程度的压力测试。

安全开发需要一定的时间

一般情况下,随着企业越来越迅速地实施云计算,目前业界已出现了一个快速开发程序(如Agile)的发展趋势。除非企业能够在开发项目的每个阶段都能够投入必要的时间和资源以确保代码的安全性,否则这些希望实现他们云应用安全性的企业就应当在交付这样的应用程序时特别地审慎。显而易见,当开发安全云应用时,有大量的问题需要予以关注和解决,所以加快这一过程的后果只能是增加出现有问题应用程序的风险而已。

参考资料

1.云计算:(Cloud Computing)描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。云计算是继1980年代大型计算机到...详情>>

2.公有云:(Public Cloud)是第三方提供一般公众或大型产业集体使用的云端基础设施,拥有它的组织出售云端服务,系统服务提供者借由租借方式提供客户有能力部署及使用云端服务。它能...详情>>

3.PaaS:平台即服务(Platform as a Service,简称)是一种云计算服务,提供运算平台与解决方案堆栈即服务。在云计算的典型层级中,平台即服务层介于软件即服务与基础设施即服务之间...详情>>

4.混合云:(Hybrid cloud)由两个或更多云端系统组成云端基础设施,这些云端系统包含了私有云、社群云、公用云等。这些系统保有独立性,但是借由标准化或封闭式专属技术相互结合,确...详情>>

[责任编辑:行云之路 yu_xiang@cnw.com.cn]