理解和跟踪不断变化的k8s部署的影响

彼得博世
杰出的工程师
作为开发人员,我们并不总是完全意识到代码更改所规定的安全含义,无论这些更改是在CI、CD还是工件数据库中完成的。
预测变更的第三方库、安全上下文或RBAC权限、访问不同的网络来访问相同的资源,甚至以不同于以往的方式使用API所带来的影响总是具有挑战性的。
因此,立即了解影响并能够在不中断管道的情况下进行更改是一个重要的要求。本次会议将介绍应对这些日常变化的最佳实践,并将提出一套工具以统一解决这些问题。

视频记录

大家好,我是Peter Bosch。我是思科ET&A部门的杰出工程师,正在孵化的新兴技术。在接下来的半小时左右的时间里,我将分享一些关于应用安全的内容,思科在这个领域做了什么,为什么它很重要,并与你们分享为什么应用安全对我们所有人来说都是一个如此重要的领域。

首先说一下我们是谁,我们是新兴技术和孵化团队。我们在团队中做的事情是思科传统上不做的事情,是我们应该做的事情,也是我们认为未来技术会带给我们的事情。我们正在与企业战略团队和战略联盟团队一起做这件事。因此,在这三个群体之间,我们实际上涵盖了相当大的领域,关于未来空间,像我们这样的组织需要在那里,但也为了更大的生态系统。

我们所观察的事物都描绘在这张图上。因此,安全、云计算、人工智能、ml、未来工作是我们积极关注的领域。

未来的工作,我们有WebEx团队的WebEx解决方案,我们还能做什么?AI, ml,显然,我们需要它来理解那些不明显的关系。这是一种既定的和安全的,这就是我在这里谈论的,我们建立它的方式,在ET&I内部是我们有一个设计合作伙伴计划。所以在ET&I内部,我们不制造产品,我们制造我们所谓的最小可行hth华体会最新官方网站性产品,你可以从思科买到的东西,识别新的市场趋势的东西,建立新的解决方案来满足我们客户的业务需求,以确保你实际上建立了客户想要的东西,而不是说这将建成。你有兴趣吗?具体来说,在这个领域,我们看两个早期阶段的风险投资。

应用程序网络,我需要什么样的网络堆栈来粘合一个广泛分布的应用程序,在prem和非prem解决方案之间?还有应用程序安全性,这就是我在这里要讲的。作为设计合作伙伴的好处是,作为设计合作伙伴,你和我们一起工作,真正地确定流程,用户旅程,你想要做什么,什么样的功能需要添加到产品中,在我们的路线图上共同合作,也共同创新。

我们错过的东西。如果我们和你们一起做这件事你们能给我们更好的见解我们应该为我们的合作伙伴做什么。

说了这么多,让我们转向应用程序安全性。首先,让我们定义它是什么,为什么应用程序安全性很重要。我们思考这个问题的方式是它实际上可以分为两大类。

应用程序联网,从本质上保护人们,保护应用程序和数据保护那些在云中运行的东西。在左边,假设我们有一个虚构的公司叫Acme公司。

Acme, Inc是关于确保…Acme已经建立了他们的网络,所以所有属于Acme的应用程序都在prem上,周围有尖桩围栏,防火墙,id和IPS。

我们有VPN解决方案,时髦的解决方案,不管是什么。它给你一种错觉,一旦你连接到这个网络,你就是安全区域的一部分,一旦你进入这个安全区域,你可以做任何你想做的事情。

这基本上是一个模型,你可以通过它得到预m解。构建应用程序的新方法是让应用程序在云中运行。

我有一个应用程序,我把它分解成它的组成部分。Acme.com现在是一个由几十个,甚至上百个微服务运行的应用程序,它们都在公共云上相互通信。没有尖桩围栏,没有id,没有IPS。它确实确保了以前的大栅栏不在了,这意味着应用程序需要自生自灭。所以我们在右边研究的保护,保护应用程序和数据是关于你需要部署的技术,以确保应用程序保持安全,即使你不控制底层网络,你不控制底层云系统,你不控制防火墙id, IPS,因为他们已经不在那里了。具体来说,我们正在关注的是我们的Kubernetes环境,云原生应用程序安全,在我们看来是我们要去的地方。

我们和很多客户谈过,你确实看到了Kubernetes的概念不仅仅是一场技术革命。

当然,Kubernetes的核心是管理一堆进程,Unix进程,在Linux上运行,有名称空间等等,但Kubernetes不仅仅是这些。

Kubernetes也是一场商业革命,因为它允许像Acme这样的企业快速建立所需的基础设施,以托管这些诞生于云类型的公司。我们注意到的是,即使我们转向我们现有的客户,其中一些客户已经建立了相当大的预置解决方案,他们也在转向Kubernetes类型的部署,他们自己成为云公司的新生儿,他们只是离开预置解决方案,他们不是在追求提升和转移,而是在云内部实现它们,就像诞生于云公司一样。这些公司的关键角色是云架构师,云安全操作,应用安全工程师,当然,开发人员,开发人员是这一切的核心。这些不是我们之前看到的传统利益相关者。

传统的利益相关者,特别是应用程序安全当然是IT。

在这里,情况就不一样了,特别是随着移动的左移,我们看到的是现在有更多的决定直接进入了开发社区,由开发人员自己做出,他们已经决定了事情的运营方面,他们现在还需要决定安全方面的事情。那么我们要解决的潜在问题是什么呢?

我们要解决的潜在问题就在这里。随着这些应用程序迁移到云端,它们有不同的计算机安全要求。

就像我之前说过的,你的整体应用现在被分割成很多微服务,这些微服务彼此之间的通信非常好,有外部服务,有内部服务,我们有无服务器的功能,我们有基础设施作为代码解决方案,这是一种完全不同的构建应用的方式,相对于以前。

但是,随着这种向左移动,开发人员不仅有责任做操作方面的事情,还有安全方面的事情,你开始意识到开发人员处于一个艰难的境地,一个开发人员,随着ci CD链的引入,已经提供了工具来做操作方面的事情。

但是从安全的角度来看,这些工具并不存在。是的,DevOps、prod、CI CD、持续集成和持续开发……连续部署,不好意思。但是第二部分不存在。

没有ci CD加上持续安全性,也没有直接进入IDE的集成安全工具集。

实际上,我们在这里所追求的是,我们应该构建一个将IDE、ci CD和持续安全性组合到一个包中的工具集,否则Devsecops对开发人员来说是一个很高的要求。然后开发人员缺乏安全工具,就像我之前说的,我称之为知识缺口。通常情况下,开发人员被要求尽可能快地交付尽可能多的功能。安全总是事后才考虑的。此外,确保构建安全的应用程序是一项具有挑战性的任务。所以确保你帮助开发人员指出常见的错误,经常犯的错误,有风险的解决方案,并指出漏洞的位置是此类工具集的重要任务。因此,第一代云应用程序安全真正关注的是部署在漏洞分析之前,简单的攻击,真的。

我们在这里真正追求的是我们应该寻求更复杂的解决方案,真正的整体视图ID, ci CD,和持续的安全性在一个包中,这样从操作端、开发端和安全端,开发人员真正掌握了整个应用程序。让我用一个生动的例子来介绍。这张图在左边和右边分别表示了之前和之后。让我们来看看这三个角色。

这是开发人员,这是应用程序安全角色或者secops角色在中间,在底部,是CISO。

开发人员的任务是为他们的企业快速拼凑一个解决方案,他们被赋予一项任务,即为公司Acme实现功能X、Y和Z,开发人员将使用任何可用的功能来完成这一任务。这张图中描述的当然是API服务,有无服务器函数,有库,sdk,当然还有其他资产,它们可以用来构建应用程序。有了给开发人员的复杂工具集,基本上,开发人员只需要坐下来,构建整个应用程序,然后把它扔出去应用程序sec或SecOps的栅栏,他们提交应用程序,然后sec ops和应用程序sec真的没有太多关于部署的信息。我在我们自己的组织内部和外部都有过对话,在那里安全操作委员会和应用安全委员会真的不太了解应用程序是做什么的。

应用程序可能已经破坏了映像库、映像层、库、配置、API服务、无服务器功能等等,实际上,app sec并不知道这些漏洞在哪里。我曾经听说过这样的轶事:app sec每3个月就会把所有的开发人员拉到一个会议室,开发人员需要展示他们的外部依赖关系。你可以确定两件事。

  1. 开发人员不想这样做,因此,演示要尽快完成,这样开发人员才能开始工作,这意味着演示中会有不准确的地方,一旦开发人员回去工作,他们就会改变解决方案,这意味着评审是不准确的……只有在与app sec共享的那一刻,如果我是CISO,就是图表底部的那个人,我会揪着头发,我不知道该对我的客户说什么。

我不知道一个CISO会对acme.com的客户说这些应用程序中的漏洞在哪里。实际上,CISO现在的任务是只有当一个应用程序被侵入时,才能追溯回去告诉这些客户acme。com是非常抱歉,他们的数据泄露了。看起来不太好。解决方法很简单,就是我在右边展示的。

右手边,我们有同样的三个人物角色,而不是简单地说,你知道吗,我们把这个抛给了开发者,app sec和CISO事先设置了护栏。这些护栏包括:作为开发人员,您只能使用以下映像层、以下经过测试的映像层、以下配置、以下工具集以确保您插入应用程序的这些资产是安全的、以下无服务器功能以及以下内部和外部API服务。而且,我们接下来要做的是,一旦我们知道了所有这些开发人员可以使用的资产,我们就会事先对它们进行测试。

我们已经事先知道漏洞会是什么在遥测方面,在测试和诸如此类的方面,这意味着如果开发人员准备好了他们的应用程序,并将其呈现给应用程序安全委员会,应用程序安全委员会没有什么要做的因为应用程序在护栏内,你可以简单地推出它。

App sec很高兴,因为他们确切地知道哪些构件进入了哪些应用程序,使用了哪些服务,使用了哪些映像,哪些映像层,使用了哪些配置,并且他们可以快速地注销该应用程序。

作为CISO,这也很好,因为我现在对我的应用程序中的所有依赖项都有了全面的了解,我确切地知道我在哪里容易受到攻击,以及我是如何容易受到攻击的,但作为一个偷偷的首席执行官,当时已经说过,一个漏洞只有在成为已知漏洞时才会成为漏洞。

重要的是要不断跟踪应用程序中的所有这些资产,通过这样做,我们可以事先知道,或者当发现漏洞时,哪些应用程序将受到影响。我们用这些知识去找app sec,或者说是开发者。

我们会通知app sec,在某个应用程序中发现了一个新的漏洞,他们需要修复它,要么通过补救的方式,要么通过在JIRA中创建工作项、工作票或类似的东西,让开发人员修复这些问题。这就是为什么在右边,这个图表是双向的,它显示了应用程序来回移动,你真的想要有持续的安全性,CS部分,现在在控制之下。作为一名CISO,即使现在事情已经被攻破,我实际上可以确保我能主动地向我的客户阐明这一点。

这是一个完全不同的故事,作为一个CISO,我与我的acme.com的客户接触,告诉他们我们发现了一个漏洞,还没有任何泄露,这就是我们报告它的方式。

相比之下,左边那位可怜的首席信息官将不得不这样做这就是你的数据泄露的原因。

在右边,这是我们在泄露之前补救的方法。因此,它实际上是将图像元数据功能和API评分结合到开发和运行周期中。这真的有点像开发人员的保险政策。

接下来我要做的,是一个快速的演示。我将在这个快速演示中展示的东西在这个图表上。

我们选择谷歌潮人商店,它显示在左边,一些可怜的程序员,在这个特殊的情况下,我自己编程扩展了潮人商店的功能,当潮人商店里的商品被购买时,它会发送短信。正如你在黄色部分所看到的,那个可怜的程序员将服务功能的所有部分和直接使用到代码中的令牌都包含在内。现在我们知道这个账户是AC31C8,等等,等等。是的,它与一些程序员的……

让我这么说吧,它曾经与某个程序员的信用卡绑定,它有一个认证令牌。然后你使用一个外部服务,在这个特殊的例子中,Twilio,来发送SMS。这里还有一个错误。因为开发人员包含了整个交易。

整个交易包括,我们在网上精品店买了东西,这是使用的信用卡号码,这是CCV,这是截止日期。这不是您想要的方式,因为这意味着您现在正在将PLL数据共享给外部服务,而您不知道后果是什么。我们用我们的解决方案,安全CN和安全云原生,就是我们做到了通过控制台可以看到。

Secure CN帮助你开始管理整个应用程序,从容器的角度,图像的角度,图像层的角度,API的角度,未来是无服务器功能的角度,这些外部服务的令牌管理角度,内部服务的角度等等。

这就是我们的目标。因此,安全CN成为管理应用程序的一站式商店。

现在,让我停在这里,这段录音。我换个演示,马上回来。

谢谢你!

要么快速释放,要么死亡