Lucian Constantin
和许多大型企业一样,金融服务巨头Visa也采用了容器化技术,该技术使得公司能够从传统的单体应用程序迁移到基于微服务的应用程序架构,从而更易于在云基础设施上大规模维护、更新和部署。尽管如此,但是将应用程序变成微服务也面临一个挑战,即要确保容器托管的各个部分得到了恰当的监控并保护其免受攻击。
Visa的安全团队没有部署商业解决方案,也没有针对自己的环境调整资源,而是回到了基础,创建了自己的连续监控解决方案。该解决方案可以处理安全策略的实施、事件检测和补救。因为卓越的安全性,这一项目帮助公司赢得了CSO50奖项。Visa的解决方案被称为MASHUP(基于微服务的自适应安全性强化和使用平台),其主要基于开源工具和库构建,并充分利用了容器编排平台上现有的原生功能,例如cgroups、文件系统访问控制和SELinux策略。
Visa没有采用老牌供应商的商业解决方案而选择自己建立安全平台是多种因素共同作用的结果。
首先,许多提供针对基于容器的基础设施和容器化应用程序的安全解决方案的供应商都是新兴公司,因此这些产品可能还未达到大型企业所期望的成熟度。
其他产品可能包含了对容器的监控和保护,但是这一功能只是庞大功能集中的一部分,公司并不需要其他的功能。Visa不希望自己仅仅因为要使用其中10%的功能就掏钱买下整个应用。
Visa在做出自建还是购买决定时的另一个重要因素是开发的灵活性和敏捷性。对平台的完全控制意味着Visa可以根据内部团队的需求快速部署新功能,也可以根据管理层定下来的新优先等级和策略更改产品路线图。与此同时,是否能够快速修复已发现的错误也是一个重要考虑因素。
此外,某些可用的商业产品在公司的特定环境中会缺失某些功能,而缺失的这部分功能可能会导致威胁无法得到缓解。如果公司需要这些功能,那就只能等待供应商重新将这些功能添加回来。
Visa负责技术和运营的首席信息安全官Sunil Seshadri称:“Visa之所决定自己构建是因为我们拥有丰富的内部专业知识,并且了解自己需要解决的问题。此外,我们发现市场上的现有解决方案无法完全满足我们的需求。因此,我们决心根据自己的使用情况和威胁模型自己动手构建产品。”
最后,通过构建自己的解决方案,Visa的運营、安全和开发团队可以紧密合作,相互支持。随着DevSecOps的兴起,这种做法在近年来变得越来越重要。
Visa在CSO50奖项申报中称:“我们在设计时就考虑到了安全控制,而不是在所有的工作都完成后再考虑安全控制的问题,这样可以降低因未能缓解在用系统中的威胁而可能产生的未来成本。Visa的容器安全产品(MASHUP)可帮助Visa在构建、部署和运行时安全状态下提供关键的容器和Kubernetes安全性,同时保护了它们在Visa私有云中运行的关键应用程序堆栈。”
该公司在开始时先是依赖主机操作系统(例如Linux)的原生功能,然后再逐步添加功能。最后,该产品具备了平台独立性,可轻松地与任何主机操作系统(OS)或容器编排器一起使用。
MASHUP可在内核、SELinux、运行时和容器应用程序层级执行访问控制和监视,并能够区分和关联主机层级和容器层级的事件与活动。它们还可以强制执行默认的安全配置,以防止攻击者可以利用的漏洞。这种“左移”验证意味着只有经过审核和安全的配置才能进入生产环境。
大规模开发的重点是构建一个机器学习引擎。通过查找大量的工作负载自动生成的概要文件之间的差异,该引擎可执行连续的点异常检测。机器学习引擎使用的是TensorFlow等开源库。如果检测到事件,MASHUP会通过应用由Visa的安全团队创建的自动剧本进行响应,并纠正出现的问题。据Visa称,他们的事件响应时间已经由几天缩短到了几分钟。
Seshadri说:“该系统的开发花费了两年多的时间。随着时间的推移,我们还不断对其进行了迭代。好的消息是K8s(Kubernetes)技术正日趋成熟和迭代速度不断加快。容器技术也是如此。利于新功能的实现和新威胁被发现,这使得我们能够持续改进我们的产品。”
该系统可轻松将新节点和容器添加到集群中,并自动进行扩展。MASHUP在后台运行,被监视的应用程序完全透明。这意味着应用程序运行时没有钩子,也不需要更改应用程序代码。
MASHUP服务器和代理都被打包为容器镜像,以便在不停机的情况下进行滚动升级。Visa自己开发的解决方案提供了许多的安全功能,要想实现相同的功能集,如果采用商用解决方案的话可能要运行多个商用解决方案。相比之下,Visa自建的解决方案对资源的消耗却很小,并且是可以接受的。
由于系统现已集成到持续集成和持续交付(CI/CD)管道中,因此安全控制可以得到实时验证,同时漏洞扫描已从每周或每月定期监控提升为持续监控。
在项目开发的头一年,Visa就已将MASHUP整合到了一半的容器部署当中。第二年其部署率就增长到了70%,预计到第二年年底将实现全覆盖。该公司在CSO50项目申报报告中称:“从没有MASHUP到MASHUP的出现,对绝大多数与安全相关的事件和攻击的自动防御都取决于平均检测时间(大约几分钟)。”
Visa认为,与部署第三方供应商的商业解决方案相比,他们自己的解决方案可以节省大量成本。节省的资金主要包括与部署供应商解决方案有关的基础设施、人工、定期性和年度性维护费用、聘用或培训操作该供应商解决方案的人员、产品许可证。这些费用可通过使用开源技术进行抵消。
其他企业也可以这样做吗?如果他们有足够的能力去实施这样的项目,并且对要保护的环境和数据有着深刻的了解,那么他们应该能够做到。这一切都要始于有一个出色的系统性威胁模型。
Seshadri说:“尽管许多企业在威胁状况和攻击面方面存在相似之处,但是他们之间仍然存在差异,并且这些差异很重要。企业应考虑的因素包括:对是自建还是购买的态度、工程人才、卓越的运营和工程管理、迭代的灵活性、在自建不成功的情况下是否能够重新选择商业解决方案、资本、劳动力,以及项目不成功的后果。”
在安全领域,有一种说法是永远不要发明自己的加密算法。这是因为在整个世界范围内,精通加密算法的密码专家和密码分析师相对较少,并且他们的工作受到了严格审查。在加密算法发明出来之后,如果要被推广使用还必须要经过同行评审。如果将相同的思维方式引申到安全系统当中,那么我们会得这出样的一个观点,那就是由专家创建的系统总是比自己构建的系统要更好。
在过去的五年当中,得益于机器学习的进步,以及免费资源和经过同行评审的开源代码库获得了更为广泛的可能性,用户可以利用这些技术改变一些现状。在幕后,许多商业产品也在使用相同的开源工具和原生功能来捕获和分析数据,并以此为基础构建统计模型。如今,这些模型已经在标准库中得到了很好的定义。只要公司能够避开在所有事件中需要注意的盲点,了解自己的数据和面临的威胁,那么他们就可以创建基于规则的异常检测引擎,并讓其适应自己的环境。
Seshadri警告说:“开源代码库可帮助企业迅速发展起来,但是它们并不会让建立成功的异常检测模型所需的其他需求消失掉。例如,所有的智能系统都需要数据、可处理海量数据的计算平台,包括机器学习库在内能够利用参数或训练有素的模型的软件堆栈、可近实时响应和处理威胁的基础设施,以及能够执行所有这一切的人员。”
目前Visa也正在评估一些可为其在用工具做出贡献的方式,以及让开发工作回流至社区的流程。
Lucian Constantin为美国CSO网站的资深作家,长期专注于信息安全、隐私和数据保护等主题。
原文网址
https://www.csoonline.com/article/3529974/how-visa-built-its-own-container-security-solution.html