本文详述了有效应用程序安全策略自动化的挑战,阐述了模型驱动安全方法给安全策略自动化带来的好处,然后展示了如何实现云应用程序安全策略自动化。安全性是采用云技术所必需的一个要素,缺乏安全性通常会阻碍云技术的采用。然而,随着安全策略和合规复杂性、IT 复杂性和 IT 敏捷性的增加,将安全策略转化为安全实现的任务变得更加耗时、重复、昂贵且容易出错,并且很容易增加最终用户组织的安全工作量。自动化可帮助最终用户组织(和云提供商)减少该工作量,并提高策略实施准确度。本文将重点介绍一个特别有趣的、富有挑战且经常被遗忘的话题:应用程序层的安全策略自动化。
云应用程序安全性自动化
应用程序安全策略自动化主要是一个自动化流程,将人类可理解的安全需求(比如企业安全策略、遵从性法规和最佳实践)转化为在应用程序层实现的对应的技术安全策略规则和配置。在整个循环最后,它还包含审计自动化;例如,收集应用程序层警报并将它们映射为人类可理解的安全性和合规需求,以便持续评估安全态势。
云应用程序安全策略剖析
应用程序安全策略通常对于互联、动态变化的应用程序格局来说尤其复杂,比如面向服务架构 (SOA)、云应用程序 mashup、其他 “即插即用” 的应用程序环境。出于各种业务原因,以及以最少的总体维护工作量支持这些原因的安全要求,客户采用了这样的应用程序环境。因此自动化非常关键。
安全自动化对于云计算尤其重要,因为云用户要求云提供商支持法规遵从策略管理,同时按照与云计算大致相同的度量方式(根据它削减其前期资本支出和其内部手工维护工作的程度)衡量优势。
总体而言,“应用程序层安全性” 远比本文介绍的策略自动化方面宽泛,还包括漏洞扫描、应用程序层防火墙、配置管理、警报监控和分析以及源代码分析等任务。与应用程序层安全策略密切相关的一个任务是身份识别和访问管理。尽管身份识别和访问管理常常被视为与用户身份管理(而非应用程序安全性)有更大的关系,但它们实际上与应用程序层安全性高度相关。这是因为,当用户访问应用程序并进行身份验证时,需要实施一个授权策略,这在很大程度上往往依赖于受访问的特定应用程序。
此时,难题出现了:这个授权策略来自何处?谁编写和维护该策略?如何实施该策略?如何审计该策略?这些问题在以下情况下也适用:使用应用程序安全策略自动化以及身份识别和访问管理,让策略管理更省时、不重复、不再昂贵且不易出错。
如今的云应用程序安全策略自动化部署
总体而言,安全策略自动化,特别是对于云技术来说,仍然处于相对较早的阶段。它主要侧重于将身份识别/身份验证作为一种服务(例如,Facebook 连接)提供。还有一些基于云的安全服务(反病毒、电子邮件扫描、入侵检测系统 (IDS),日志管理),其中一些服务与应用程序间接相关。
本文专注于将应用程序安全策略自动化作为一种服务提供。目前只有几个适用于早期采用者的部署:首先,ObjectSecurity 将其 OpenPMF 模型驱动的安全策略自动化产品与一个私有平台即服务 (PaaS) 云(带 Intalio BPMS 的 Intalio 云)相集成,为云 mashup 提供无缝的策略自动化。涉及 OpenPMF 的另一个早期部署适用于美国海军,在介于私有云和 SOA 之间的灰色区域中。它涉及到策略即服务,面向高保障环境中的虚拟化 IT 服务。两个案例都将在后面的 案例研究 一节加以讨论。
还有大量其他模型驱动的安全策略自动化部署,但不是针对云,且大部分没有涉及到策略即服务。
应用程序安全策略自动化的挑战
遗憾的是,在大多数情况下,安全策略自动化说起来容易,做起来难。本节概述应用程序安全策略自动化实现起来较难的原因。
策略变得更难以实现和自动化,因为它们对人们和组织来说更加有意义
如今的许多安全工具提供了一定程度的自动化(无需维护),但无法实现相关性、正确性和自动化之间的折衷:在某些情况下,自动化工具的构建以供应商知道最终用户组织想实现什么默认安全策略为前提。在其他情况下,构建产品的宗旨在于随时间启发式地学习策略。两种方法的缺点在于,它们可能会实施非计划中的、不相关或不完整的策略,即使安全机制自身能够发挥其作用。
这样的传统安全自动化往往更适用于更加通用的安全工具,这些工具不需要特定于组织的策略,且面向技术体系的底层级(例如,网络或操作系统层),比如反病毒、反恶意软件、预配置的网络入侵检测系统,以及通用的应用程序漏洞扫描。
当必须将组织、用户和应用程序行为考虑在内来实施和审计安全策略时,安全自动化变得更难以实现。例如,处理信用卡支付的一家组织会希望实施这样的策略,比如 “未解密的信用卡信息不得带离组织之外”,“必须删除不再使用的信用卡信息”。另一个示例是,一家医疗组织希望实施的策略包括,“医生和护士仅在有法用途需要时,才能访问其当前 患者的健康档案,而不创建报警审计日志”。这样复杂的、与上下文相关的策略取决于特定组织的安全策略、业务流程、应用程序和应用程序交互。通常实施这种复杂的、与上下文相关的策略的原因在于,最终用户组织必须满足行业特定规范(PCI 数据安全标准或 PCI DSS 和健康保险便携性与责任法案或 HIPAA)。
策略变得更难以实现和自动化,因为它们变得更多、更复杂、功能多样、粒度更细且与上下文相关
传统的 “授权管理” 如今被归类为身份识别和访问管理一部分,它说明了这些挑战:当系统和参与者越来越多,当互联应用程序动态演化(“敏捷性”),当策略变得丰富多样、细粒度和与上下文相关时,策略变得不可管理。有太多、太复杂的技术安全规则需要管理,因此授权策略可能变得不明确或不可管理,并且对所实施策略的信心可能被削弱。如前所述,需要回答的问题是:这个授权策略来自何处?谁编写和维护该策略?如何实施该策略?如何审计该策略?
策略自动化变得更难以实现,因为 IT 格局变得越来越敏捷和互联(特别对于云 mashup)
要支持敏捷应用程序环境(比如云和 SOA)背后的采用原理,授权管理本身至少需要是同等敏捷的,而且是自动化的、可管理的、细粒度的、与上下文相关的。遗憾的是,面对频繁而动态的系统变更,创建和维护一致且正确的技术安全策略是一大挑战。这是因为,动态变更(例如,云 mashup 的动态变更)会使实施的技术策略无效,而且安全策略对于互联、动态变化的应用程序格局来说尤为复杂,比如 SOA、云应用程序 mashup,以及其他 “即插即用” 应用程序环境。如果不考虑这些缺点,授权管理形成一个关键的技术构建块,可为所有受保护资源实施和审计应用程序授权策略。它是云应用程序安全性的一个重要部分,对于云 mashup 来说更是如此,因为不同的角色(用户或云应用程序)应当在特定情况下获得授权后,才能够根据安全策略调用彼此的服务。一个重要的授权管理标准是 OASIS 可扩展访问控制标记语言 (XACML)。
法规遵从性是与策略相关的一个要求,因此也需要得到尽可能多的自动化支持
企业云用户不可避免地会要求为其云托管应用程序和服务提供简单、低维护量(自动化)的合规支持。这是因为,许多云应用程序要处理监管信息(隐私、健康信息、支付信息),这些信息通常是跨组织边界且需要审计的。合规审计不能成为云用户的独有责任,因为用户对云体系的可见性有限(特别对于 PaaS 和软件即服务,以及基础架构即服务)。因此需要将法规遵从性(就像安全策略管理和事故监控)部分地内置于云平台上。
用户需要采用基于白名单的策略,因为黑名单不再够好
在此提醒,黑名单是指您向任何不在黑名单上的人提供访问。白名单是指您仅向白名单中的人提供访问。
模型驱动的安全组件
要实现自动化,一些 “算法” 需要能够理解安全策略要求和与策略相关的一切(用户、应用程序、应用程序互联和应用程序工作流),并自动生成匹配的技术安全策略实现。模型驱动安全方法将模型驱动的软件开发方法背后的推理应用于安全和合规性策略管理,从而推进了这一需要的安全策略自动化级别。