Visa如何构建自己的集装箱安全解决方案

Visa如何构建自己的集装箱安全解决方案

与许多大型企业一样,金融服务业巨头Visa也采用了集装箱化技术,使企业能够从传统的单片应用程序转向基于微服务的应用程序架构,这些架构更易于在云基础设施上大规模维护、更新和部署。但将应用程序拆分为微服务也面临着一个挑战,那就是确保承载不同部分的容器受到适当的监控和保护,免受攻击。

Visa的安全团队没有部署商业解决方案的组合,也没有花费资源让这些解决方案在其环境中发挥作用,而是回到了基础,创建了自己的持续监控解决方案,处理安全策略执行、事件检测和补救,该项目为公司赢得了CSO50安全卓越奖。该解决方案称为MASHUP(基于微服务的自适应安全强化和使用平台),它利用了容器编排平台(如cgroups、文件系统访问控制和SELinux策略)上已有的本机功能,并且主要构建在开源工具和库之上。

有几个因素导致Visa创建了自己的安全平台,而不是采用老牌供应商的商业解决方案。

首先,许多为基于容器的基础设施和容器化应用程序提供安全解决方案的供应商都是初创企业,因此这些产品可能还没有达到大型组织所期望的成熟度标准。

其他产品可能包括对容器的监视和保护,这是一些组织不需要的更大功能集的一部分。Visa希望防止购买一款只使用10%功能的产品时出现的那种功能蠕变。

Visa的build vs.buy决策的另一个重要因素是开发灵活性和敏捷性。拥有对其平台的完全控制权意味着Visa可以快速实施内部团队要求的新功能,或者根据管理层规定的新优先级和策略更改产品路线图。快速修复已识别错误的能力也是一个因素。

此外,一些可用的商业产品缺少公司特定环境所需的功能,缺少这些功能将有可能使威胁无法缓解,或者要求公司等待供应商添加这些功能。

“Visa决定生产该产品是因为我们拥有丰富的内部专业知识,了解需要解决的问题,”Visa技术和运营首席信息官Sunil Seshadri通过电子邮件告诉CSO此外,我们发现市场上现有的解决方案并不能完全满足我们的需求。因此,我们根据我们的使用和威胁模型专门构建了产品。”

最后,通过构建自己的解决方案,Visa的运营、安全和开发团队能够更紧密地合作并相互支持。这是近年来随着DevSecOps的兴起而变得越来越重要的方向。

该公司在提交的CSO50奖项中说:“我们没有事后考虑安全控制,而是将此产品作为设计的一部分,从而降低了未来由于实时系统中未缓解的威胁而可能产生的成本。”Visa的容器安全产品(MASHUP)如今已帮助Visa在构建、部署和运行时安全的各个州提供关键容器和Kubernetes安全,同时保护其在Visa私有云中运行的关键应用程序堆栈。”

该公司起步很小,依赖于主机操作系统(如Linux)中的本机功能,然后一步一步地添加功能。最终,该产品在很大程度上独立于平台,可以轻松地适应任何主机操作系统(OS)或容器编排器。

MASHUP在内核、SELinux、运行时和容器应用程序级别执行访问控制实施和监视,并且可以区分和关联主机级别和容器级别的事件和活动。它还强制执行默认情况下安全的配置,以防止攻击者利用漏洞。这种左移验证意味着只有经过审查和安全的配置才能投入生产。

一个很大的开发重点是构建一个机器学习引擎,通过寻找与自动生成的配置文件的偏差来执行顺序和点异常检测,该配置文件用于生成数百万个事件的数千个工作负载。这是使用TensorFlow等开源库构建的。如果检测到事件,MASHUP将通过应用Visa安全团队创建的自动剧本来应对这种情况。据该公司称,这将事件响应时间从几天缩短到几分钟。

“开发这个系统花了两年多的时间,我们反复研究了一段时间。“最好的部分是K8s(Kubernetes)技术正在迅速成熟和迭代,”Seshadri说容器技术也是如此。这使我们能够随着新功能的实现和新威胁的发现而改进产品。”

当新的节点和容器被添加到集群中时,该系统被构建成可以轻松地自动伸缩的。MASHUP在后台工作,对被监视的应用程序完全透明。这意味着应用程序运行时中没有钩子,也不需要对应用程序代码进行更改。

MASHUP服务器和代理本身打包为容器映像,这允许滚动升级而不停机。Visa表示,这对系统资源消耗的影响很小(Visa拒绝提供具体的性能指标),考虑到系统提供的所有安全功能,这是可以接受的,而且可能比运行多个商业解决方案来覆盖同一个功能集要低得多。

由于系统现在已集成到持续集成和持续交付(CI/CD)管道中,因此安全控制将实时验证,漏洞扫描过程已从企业环境中典型的每周或每月计划转变为持续监控。

在项目开发的第一年,Visa已经将MASHUP插入了其一半的容器部署中,采用率增长到70%,预计到第二年年底将实现全覆盖。”该公司在提交的CSO50报告中说:“从缺少MASHUP作为安全控制到MASHUP的存在,大部分与安全相关的事件和攻击都是自动防御的,平均检测时间……平均控制时间(几分钟)。”。

该公司认为,与从第三方供应商实施商业解决方案相比,它节省了大量成本。节省了与部署供应商解决方案相关的基础设施和劳动力、固定和年度维护费用、雇用或培训人员来操作供应商解决方案以及产品许可证方面的费用,这些费用被使用开源技术所抵消。

其他公司也能这么做吗?如果他们有足够的工程能力来开展这样的项目,并且对他们想要保护的环境和数据有深入的了解,他们应该能够做到这一点。这一切都始于一个良好的系统性威胁模型。

Seshadri说:“虽然许多组织在威胁形势和攻击面方面有相似之处,但存在差异,而且意义重大。”组织应考虑的一些因素包括:组织对建造与购买的偏好、可用的工程人才、可用的运营和工程卓越性、随时间迭代的灵活性、在建造无法实现其目标的情况下有商业回退,以及资本、劳动力,如果项目不能成功,风险也会随之产生。”

在安全领域有一种说法,你永远不应该发明自己的加密算法。这是因为全世界有知识的密码学专家和密码分析员的数量相对较少,他们的工作在被接受或建议广泛使用之前,要经过严格审查和同行评审。如果我们将同样的思路应用于任何安全系统,那么支持的论点是,使用专家创建的系统总比构建自己的系统好。

然而,过去五年机器学习的进步,免费资源的广泛可用性以及允许用户利用这项技术的同行评审的开放源代码库正在开始改变这种状况。在幕后,许多商业产品使用相同的开源工具和本地功能来捕获和分析数据,并在此基础上构建了统计模型。如今,这些模型在标准库中定义得很好。只要公司能够捕获避免盲点所需的所有事件,并且非常了解他们的数据和威胁,他们就可以创建更好地适合其特定环境的基于规则的异常检测引擎。

Seshadri警告说:“开源库有助于组织快速起步,但不能消除构建成功的异常检测模型所需的其他需求。”例如,任何智能系统都需要数据、能够处理大量数据的计算平台、包括利用任何参数或经过训练的模型的机器学习库在内的软件堆栈、近乎实时地对威胁采取行动和作出反应的基础设施,以及执行所有这些任务的人员。”

Visa正在评估如何将其开发的一些工具和流程贡献给社区。

有关应用程序安全的详细信息: