使用虚拟环境
考虑使用加载有生产服务器备份的虚拟服务器来创建生产前环境。在诸如 Vmware 等虚拟化产品中拥有生产环境的精确副本可以简化服务器设置。如果特定的测试破坏了服务器,测试人员可以通过加载服务器的克隆副本来重新建立该服务器。
事故处理
在对外部世界实现 SOA 之前,应该决定您将如何处理安全漏洞。假设您某一天发现光标不受控制地移动,或者发现用户数据的打包文件被移动到 FTP 服务器。您是否会立即拔掉插头?是否会报警?是否会搭乘开往百慕大的第一个航班?
拥有确定和周密的计划会减少安全入侵所带来的一些恐慌。至少,安全漏洞响应计划应该包括联系人列表、初始响应团队和基本指示。联系人列表应该包括技术专家以及重要相关者,例如公司总裁。
基本指示告诉工作人员首先应该如何做,并确定用于保留证据的非常好的方法。这些指示还应该包括执行任务的正确顺序——例如,首先应该拔掉插头还是应该给首席信息官 (CIO) 打电话?
响应团队应该包括信息技术 (IT) 专家和重要的管理人员。管理人员可以是其他部门的联络点,用以解释系统停止的原因。他们还可以稳定形势,因为有关漏洞的消息可能会导致恐慌。例如,管理人员可以警告客户服务部门网站已关闭,以便他们知道预期会有更多的电话呼叫。管理人员还可以构造客户服务代理人用于应付客户的措辞,以防止惊吓着客户。
此外,还要考虑使用一个外部法律团队作为响应团队的一部分,以帮助确定赔偿金额。外部供应商将具有比在职员工“更冷静的头脑”,并且还可以引入执法级别的法律工具。
实现后的测试
完成生产前测试并将应用程序转移到生产服务器并不表示测试的结束。生产测试是对您的 SOA 的最终考验。请记住,将在其中执行测试的环境与生产环境不可避免地存在细微的差别:当您正在构建 SOA 时,当前环境是一个活动的有机体。诸如防火墙配置、服务器修补程序和反病毒更新等次要更改都会影响生产前的安全性。
要在将 SOA 转移到生产环境之前执行的最合适安全测试之一是渗透测试。渗透测试从外部考验 SOA 应用程序,以尝试破坏安全性。这些测试最适合留给认证正义黑客(Certified Ethical Hacker,CEH)去执行:他们拥有竭尽全力地潜入组织内部所需要的工具和知识。CEH 使用攻击方法来利用不当的操作系统修补程序安装或错误的应用程序代码。
渗透测试通常至少执行两次。第一轮测试查找安全错误,并向 SOA 团队报告。第二轮以及后续的测试将在已纠正第一轮测试中发现的缺陷之后执行。让 CEH 执行“盲”渗透测试可以揭示有关 SOA 的大量信息。在这样的测试期间,在 CEH 尝试攻击系统之前,应该为其提供有关基础设施的最少信息。通过这种方式,CEH 可以获取外部攻击者在尝试渗透环境之前需要了解的实际场景。人们以为内部人员的考虑已天衣无缝,但是这些测试可以带来一些令人惊讶的结果。
总结
在您可能希望匆忙实现新的 SOA 时,请不要在安全方面走任何捷径。通过依赖 SOA 的基本原理,您可以避免数据被泄露。即使在将 SOA 交付使用之后,仍要继续使用以下安全措施:
在 SOA 开发小组的基础上组建安全团队。
开发测试并提供预期结果。
在独立于生产的环境中测试改进功能。
建立并维护安全标准。
在推出 SOA 之前执行渗透测试,并在之后定期使用渗透测试。
参考资料
学习
您可以参阅本文在 develperWorks 全球网站上的 英文原文。
阅读整个 “SOA 安全性基础知识”系列,包括三个部分。
SOA 安全性基础知识,第 1 部分: 制定保护大型 SOA 应用程序的路线图,充分利用涵盖从 SOA 安全性团队构建到需求收集流程的各个方面的 10 步骤流程。
SOA 安全性基础知识,第 2 部分: 创建任何人都可以使用的高层次设计,讨论可帮助 SOA 安全团队开发成功的高层次设计的规则。
在 developerWorks 的 Architecture 架构专区中,获取用以提高您在体系结构方面的技能的各种资源。
浏览技术书店,以了解有关这些技术主题及其他技术主题的相关书籍。
获得产品和技术
下载 IBM 产品评估版,获得来自 DB2?、Lotus?、Rational?、Tivoli? 和 WebSphere 的应用程序开发工具和中间件产品。
讨论
参与论坛讨论。
访问 developerWorks Blog,从而加入到 developerWorks 社区中来。