构建合规的 Web 应用程序

平衡资源以保护不同类型数据的安全

大多数组织中只有大约 25% 的数据属于敏感数据,这引发一个问题:您是否应该将云应用程序设计为使用全部的可用安全资源来保护所有的数据类型?这种方式十分消耗资源;但您还可以采用另一种方法。在本文中,作者将为企业中的每种数据创建三个分类,当您在设计将使用这些数据的应用程序时,可以利用这些分类判断如何应用安全性。这被称为 Regulatory Compliant Cloud Computing (RC3)。

Arshad Noor, CTO, StrongAuth Inc.

Arshad Noor 是 StrongAuth 公司的 CTO,该公司位于美国硅谷,过去十年间一直从事企业密匙管理解决方案。Arshad Noor 拥有 25 年的 IT 从业经验,其中超过 12 年的时间里都在部署密匙管理基础架构,用这些基础架构来保护全球范围内任务关键型环境中的敏感数据。



2012 年 4 月 16 日

作为 IT 系统的另一种部署策略,云计算的出现带来了许多机遇,同时也为传统的数据安全性带来了挑战。数据安全法规正在不断完善之中,这令信息技术专业人士感到困惑:如何在利用云计算的同时实现法规遵从性,从而保护敏感信息。(例如,在 2007 和 2009 年分别有 9400 万和 1.3 亿张信用卡的资料被盗,TJX 和 Heartland Payment Systems 为此支付了 2.20 亿美元的罚金。这是迄今为止公开的最大规模的计算机系统敏感数据泄漏事件)。

解决方法有许多种,主要的两种是:

  • 根本不使用云。
  • 完全采用云计算。

依我看来,最佳的方式应该介于两者之间:在受控区域内保护和管理敏感数据,而在云中保存非敏感数据。这将允许公司满足数据安全法规,同时最大程度地利用公共云或私有云。

在本文中,我将描述一种特定类型的 Web 应用程序架构如何使用云计算优化 IT 投资,同时能够遵从数据安全法规。

传统的 Web 应用程序架构

从理论上讲,Web 应用程序非常简单。浏览器(代表 “客户端-服务器” 连接中的客户端)显示表单并向用户请求数据。服务器由一个软件程序表示,在一个 Web 应用服务器上执行。用户提交表单后,服务器程序会接收并处理信息,然后根据结果返回一个响应。这种交互如图 1 所示。

图 1. 标准的 Web 应用程序架构
标准的 Web 应用程序架构

根据应用程序所执行的任务,模型可以变得更加复杂,但是它们都有一个共同的特性:Web 表单必须识别服务器的统一资源定位符 (URL),这样,在用户提交表单以进行处理的时候,就可以让浏览器知道应该往哪儿发送表单数据。

对于大部分应用程序,用户通常在整个交易期间与同一个服务器交互。然而,由于存在众多因素,对于交易的某些部分,可能会将浏览器重定向到不同的服务器,以及不同的 URL。当然,用户并不知道发生了重定向,因此他们感觉到交易非常顺利。更常见的情况是,重定向会朝向同一个域,即使是重定向到不同的服务器。

在一些电子商务应用程序中,可能会将浏览器重定向到支付处理器站点,在该站点将执行支付交易并重定向回原始站点来完成交易。该电子商务站点的优势是他们为交易的 “支付-处理” 部分构建和维护基础架构。这种重定向如图 2 所示。

图 2. 重定向到支付处理器
重定向到支付处理器

当前 IT 投资模式的缺点

当前的 IT 投资模式有许多缺点。以一个典型的电子商务应用程序为例,在当前的 IT 投资模式下,一家公司必须负责以下内容:

  1. 它必须针对应用程序的以下所有功能采购物理资源(计算、存储和网络):
    • 客户注册
    • 产品管理
    • 库存
    • 购买交易
    • 支付处理
    • 履行交易
    除此之外还有其他许多任务。这通常会在几年之后导致产生额外的负担,即随着当前的基础架构逐渐老化,无法满足理想的性能需求,可能需要从现有的基础架构过渡到一个新的基础架构。
  2. 它还必须确保计算基础架构的冗余性,从而确保业务能够持续运营,这通常会导致投资翻倍。
  3. 它还必须为整个基础架构提供保护。由于大部分站点并不区分敏感数据和非敏感数据,安全框架通常会应用于基础架构和数据的所有部分。这意味着存在资源分配不当的情况,因为非敏感信息不需要具备与敏感信息相同程度的保护。(在过去几年里,由于 PCI-DSS [Payment Card Industry Data Security Standard] 的原因,站点会对 “PCI 区” 和 “非 PCI 区”、“PCI 数据” 和 “非 PCI 数据” 进行区分。从安全的角度讲,PCI 区和数据通常要比非 PCI 部分获得更多的关注和投资。虽然这可以视为一种优化,由于非 PCI 区位于站点的网络边界内,公司仍然会花大笔资金保护数据,如果采用本文所述的架构设计应用程序,则会使这种情况有所改变)。

这种投资模式在过去 40 年中一直没有发生变化。虽然从大型机时代开始每笔投资的资本支出就呈现显著减少的趋势,但是,尽管存在商业服务器和开源软件,需要为数十万用户提供服务的应用程序仍然需要可观的资本支出。

云的出现改变了投资模式

云计算技术的出现(特别是公共云)极大地改变了 IT 投资的模式。有了云之后,不再需要在前期进行大额的高风险投资,并且这些投资不会随时间而贬值。由于缩减了开支,公司可以只构建他们所需的 IT 服务,并根据使用付费。这种变化带来了巨大的经济效益,新的公司只需更少的预算即可进入市场。

与这种变化同等重要的是交付并管理 IT 服务,防止将敏感数据的工作外包出去。虽然可以通过签约方式委托给第三方,但是数据所有者仍然需要确保对安全法规的遵从性。

因此,我认为 Web 应用程序的架构师和设计者将发现本文所述的模型会帮助他们满足法律义务,同时能够充分地利用云计算的优势。


实现合规的云计算

业务交易通常包含敏感数据和非敏感数据。至于哪些数据属于敏感数据以及非敏感数据与敏感数据的比例,则取决于业务及交易类型。

但是,假设在正常的分布条件下,对于大多数业务,非敏感数据和敏感数据的比例大约为 4:1。因此,在一个安全的范围内计算、存储和管理敏感数据,同时在公共云中计算、存储和管理非敏感数据,这样做可以明显提高 IT 投资效率。

我将这种架构称之为 Regulatory Compliant Cloud Computing (RC3):在这种计算模型中,业务交易将涉及受控制区和公共云。敏感数据将在企业(或受委托的外包公司)安全范围以内的受控区内进行加密、标记和管理,而所有非敏感数据将驻留在公共云中。如图 3 所示。

图 3. Regulatory Compliant Cloud Computing 架构模型
Regulatory Compliant Cloud Computing 架构模型

接下来,我们将了解 RC3 架构中的数据分类,然后了解各个行业场景中的数据交易在 RC3 结构中的工作方式。

RC3 的数据分类

构建 RC3 应用程序的先决条件是将数据分为三个类别。这样做十分有必要,因为这样做可以将应用程序设计为分别处理这三种数据;从而简化业务部门与开发并支持 IT 服务的技术人员之间的沟通。

让我们来了解一下 RC3 分类。

类别 1/C1:包含敏感数据和受控数据。如果将这类数据披露给公众,则会导致罚款、法律诉讼和名誉损失。类型 1 数据包括信用卡号、社会保障号码、银行账户号或其他此类数据。

类型 2/C2:由敏感但非受控数据组成。这些数据是非受控的,但是如果披露给公众将对公司产生不利影响,和/或导致被披露的实体信誉受损。类型 2 数据包括雇员薪酬;特定产品系列的销售数字;客户的姓名、性别和年龄等。

类型 3/C3:包含非敏感数据。换而言之,任何非 C1 或 C2 的数据。例如,产品描述、图片等。

需要注意的是数据分类不是一成不变的:当敏感数据在一个精心设计的加密和密匙管理 (EKM) 系统中被标记后,它实际上被呈现为非敏感数据。这种情况下,在进行加密和标记后,即使 C1/C2 数据,也会被划分为 C3 数据。

采用这些分类后,使用 RC3 结构的公司将能够确保:

  • 使用 C1 数据都将在一个安全的网络范围内的受控区中处理和存储。这些区域将证明它们符合相应的数据安全法规。C1 的数据标记(进行加密并用标记替换后的敏感数据)会保存到公共云中。
  • 所有 C2 数据都将在安全的区域(不一定是受控区)中处理。C2 的数据标记也可以保存在公共云中。
  • 所有 C3 数据都将在公共云中处理和保存。

应用程序必须编写为能够处理这种数据隔离;而 Web 应用程序架构(特别是将浏览器重定向到目标服务器的能力)正适合处理这种模型。

以下小节将介绍不同行业中的几个示例。不过,该模型可应用于任何具有类似挑战的行业。

电子商务 RC3 交易

以电子商务 RC3 交易为例(从较高的层面上讲),我已经使用 Java™ 应用程序模型描述了这种场景,但是您应当知道该模型并不只是针对 Java,可以轻松地应用于 .NET 框架,或使用任何脚本语言,如 PHP、Ruby 等。此外,虽然示例展示了 Amazon Web Services (AWS) 的应用,但是仅是展示而已;该模型可以轻松应用于任何公共云基础架构,如 Azure、vCloud、IBM® SmartCloud 等。

受控区包括一个公司隔离区 (DMZ) 和一个安全区 (SECZ)。Web 应用服务器位于 DMZ 区内,接收来自互联网用户的连接。它与 SECZ 中的数据库服务器和企业密匙管理基础架构 (EKMI) 进行通信。EKMI 负责对所有 C1 和 C2 数据进行加密、标记和管理密匙。EKMI 将实现满足数据安全法规所要求的所有控制。所有通信都基于 TLS/SSL。

公共云区 (PBZ) 包含一个 Web 应用服务器和一个数据存储。Web 应用服务器接收互联网用户的连接,以及公司 DMZ 中的 Web 应用服务器的 Web 服务请求。所有通信都基于 TLS/SSL。从公司 DMZ 发送到公共云的 Web 服务请求都会通过 SSL ClientAuth 提供保护,在端点之间相互认证。

这类交易遵循以下步骤:

  1. 用户在受控区中注册为客户并分配到一个惟一的 Customer ID (CID)(此为 C3 数据)。客户名联系信息被指定为 C2 数据,而客户的订单细节被指定为 C3 数据。对 C2 数据进行加密、标记并将它们存储到 EKMI 中。所有 C3 数据都会保存在 PBZ 中,并通过已经过客户端验证的 SSL 连接进行传递,同时传递的还有与会话相关的交易数据。参见 图 4 的步骤 1
    图 4. RC3 电子商务交易中的步骤
    RC3 电子商务交易中的步骤
  2. 此时,用户的浏览器将被重定向到 PBZ,在这里将完成大部分交易:
    1. 检查产品列表。
    2. 确定价格和供货情况。
    3. 向购物车添加选中的产品。
    4. 提供配送说明
    5. 其他任何与支付无关的数据。

    请求头部携带由 DMZ 中的 Web 应用服务器分配的会话标记;这允许将 PBZ 中的交易数据与受控区中的交易关联起来。参见 图 4 中的步骤 2

  3. 在准备付款时,用户的浏览器将重定向到公司 DMZ 服务器,用户将在其中提交信用卡以进行支付。确认交易后,会将敏感的 C1 数据加密、标记并保存到 EKMI 中。进行标记后,会通过客户端验证的 Web 服务请求将 C3 数据保存到 PBZ 中。参见 图 4 中的步骤 3

    以下是一些有关电子商务交易的安全事项:

    • 对数据安全法规的遵从性是通过将敏感和受控数据加密并保存到安全区的 EKMI 中来实现的。
    • PBZ 并不保存用户的任何机密信息。用户身份验证在受控区内进行,将为该用户分配一个有效的会话标记,将用户的浏览器重定向到 PBZ,以便进行进一步的处理。
    • DMZ 和 PBZ 之间的通信是单向的,是从 DMZ 到 PBZ。PBZ 永远不会与受控区内的服务器进行通信;如果应用程序进行了相应的设计,那么就不会出现这种情况。这将确保 PBZ 内的任何危害都不会影响到受控区。
    • 受控区内的服务器仅通过客户端认证的 SSL Web 服务与 PBZ 进行通信。这可以避免将任何认证凭证存储到 PBZ。(SSL 客户端认证只要求在目标机器上存储有效和可信的数字证书,以对客户端连接进行验证。然而,客户端必须向数字证书传递一个有效的私有密匙并加入 SSL 客户端认证协议)。

医疗 RC3 交易

本例(从较高层面上)类似于电子商务交易,惟一不同的是该交易进一步展示了如何将非结构化数据(如 X 光图片)的 BLOB(二进制大对象)保存到 PBZ 中并满足合规性。我们假设患者的基本信息已经在交易之前创建完毕。

这类交易将遵循下面的步骤。

  1. X 光实验室的技术员将对自身进行认证以访问医院的受控区的服务器并建立会话。如果需要创建新患者的数据,那么将在受控区完成,其中将分配一个患者 ID (PID)。患者统计数据中的某些部分被指定为 C1/C2 数据;因此,它们将由 EKMI 加密并标记。医院可以选择将标记后的 C1/C2 数据保存到受控区内,或通过安全的单向 Web 服务存储到 PBZ 中。参见图 5 的步骤 1。
    图 5. RC3 医疗交易中的步骤
    RC3 医疗交易中的步骤
  2. 该技术人员的浏览器会重定向到 PBZ,她会在其中提交交易的非敏感数据,如:
    • 患者看病的日期和时间。
    • 请求医生的标识及其开具的处方。
    • 涉及的技术人员和采取的治疗措施。
    • 任何其他非敏感数据。

    据此设计应用程序后,这部分交易将不需要传递任何 C1 或 C2 数据。参见 图 5 中的步骤 2

  3. 准备好提交 X 光照片和放射师的报告后,技术人员的浏览器会重定向到受控区。技术人员会上传 X 光照片和报告,这些内容将通过 Web 应用程序转换为 XML 文档。转换后的 XML 文档包含必须加密的 C1 数据。

    C1 数据将在 DMZ Web 应用服务器中接收并发送给一个加密引擎,后者将对较大的非结构化数据进行加密。将生成一个对称密匙并用于加密文档内容。对称密匙应交给 EKMI 保管,而加密的 X 光照片和报告将通过安全的 Web 服务请求存储到 PBZ 中。参见 图 5 的步骤 3

    所有适用于电子商务交易的安全事项均适用于医疗交易。惟一的区别是医疗交易中增加了非结构化数据,即 X 光照片,因此要求使用专门的引擎来处理大 BLOB 的加密和解密。

制造业 RC3 交易

该示例展示了一名工业环境中的工程师向生产线提交一份敏感文档(如材料单的设计图),以便进行相应的生产。

这类交易遵循下面的步骤。

  1. 工程师对受控区内的服务器进行认证并建立一个会话。随后将工程师重定向到 PBZ。一个 Web 服务请求安全地将与会话有关的信息从 SECZ 传递到 PBZ。

    在 PBZ 中,工程师将创建一个新的交易,该交易仅接受将 C3 数据输入云中。然后为交易分配了一个惟一的交易 ID,并在请求的响应标头中返回工程师的浏览器。

    由于交易是关于制造工厂生产一个新部件,交易的公开部分将接受 BOM 的非敏感组件。参见 图 6 的步骤 1

    图 6. RC3 制造交易中的步骤
    RC3 制造交易中的步骤
  2. 工程师的浏览器被重定向到 SECZ,并将在其中提交交易的敏感内容。这些信息包括:
    • 将要制造的对象的设计图。
    • BOM 的敏感内容。
    • 有关装配的特殊说明(如果有)。
    • 其他任何敏感数据。

    据此设计应用程序后,这部分交易会将必要的 C1 和 C2 数据传递到 SECZ 中,并对它们进行加密和标记。加密后的设计图将保存到 PBZ 中,因为它现在是非敏感的。参见 图 6 的步骤 2

    所有适用于前两个交易的安全事项也同样适用于本交易。


结束语

总而言之,如果使用适当的加密密匙管理,那么在使用公共云来计算和保存敏感数据的同时满足数据安全法规的要求是有可能的。实现这一目的的技术目前已经可用;剩下要做的就是对应用程序进行设计,以便利用这些功能 — 主要使用这些功能来设计云应用程序,使它们可以对应用程序所访问的不同类别的数据应用不同的安全资源级别。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, SOA and web services
ArticleID=810255
ArticleTitle=构建合规的 Web 应用程序
publish-date=04162012