将安全开发流程扩展到云和大数据
英文原文: Extend your secure development process to the cloud and big data
简介: 云计算和大数据正在改变着企业。了解必须将这些新技术融入您的安全开发流程的原因,并了解什么是安全开发流程、云计算和大数据技术的组成部分,以及它们存在哪些应用程序安全风险和如何减轻这些风险。
2012 年有关应用程序安全状态的 Ponemon Institute 报告(参阅 参考资料)表明,“71%的开发人员认为安全性在软件开发生命周期中没有得到充分重视”。这种说法令人非常困惑,因为各个组织现在已经在他们的安全系统开发生命周期 (SDLC) 中引入了新技术。这些新技术(即云计算和大数据)将进一步增强组织的安全开发流程(如果组织有这样的流程)。
本文从应用程序安全性的角度概述了云计算和大数据、它们的缺陷和弱点,还介绍了如何使用一个安全的 SDLC 进程在这些平台上安全地开发应用程序。
安全开发入门
要将云和大数据引入安全的 SDLC 流程中,必须先将安全性引入到组织的 SDLC 中并始终遵循它。 SDLC 是一个开发流程,该流程侧重于开发优质软件的五个阶段:需求、设计、开发、测试和实现。组织必须在这一流程的每个阶段都引入安全性。无论是使用特定的过程模型(如 Microsoft® 的安全开发生命周期(SDL;参见 图 1)或 (ISC)²> 的最佳实践(参见 图 2)、利用 Open Web Application Security Project (OWASP) 的最佳实践,还是引入自定义框架来实现该操作,SDLC 现在都是开发团队的必要条件。
图 1. Microsoft 的 SDL 流程
图 2. (ISC)² 的安全编码最佳实践
云计算入门
除了了解什么是安全的 SDLC 流程之外,组织还需要了解什么是云计算,以及云计算如何帮助组织寻找规模效益,并让组织重新专注于组织的核心竞争力。如果您愿意的话,还可以使用云计算重塑旧的应用程序服务提供商 (ASP) 模式。然而,真正的云计算产品会在 ASP 模式方面有一些细微的差别,也就是说,在资源池、按需功能、多租户和快速弹性方面存在细微差别。这些特性意味着,在使用云计算的时候,您可以通过将固定的资本支出 (CapEx) 转换为可变的运营支出 (OpEx) 来获得规模效益。
美国国家标准与技术研究所 (NIST) 已经通过建立云服务模式和云部署模式进一步定义了什么是云计算。云服务模式是一些方法,组织可以通过这些方法根据需要使用云计算,这些模式包括基础架构即服务 (IaaS)、平台即服务 (PaaS) 或软件即服务 (SaaS)。请注意,云计算用户使用 IaaS 获得的灵活性最大,使用 SaaS 获得的灵活性最小。但是,IaaS 提供的灵活性向云计算用户提出了治理、监视和管理环境的要求。因此,对于 IaaS,用户需从操作系统层开始构建(虚拟)服务器。对于 PaaS,用户需构建数据库、应用程序、业务规则和加载数据。对于 SaaS,用户只需将数据加载到预先构建的应用程序中。
NIST 还定义了云部署模式,其中包含公共云、私有云、混合云和社区云(参见 图 3)。例如,Google Docs 就是公共云模式的一个示例,其中应用程序和数据存储在 Google 的数据中心的某些位置。在此模式中,用户实际上在 Google “高层” 公寓中拥有一个楼层。
图 3. NIST 云
大多数组织会采用私有云的方式在内部利用云计算。在自己的数据中心利用云的细微差别(例如,资源池、按需功能、多租户或快速弹性)进行信息处理的组织就是私有云的一个示例。请注意,您也可以在云服务提供商 (CSP) 的设施内拥有一个私有云。这方面的示例包括 Terremark 的客户,以及那些使用 Amazon Virtual Private Cloud (Amazon VPC) 作为他们的 Amazon Web Services™ (AWS) 服务线(参见 图 4)的客户。混合用户的示例是一家制药公司,该公司使用私有模式来存储它的研究和开发数据,将该数据安全地(通过安全套接字层或传输层安全性)发送到公共云以便进行计算,然后将该数据发送回私有云。实际上,混合模式充分利用了公共云和私有云的优势。社区云很大程度上利用了资源池。这方面的一个示例是一个学区中的多所学校,它们共享了服务器资源,以便进行信息处理。
图 4. Amazon VPC
除了云计算之外,大数据也是行业的一个新范例。Oracle 将大数据定义为聚合三个来源的数据:传统(结构化数据)、传感器数据(日志数据、元数据)以及社交数据(社交媒体)。大数据通常使用新的方式(如 NoSQL,Not only Structured Query Language)存储在非关系型的分布式数据库中。有四种类型的非关系型数据库管理系统(非 RDBMS):基于列的、键-值形式、图(Graph)和文件型。这些非 RDBMS 聚合源数据,分析程序(如 MapReduce)分析该信息。聚合并分析大数据之后,组织可以使用该信息进行市场研究、供应链研究、过程优化、安全事件分析或趋势分析。
大数据增值的方案包括提供市场研究数据以支持作出外包或内包、进行收购或兼并、进入新市场或离开市场的决定。被视为一种专供学术研究的技术之后,现在非 RDBMS 系统正在行业中逐步接近临界状态。领先的技术服务提供商(如 Twitter)开始使用它们,并且很多个人和公司也开始使用这些提供商的产品。由于这些平台的开放源代码的特性(会导致节约成本),非 RDBMS 正在成为使用 Web 2.0 技术的组织首选的数据库架构,因为组织无需在传统的关系型数据库软件许可或本地硬件方面进行投资。根据您的预算,我主张组织设置新的岗位来治理和管理大数据系统,而分析人员、编程人员、项目经理以及传统的 RDBMS 管理员都应该进行交叉培训。如何进行所有这些操作都基于组织的需求,但您会发现在这些已经利用大数据平台的组织(Yahoo!、Facebook 等)有一个特殊的关注点。如果您的组织决定将专用资源合并到大数据,那么请记住,使用这些系统来增加您的现有 RDBMS 投资以便存储和分析大数据,这一点非常重要。
企业将继续同时使用 RDBMS 和非 RDBMS 系统。尽管这两种系统有一些相似之处,但也应该注意它们的差别。例如,非 RDBMS 将数据可分布到多个计算机系统上,当数据跨越多个管辖范围或跨越多个管辖范围共享时,非 RDBMS 会影响组织遵守隐私权的状态。非 RDBMS 通过是一个应用程序编程接口 (API) 调用的,而不是像 RDBMS 系统一样通过数据库连接(例如,Open Database Connectivity、Java™ Database Connectivity)来创建、读取、更新和删除数据。非 RDBMS 与 RDBMS 在处理数据的方式上也有所不同。例如,非 RDBMS 中的表称为域或 命名空间(和在 Amazon DynamoDB 中一样,如 图 5 所示)。而且,非 RDBMS 数据定义语言或 元数据并不像在 RDBMS 中那样可以轻松查询。此外,大多数非 RDBMS 都不再使用 SQL 进行数据操作语言调用;很多都使用 NoSQL。最后,非 RDBMS 要求运行的 API 服务应该相对数据库服务器实例运行,这样通常会导致较低的 OpEx。
将它们整合在一起
通过运行一个 API 服务(如 Gemini Cloudian),非 RDBMS 用户可以节省 CapEx 和 OpEx,而且可以使用非 RDBMS 技术轻松构建应用程序。CSP(如 AWS)目前正依赖于这项功能。AWS 有一个称为 Amazon SimpleDB 的产品,各种创业公司(如 Flipboard、Kehalim、Livemocha 和 LOUD3R)都使用该产品快速向市场提供解决方案。非 RDBMS 用户使用第三方软件产品(例如,Cloudian)将其 NoSQL 数据库连接到 Web 应用程序,或者编写他们自己的软件。组织使用了非 RDBMS 来体验增强的可伸缩性、弹性(分片)、模块性、可移植性和互操作性,同时还将 NoSQL 平台与编程语言(如 Java 语言,参见 图 6)、Web 2.0 技术(如 Ruby on Rails,这是一种侧重于动态内容的 Web 2.0 编程语言)、增强的 Web 服务架构或面向服务的架构结合使用。
图 6. 在 Amazon DynamoDB 中使用 Java
提示和技巧
大数据解决方案通常会与 Web 开发项目以及 CSP 提供的非 RDBMS/NoSQL 解决方案结合使用,因此将组织的安全 SDLC 流程扩展到云或大数据环境的第一步自然就是将该流程部署到 Web 开发项目中。由于 Web 或瘦客户端应用程序具有特定的脆弱性,如跨站点脚本 (XSS) 或跨站点请求伪造 (XSRF),因此开发团队应该了解如何为其环境编写安全软件,这一点非常重要。这方面的示例包括提供相应的培训和培养意识,针对 OWASP Top Ten 中发现的漏洞进行静态和动态应用程序安全测试 (DAST),更新威胁模型分析任务和工具,将组织的开发和质量保证 (QA) 环境扩展到云中,以便测试这类环境,以及如何重组大数据系统(例如,非 RDBMS/NoSQL)的深入防御战略。
此处的重点是使用应用程序和中间件层来确保大数据(即非 RDBMS/NoSQL)系统的安全,因为这些后端解决方案利用了一个开放架构。要确保该架构的安全,组织必须在数据层之外提供其他的保护和控制,尤其当系统位于云中时。其他保护和控制的示例包括:
- 加密。数据在传输中,数据正被使用。
- 增强的身份和访问管理 (IAM) 解决方案。安全断言标记语言、表述性状态转移、双因素认证/一次性密码。
- 添加一个明确的隔离或职责分离。也就是说,清晰地描述谁可以读取和写入更改、谁可以拥有和读取数据。
- 逻辑访问控制。虚拟防火墙、Web 应用程序防火墙(如 Imperva)、XML 防火墙、通过使用数据库防火墙(DBF,如 Oracle DBF)进行的数据库活动监视。
- 启用增强的会计、审计和问责制实践。尤其值得一提是,将会使用安全信息和事件管理工具。
在这些保护和控制就位之后,必须测试它们的有效性。但是,由于 CSP 限制了用户扫描其云环境的能力,因此可用于云的 DAST 产品有诸多局限性。除此之外,大多数漏洞扫描程序尚未更新其产品,没有提供对大数据环境的扫描。但是,从云的角度来看,这个规则也有一些例外,即 AWS 与名为 Core 的公司合作。Core CloudInspect 允许扫描组织基于 IaaS 的 Amazon Elastic Compute Cloud 实例。
Microsoft® SQL Azure™ 基于 PaaS 的解决方案还允许使用 McAfee 的 Database Security Scanner 测试云用户的安全性。除了这些例外情况之外,其他需要注意的是,组织可以减少因为没有使用最新的漏洞扫描程序而导致的风险,同时通过实现经验证安全的编码约定(比如将隐私和安全性融入设计中,编写事先准备好的声明进行输入验证)将代码部署到云或大数据系统。除了旧的扫描解决方案之外,组织还面临着有关测试云和大数据代码的其他挑战:将安全的、适当的更改与配置管理过程相融合。
路障和地雷
很多组织可能发现,采用执行更改和配置管理请求的方式将其安全 SDLC 进程扩展到云和大数据方面有一些挑战。当利用云进行开发或 QA 工作时,如果在开发/QA环境内外检查代码,那么集成开发环境可能无法正常工作。因为缺乏通信,可能会导致需要进行额外的工作才能保持库中代码的一致性、保持代码最新而且没有缺陷。要减轻这种风险,组织需要通过单点登录将 IAM 平台扩展到它的开发环境。除了制定适当的变更和配置管理任务之外,组织还需要将威胁模型、攻击向量以及对第三方向量产品的测试融入其 SDLC 流程中。
在利用云或大数据时,组织必须将新的威胁模型、攻击向量以及对这些第三方产品和服务的测试整合到它的环境中。这方面的示例包括测试 CSP 的 PaaS 环境、测试基于应用程序的云或大数据环境,或者测试与第三方 Web 服务或 API 有关联的安全性。要融入的具体内容包括测试输入验证、内存溢出、加密密钥管理以及处理正常退出和不正常退出。
结束语
组织必须将一些特定操作融入其安全 SDLC 流程中,以这种方式缓解在企业中引入云或大数据所带来的风险。这些操作包括测试供应商软件和硬件产品的安全态势,更新更改和配置管理过程,了解现有安全评估工具的局限性,以及采用迭代方式将组织的安全 SDLC 流程扩展到 Web 开发项目中。这方面的知识再加上对云和大数据的组成的进一步了解,通过这些我们就可以了解云和大数据中发现的漏洞,并了解如何修复在云和大数据中发现的那些漏洞。根据 Ponemon 的研究,如果您的组织可以做到这一切,那么您将会成为精心挑选的少数组织之一。