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