很高兴今天有这个机会跟大家有这个交流我是AQUA的工程师陈宇那今天跟大家的主题是如何用开源工具级去构建一个安全的云原生平台那其实今天除了去交流开源工具级之外其实也会跟大家去讲讲AQUA在云原生安全这块我们在一些对于框架上的一些理解和一些看法那其实安全是一个跟IT其他领域的方向相比是一个很特殊的方向因为大家可以看到在安全这个方向之内有特别特别多的细分领域对吧那大家其实可以想一下前几年我们在聊安全的时候我们其实去聊网络安全去聊中东安全去聊应用安全对吧那在现在我们聊安全的时候我们更多的去聊IOT安全聊云安全聊云原生安全对吧而且几乎每年都会有一个到两个这种新的细分领域的出现那这个其实也会让有时候也会让我们的安全的做安全人有时候感到很困惑那这些新的细分领域之中我要如何去掌握主要是用好这些了解这些新的细分领域那实际上从技术的角度上来看一个细分领域的出现很少情况下它是一个字底向下的完全创新那其实绝大部分的细分领域的出现都是在原有的基础之上去做的一些叠加和改变那其实如果我们退回到安全的原点上来看去理解这个细分领域的话其实我觉得会更容易理解一些那其实我们回到原点去看安全的话可以看到安全其实它的本质上就是一个攻守双方的一个对抗的过程对吧攻守双方会使用自己不同的技术手段自己的武器库自己的技术战自己的方法论这双方进行展开一场长时间的一个对抗那这是安全的本质了那这个本质在任何一个过程之中任何一个细分领域之中都没有发生改变那实际上对于细分领域来讲我们改变的是什么呢我们改变的其实是那个对抗的那个战场这是我们改变最多的一个地方那说最早我们的战争可能发生在平原对吧后来战争发生在山地再发生在陵地发生在天空发生在海洋战场发生了转变每一次的战场转变实际上都会带来技术带来方法论带来一切的升级和变化那这是细分领域之中真正变化了的东西那今天我们所要聊的云原生其实就是我们一个新的战场那简单讲一下什么是云原生我觉得今天来参加会议的人可能应该对云原生这个概念应该是非常了解的其实也并不陌生了那云原生本身它是如果按照2018年Paperture定义来说它是一个具有些特定要素的一个共生系统对吧如果你的应用程序本身它是以微幅的结构去开发并且它是以这个DevOps的这种开发流程去进行那在部署的过程中使用了像持续部署这样的技术那最后被部署在不可辨基础设施之上那这样的一个共生系统我们把它称为云原生对吧那因为DevOps啊像Kubernetes本身是不可辨基础设施里面一个很重要的代表那所以说大家有时候也会把容器把Kubernetes和云原生做一个简单的等同这是云原生那我觉得这里面比较容易困惑的概念是云原生云计算公偶云对吧这些不同的这种概念之间它的区别在什么地方那实际上来说呢云原生和公偶云和云计算其实关系不是特别大特别是按照我觉得CNCF有一个观点我是很赞同就是其实云原生和云计算之间的关系其实逐步的走向一个越来越越来越割裂的一个关系因为云原生这个体系变得越来越独立那这几年云原生的发展特别特别的好那其实它的整个的技术扩展它的市场规模它使用的这个广度已经远远超出大家最早对它的预期其实我们大家可以发现在云原生这个领域它甚至开始出现了后相兼容的一些项目对吧也就是说如果你的应用程序在因为一些技术的手段历史原因可能没有办法迁移到云原生的这个技术架构上它没办法做一些微服的切分对吧那你只能用传统技术架构没有关系云原生的技术架构现在开始支持向后兼容那现在我们在市场上可以看到一些开源项目已经出现了比如像Kubibort或者是像这种House这样的项目都可以解决我们的向后兼容的问题那随着这个向后兼容的出现相信云原生这个市场会越走越好那但是他走的这么快的同时也面临了一个新的问题安全的问题这也就是为什么云原生这个领域成为了一个新的战场那其实这是可以理解的因为所有的安全事件本身他都是会跟着业务走跟着钱走对吧哪里的业务系统比较集中哪里的钱聚集的比较多那哪里一定是比较容易发生安全的事件的那所以说其实大家可以看到在2018年之前吧其实大家很少会听说到一些云原生领域发生一些安全事件而实际上随着云原生的这个东西这个平台被省得越来越多那安全事件越来越多对吧那这就是为什么大家现在开始逐渐的去关注云原生安全那其实我们来看一下那针对云原生安全如果我们现在一个安全的管理人员我们要开始去了解云原生安全那对我们来讲我们最大的改变是在哪里对吧我们要做哪些变化因为是变化促使了我们发生外部的变化促使了我们发生变化那外部到底发生哪些变化我觉得变化最主要有三点了第一点的变化是一个技术站的更新那这实际上是最本质的一个东西因为云原生安全这个细分领域的出现的一个很重要的原因就是因为云原生技术站本身跟安全技术站之间发生了一个碰撞他们交叉出了这个新的细分领域那云原生技术站是一个比较独一的技术站了那这个技术站里面其实包含的东西是比较新的跟大家平常所理解的一些传统的工具传统架构上的一些安全里面不太一样技术站不太一样比如说云原生里面包含的微服对吧服务质礼容器编排工具那这些其实都是需要安全的人员去逐步去学习的一些新的技术站那对技术站的一个学习其实如果对技术站不了解的话那么在做安全的过程中我相信大家如果去从事安全行应该时间比较长的话那对安全的一些防法论对安全一些技术知识其实应该是比较了解的但是但是如果你对技术站的更新不及时对技术站不了解的话那其实就好像你走到战场上你不知道哪里有坑哪里有洞哪里有掩体一样就是好像你抱着一把加特林进了一个你完全不了解完全陌生的战场那实际上你起的作用是非常有限的所以技术站的更新是变化外部环境出现的第一个最大的变化那第二种人形的变化那是防法论的改变那防法论的改变其实大家知道我们在传统的架构上我们去做安全的时候我们所采用的这种方法论更最多的方法论其实是基于编辑保护对吧基于流量风险的这种风险基于流量分析那更多还有一些是基于比如上侵入式的这种保护那这是我们常用的一些保护上的一些方法论但是这样的方法论放到云原生的环境下实际上不是非常的适用因为云原生环境有一些它固有的限制比如说一个很典型的限制就是一个性能的限制对吧像我们刚刚说到的基于流量的防控这样的防控方式通常对于性能都是比较消耗都是比较大的而且这个其实完全取决于你的代码的写的好坏还有你的匹配的细化的一个程度所以它的性能消耗是很大的那这个时候而云原生的环境本身对性能其实比较敏感的因为我们知道我们的云原生资源像破的像容器这样的资源本身它都是比较轻量化的所以它对性能的消耗是比较敏感的所以这个时候我们其实很难把这些基于流量分析的这些工具这种方法论区应用到我们的容器环境之下它可能反而会影响到你的业务对你的业务产生去影响这就这就其实我们就头中绞轻了对吧没有达到原先的目的那另外呢比如说原先基于边界的防控方式也是一样的因为容器本身其实你很难去完全的能够做到这么好的调度对吧那其实同一个物理基呀同一个节点之上不可能一般来说一般来说一定会存在说两个不同业务系统的容器会运行在同一个业务节点之上的这个其实你很难去真正做到这么细化的调度对吧所以其实边界也很难找到我们又没有边界我们又没有没法使用流量那这个时候传统的方法论其实没有办法使用所以在云原生环境的这个环境之下其实我们要有它自己的方法论了其实针对云原生环境的现在大家所看到的方法论我们更提倡的是叫shift and left对吧用中文的话来说就是安全左移那其实我觉得安全左移这个概念的其实这个词其实并不能很准确的完全的反映shift and left这个词的一个外言那shift and left这个词出现的其实很早它的出现甚至于早过云原生这个领域的出现那它并不是专属于云原生的只是在云原生这个领域里面它找到了自己的使用的场景那我觉得更好的去体现shift and left这个词外言的一个翻译是什么是事前防御把防御做在事前这个事前是指在任何阶段的事前并不是只是在我们所我们平常所理解的比如说写代码之后对吧这个事情那等一下我们去看到我们的一个手方的一个流程理论的时候其实会看到在手方的每一个层面我们基本上都在贯彻着shift and left这样的防御的方法论的思想那在这里呢我们接下来看一下在手方如果我们要去解决这些问题的话我们要怎么去我们要怎么去解决这些问题那在讲解决问题之前我先简单的讲一下介绍一下阿夸吧那阿夸其实是一家成立于2015年的公司了那阿夸其实是比较注重于云原生安全这个领域的阿夸在2015年成立应该是全球成立的最早的专注云原生安全的家厂商那目前也是在所有的独立的云原生厂商之中规模最大产品先最权的一家厂商那现在也是走到了一个独角兽的规模目前阿夸还是专注在云原生安全这个领域那我们来看一下如果我们要去做云原生领域内的一些安全的防范的话那防守方的方法论应该是一个什么样的那我们用什么样的方法论那其实在看防守方的方法论之前呢我们先简单的看一下如果我们要做云原生安全的保护我们要从什么地方去入手我们入手点在哪里那这个入手点呢其实我们其实副排了很多安全事件了其实我们会发现当你的环境下发生一些安全事件的时候那一定是因为你在某一些方面某一些地方可能是某一些阶段没有做好所导致的那不可能说你所有的门都关死了但你还是发生了一些安全事件对吧这个可能就不属于科学伴酬对吧 他属于玄学的伴酬去解决的问题我们也解决不了对吧所以说其实我们如果把整个云原生的环境去做一个切分的话整个云原生的生命周期是很典型的分为了三个显著的阶段那第一个阶段是build第二个阶段是infrastructure第三个阶段是workload那也就是我们所说的构建阶段基础架构阶段以及工作负载阶段那这就引出来我们做防守方的时候的做原则的时候的第一要务了就是当我们在去考虑原生平台的安全的时候我们必须必须是基于整个生命周期去考虑那这主要有两个原因第一个原因是因为整个云原生生命周期里面的三个阶段的联系是非常紧密的是你很难把它完全的割裂开他们之间在相互影响着相互的拉扯所以说你没办法去说我只做一个阶段的安全很难那第二个问题是在于大家知道安全本身是一个目统原理那你安全的好和坏其实取决于你目统之中最短的那个板对吧安全的整个目统容量取决于最短的那个板所以说如果你只做了某一个阶段的安全保护那其实剩下两个阶段或者说你在某两个阶段要两个阶段花了特别多的力气而在其他的一个阶段没有做得太好的话其实会做很多的无用功其实也是一种投资的浪费那所以说这是就引出了我们的第一个原则在做云原生安全的时候我们要基于整个生命周期的这个去考虑基于整个生命周期的方式去考虑那接下来我们来看一下从防守方来讲我们要做第一件事情什么那其实在其实我个人认为第一件事情应该是更新你的技术战你就是那如果你不是从是最开始是从是安全但是你不是从是云原生的工作的话那其实我觉得第一件事情应该是先更新技术战了先去了解云原生的平台下的一些基础的知识它到底是什么比如说容器是什么变排工具怎么去使用对吧变排工具cobonatis各个服务组件之间的关系是什么这是首先要去做的那除了这个之外其实我觉得第一步要做的事情是去构建顶层设计因为安全其实我们个人认为安全其实应该从顶层设计开始它是要有一个它是方法论优先的方法论优先于工具而出现这是安全的一个原则也就是说做安全的时候其实我们首先是有顶层设计然后再把顶层设计做逐步的需求的模块的分立这个划分然后接着当我走到某一个细分的那个需求点上时候我再去工具级里面去找我的哪一个工具级可以满足我这个需求接着把这个工具级用到这个需求点上最终完成你的这个顶层设计的结构这是安全的一个顺的一个结构对吧那我们来看如果我们要去建立一个安全的原原生环境的话这个顶层设计我们要从什么地方开始前面我们说过了我们说过了我们的整个原原生的应用的生命周期其实分为了三个阶段对吧build阶段infrastructure阶段以及workload阶段那其实我们在做整个顶层设计的时候其实我们也是依照这三个阶段来的那这三个阶段其实我们分为三个阶段把这三个阶段分为了四个步骤分为了四个步骤那首先我们来看第一个第一个步骤那第一个步骤也是我们防御的第一个层面那这个层面实际上是基于build这个阶段来做的因为在整个原原生环境的攻击的方式中其实我们看到的最多的攻击方式是基于供应链的这种攻击方式供应链攻击是在所有的攻击的方式之中就是出了名的特别难防御的这种方式因为供应链攻击它的防御的这个点它发生对抗的这个战场它不在这个安全人员的管理范围之内它通常发生在外部对吧所以我其实很难去管控它那所以说我们的第一个战场的第一个层面就是在供应链这个层面那也就是我们的build阶段对吧因为所有的原原生的净项本身是来自于这个容器本身来自于净项了对吧而净项里面你所使用的基础净项或者你在基础你在净项里面打包的一些package本身大部分可能都来自于你的供应链那如果供应链管理做不好其实会出现很多问题了那这是我们的第一个层面基于供应链的检查那基于供应链检查其实我们可以检查的粗也可以检查的细那么在这个层面其实我们最主要的关注的点通常放在几个第一个是漏洞对吧漏洞是我们通常第一个会去检查的那第二个点我们可能会去检查一些它的page的错误这其实是容易被忽略的也就是说你可能没有什么漏洞你可能就是没有什么CVE的这种漏洞但是你可能存在一些错误的page比如说大家习惯于在镜像里面不打包用户对吧但其实如果在镜像里不打包用户那你的镜像如果运行成容器他就会以默认就会以root用户去运行这个其实是不好的一个行为所以说其实现在我们的一些最佳实践做法更好的是说我在集群的内部的节点上我预先建立用户那接着我把这个用户打包到我的镜像dog file里面去对吧这样的话我生成的镜像里面本身是自在用户的那到到到时候你默认启动的话他就会用这个用户去启动那这是一种比较好的一种实践方式而且这种方式是比较容易被大家就所忽视的还有一个就是大家在构建镜像的时候可能会去包含一些像一些不太好的一些文件一些比较敏感的文件像pm或者key文件这些也是一些不好的实践所以说这种管理其实都是属于供应链的层面我们要在供应链的层面把它先严格的去做好和严格的管理那第二个层面其实属于infrastructure屏面也就是基础架构屏面基础架构屏面其实是我们所有永远生资源的一个运行的地它是那块地所以说这块地上是不是存在一些问题其实直接关注着你的容器本身它的运行的好坏对吧因为可能你的镜像没问题但是你运行的这块地有问题其实最终还是会带来问题的所以说在这块地其实它这个地本身分为了在基础架构屏面上分为了两个层面一个层面是你的编排工具屏面也就是我们所说的Kubernetes这个屏面那第二个屏面也就是它在下层这个主机屏面因为你的Kubernetes是运行在你的主机上对吧可能是Linux也可能是Windows的主机所以说在对于这个层面我们的保护其实Kubernetes自身的安全性做的还可以的还不错的它有一些比如说像认证的机制BAC对吧那这种机制之下是存在的但是其实最大的问题在于它的配置比较复杂所以其实会导有一些物配置所导致的一些风险面的一些暴露那这个是比较危险的所以这是我们对于基础架构的Kubernetes屏面上的一个管控的一个重点的关注点第二个问题是发生在你的主机上那主机其实照道理来说它是不会暴露到外面的对吧所以其实它其实影响面并没那么风险面并没那么大但是因为主机上本身它的逃犹动的存在这个对于名媛生环境来说是致命的因为容器自身它是没有内核的对吧它本身是依靠主机内核运行的所以如果存在这种逃犹的方式的话其实就很很危险这就相当于说我只要一个容器被突破那我其实如果能够逃犹的话那其实我整个主机上的所有容器都会被拿下这个很危险所以说这是为什么我们在第二个屏面要去关注基础架构的一个很重要的原因那第三个屏面在哪里呢第三个屏面其实我们是去关注容器的运行的合规运行的合规其实这个阶段大家觉得这个阶段属于运行式阶段还是属于运行前阶段我个人觉得这个阶段其实属于运行前阶段运行前阶段这也是一个我认为在Shift & Left的一个外延的一个体现非常显著的一个地方那大家所理解的Shift & Left可能更多的体现在供应面这个层面对吧我把安全的管理推进到供应面这个层面去做那实际上来说这第三个层面容器的运行的规范其实也是Shift & Left的这个这种方法论的一个很重要的一个外延体现那我们在这个阶段其实要做的事情就是确保容器在运行的过程之中它不使用一些非合规的运行方式最简单的比如说它不能使用Proverger模式特权模式运行对吧它不能使用Root用户运行对吧它在运行的过程中它不能去mount一些敏感的文件夹对吧这是一些最基本的一些使用方式另外因为容器本身它属于不可变基础设施所以说容器的里面它的整个工作的逻辑其实应该是非常简单的每一个容器只做一件事情一件很简单的事情所以当这个容器运行起来以后我们尽量不要去影响它的运行模式不要在里面安装一些额外的进程或者给予一些额外进程以执行权限去把容器真正的变成一个不可变基础设施那为什么我们要做这一步呢其实我们做这一步一个很重要的作用是去帮前面的两个层面去做一个容错因为我们知道我们在建立安全体系的时候一个很重要的阶段一个原则就是容错因为我们相信其实所有的人都会犯错犯错不要紧这是所有人都会犯的但是我们一定要每一步对前一步有容错的机制也就是我们通常所说的always next step永远我们有下一步我们这下一步就是给上一步去提供容错的那如果我们在这个阶段能够把容器的运行的极限建立起来把容器变成不可变基础设施那其实这个容器对外暴露的资源暴露的这个攻击面就非常小那么哪怕我在第一层面和第二层面的检查中我有一些疏漏也没有关系也没有关系在这一步他依然会被挡住因为他没有攻击面也就是说我对攻击者我提高了攻击者的攻击门槛这是这一步最重要的一个作用那第四步呢第四步其实是真正的麻烦的地方也是最难做的一个地方也就是说我前面三步全部被突破了全部被突破了那在本地的这个时候我们就要通过一些比较高级的应用工具去启动一些高级防御策略来做最后的防护第四个阶段第四个阶段的问题的数量会很少但是防止难度会很高那这是因为他已经到了最后阶段这是真正是比较消耗我们的去考验我们安全人员的技术和经验的一个点那在第四个层面好那我们做好了顶层设计之后那下一步我们要做的是什么就是选取相应的武器了对吧我们要去找我们的武器去工具级里面找武器那其实维员生的这个工具级里面其实提供了相当多的工具那CNCF其实也发布了在今年应该也发布了那个DevSecOps的一个雷达图对吧在雷达图里面列出了很多做DevSecOps的一些工具那其实我前面说过Aquap本身作为一家Focus在雷员生安全的一个厂商那我们其实也提供了一套完整的工具级那这是我们的工具级的地址那大家可以到这个地址上去看到我们其实有一套完整的工具级那这套工具级里面其实覆盖了我们前面提到的三大阶段Build的阶段InfoStructure阶段以及ModeClose的阶段三大阶段的全部保护全保护Travi,Starboard,Kubiband,ChubbyHunterTracy,Posting那但是今天我们不可能把所有的工具都跟大家介绍完所以我们在每个阶段会选取一个工具去跟大家去聊一下它的一个作用首先我们来看第一个工具Travi那Travi本身也是入选了CNCFDevSecOps雷达的一个工具这是Travi我们来看一下Travi在介绍Aquap的开源工具之前我简单的跟大家提一句就是Aquap除了开源工具级之外Aquap也有一套自己的商业工具级也是能够实现整个全生命工具的保护的商业工具级Aquap在今年其实也是被Garden提名为CNAPP也就是Clownative Application Protection Platform云元生应用保护商业工具级平台的一个领导者那我们首先来看Travi那Travi其实它有多种不同的部署方式了那它可以以容器化的方式去部署那它也可以以这种Binary的可执行文件的方式去部署集中不同的方式去做那Travi其实最主要解决的问题是在Build的阶段的问题就是构建阶段的问题那我们直接来看通过一个demo来看一下Travi的使用好 那这个是我的Testbed我的测试机那我测试机上其实已经安装好了TraviOK那我在这里选择的Travi的使用方式是使用Binary的方式来运行非常简单你搭着我是一个Ubuntu的机器你只需要APT-Gate install就可以安装Travi了非常容易运行那Travi其实有几种不同的运行方式它首先可以Binary的方式运行也可以容器模式运行那它的扫描其实集中在两点第一点它可以扫描你的镜像然后你的image那它的扫描其实分了两个步骤了第一个步骤是我们可以扫描它的本地镜像那我们来看一下本地我们有什么镜像OK 我本地有一个Ubuntu的一个镜像那我们就来用使用Travi去扫描一下本地镜像使用非常简单好 那它首先在扫描之前它会去更新这个DB更新DB最主要是更新一些签名库那你看它直接就会出现现在在你这个版本之下你的这个image版本之下所包含的一些漏洞的情况CVNumber所对应的这个severity它的这个安全级别是什么对吧medium low或者是high直接显示出它的这后面就是显示出它的一些这个fix版本是什么那这是使用Travi去扫描镜像这是在本地扫描镜像那其实我相信大家使用更多的不是通过这种本地扫描的方式对吧 是通过跟流水线集成的一个方式那其实Travi是可以跟几乎所有的主流的这种CICG工具去做集成的那我们在这里看到的工具其实是通过一个gitlab的工具去做集成那这这上面本身它也是我的gitlab runner所以我的gitlab runner也跑在这台机器上那这是gitlab serverok 我们来看一下我们CICD的gitlabsittings看来runnerok 那这下就是我的runnermyrunner 装在这台机器上非常简单 但是有一个要求也就是Travi必须Travi必须跟你的gitlab runner是跑在同一个机器上的也就是说它只能扫描它扫描的是你的本地镜像ok 如果你有多个runner多个runner那你在每个runner上你需要一个travi的工具在那里ok 对 大家清楚这是travi的工作的方式那大家我们只要到CICD的paper line里面去建立一个东西就可以了我们首先在可能在这里建立一个建立一个dog file 对吧一个很简单dog file那接着我们只要通过travi去gitlab去写一个gitlab cn的脚本那在这个脚本里面我们会调用travi我们会调用travi去做相应的扫描ok 那它就会使用这个脚本就可以去触发travi的扫描那触发travi扫描里面有几个是需要去注意的点跟大家说一下那在travi的这个脚本里面我们可以去设定你对安全管控的预值是什么比如说我们在这里设定的预值是criticalok 那这个预值设定critical的意思也就是说如果我发现你的镜像里面包含有critical级别的漏洞的话那这个paper line的执行会被中断那它会失败的它会失败的那因为它这失败的方式其实是输出一个非0的返回值大家知道我输出0它其实就是返回1了 对吧返回0的话表示我的流水线成功那返回1的话其实就表示我的流水线失败那通常我们在流水线下面还会接下一步比如说是publish到你的仓库里 对吧那其实如果你是返回1的话其实它的下一步publish不会执行了它会在这一步直接被中断掉那这是travi的一个cicd的一个使用的方式那其实除了扫描镜像之外呢travi还可以去扫描一些配置那这个配置其实也就是说在这个配置还没有被打包成配置文件还没有被打包成镜像还没有被真正去执行的时候我可以扫描这个配置文件那travi可以扫描两种类型的配置文件那一种是我们所说的打包镜像所使用的dark file 对吧那除了dark file之外呢travi还可以去扫描我们的IAC file也就是类似于我们叫terraform 对吧大家在公用语言上去执行配置了一些模板的这个配置扫描也是可以由travi去扫描的所以travi除了是扫描镜像的工具之外travi还是IAC的扫描工具info structure is a code那我们来看一下travi的对于配置文件的扫描好 我们来看一下我们的配置文件其实在这个config4里面那这config4里面包括了dark file 对吧包括了yam包括了我们的terraform的文件那好 那我们其实可以做一个联合扫描直接就可以扫描了config那他就会扫描在这个文件加之下所有的文件那比如说我们我们一个一个来看那这是扫描的dark file 对吧这个文件是对dark file的扫描那么在dark file的扫描里面我们发现了几个问题那一个问题是说他的两个问题主要是一个是他是用router的因为他没有double user还有一个是他使用ed应该使用ed了他使用的是copy所以说这是第二个问题那比如这是对yam文件的扫描对吧那接下来下面是对你的deployment yam的文件的扫描对吧这是在你的这个yam文件还没有在copy相对运行对吧这是在运行之前的扫描那接着下一个呢是对一个terraform文件的扫描这个terraform文件是在AWS上去申承你的资源配置一个文件那在你的资源配置被申承之前你可以使用terraform你可以使用yam需要那个travi去对你的terraform进行一个安全扫描那保证他没有一些安全性的问题被包含在里面ok这是travi的工作模式好那travi之外呢我们第二个要跟大家去介绍的工具就是starboard的工具那starboard的工具呢最主要他其实是一个去扫描你的他其实是一个port的运行模式我们最常见的运行模式是一个port的运行模式那starboard的主要的作用呢就是去看你现在在你的环境之下你的一些你的一些配置啊还有你的一些这个嗯你起的一些资源啊是否是符合一些要配置配置的安全性的一些要求的那我们在starboard的使用上其实我们通常选择的他的部署模式是以port的模式运行也就是说他是一个他其实我们我们对于starboard来讲我们会阿卡会自建一个cd然后会自建一家cd跟couplet跟那个couplet CTL的client去联合起来去使用嗯getport我们先建一个这有一个starboard的namespace那在这个starboard namespace里面你看我们运行了一个starboard的port对吧那当我们在这个集讯上去运行一个当每运行一个新的port的时候啊我们比如说我们couplet wrong啊wrong一个新的port的时候那这个时候starboard就会开始去扫描这个port的一些相关的配置的问题我们看我们的getport那这个这个tomecat是我们之前运行起来的那我们来看一下他之前的一些问题我们来看一下我们上面有呃呃ngix对吧有tomecat还有一个posted那个工具我们来看一下starboard的扫描结果starboard呢可以扫描漏洞也可以扫描你的配置我们先看看漏洞扫描那实际上实际上starboard是一个综合性工具级文件那其实刚才我们提到的travi的这个工具其实也是被starboard集成进去了那也是被starboard集成进去了所以starboard在扫描漏洞的这个工具的时候其实他是会去调用travi那调用travi来做相应的这个扫描所以但是starboard跟travi不太一样就是starboard是在运行是扫描也就是你的嗯你的这个port在本地开始开始运行的时候他是调用travi工具进行扫描大家会看到这是扫描的相关的漏洞的情况对吧这是starboard的扫描方式那starboard除了扫描漏洞之外呢starboard还可以扫描你的相关的配置错误那比如说我看到你的continue的一些配置这是posted的配置这个数量就比较多因为他针对这个扫描的力度是比较细致的ok这是我的bromisius的容器啊这个扫描的力度就很细致你在哪些配置可能是一些不可归配置这是这是啊starboard的一个使用那starboard的其实他是可以使用regal去自定义相应的规则的啊自定义相应规则另外呢针对可以使用starboard去对你的cognitive环境按照csbenchmark的这种方式去进行安全检查配置安全检查那他可以以多种方式运行了他也可以以by那种方式运行但是通常我们会以这个啊crd的方式进行体容器的方式运行这种方式运行的方式会比较多那最后一个工具呢是我们要讲的工具呢是tracy啊tracy其实也就是我们所说的在第四个阶段那个最下面的那个阶段我们要去做安全保护的一个工具了那tracy其实他本身是调用的ebg ebpf的这种内核工具去做相应的观测的那ebpf其实是我个人觉得是在linux啊内核里面应该是未来最有前途的一个工具级了因为ebpf本身他站在内核的平面并且可以做一些内核的观测级而且在内核的平面上他不涉及到一些性能的问题对性能的保护是比较好因为他不涉及到这个用户态跟内核态这个频繁的交互啊所以说而且内核态上你能看到的东西更多所以tracy是在这个平面下做保护的话他站的位置非常的好那tracy的运行方式呢我们通常都会以容器的模式来运行tracy了当然他也可以binary的模式运行但是以容器的方式运行的可观测性效果更好那接下来呢这个demo我觉得是阿夸的一个官方demo这个demo其实我觉得做得非常好我们可以直接通过这个demo的方式给大家去看一下tracy是如何去做好通过内核观测去做好容器的运行是保护的everything that happens on the operating systemand then it processes this stream of eventsin order to detect suspicious behaviorin order to run tracyyou can just use our docker containerthat we have aqua sex slash tracyif we run thiswe see that tracy has loaded a default set of signaturesand let's try to simulate a suspicious behaviori have here a hello world executableit just brings out hello worldbut i also have here hello worldact which is the same executableexcept it was if using a toolthat embedded this hello world executableinto a new executablewhich at runtime unpacks it into memoryand execute it directlythis is a behavior that sometimes is being used by malwarein order to evade being detectedbut we can see that as soon as we execute ittracy has detectedthis as dynamic code loadingkind of behavioranother thing we can dois to run this hello worldusing fexectwhich is a tool that will help us execute thisusing a memf defilewhich is a linux kind of virtual file handlethat has no presence in the file systemand therefore is quite popular in order to evadebeing detected by malwareby anti malware softwareso once we run thiswe see thattracy has detectedit as fileless executionkind of behaviorand the final examplethat we seeis using stracewhich is actually quite popularand innocent linux toolbut the fact that it is occupyingthe debug handle on the filemeans that it will block othersfrom doing the sameand this is something that we callanti debuggingkind of behaviorand with this is anotherkind of suspicious behaviorthat we detectwe have a large numberof library of rulesthat we already detectand many more to comeyou can also write your own rulesactually our rule engineallows you to write rulesusing go langor regowhich is a popular languagein the cloud native spaceall of the rulesthat we have writtenare open sourceand in fact tracyis open sourcein githubyou can go toaquasecurityslash tracyall the code is hereall the policies is hereare hereall the documentation is hereand we also have a discussionstabthat you can use in order totalk to ustell us what you thinkask a questionand what notwe'll be happy to hear from you好那以上就是aquartracy的一個demo那大家可以看到了aquartracy通過ebpf的這種技術去從內和官測的平面上去看到一些惡意行為的執行那以上就是今天最主要想跟大家分享內容也就是aquart的一些開源工具級去怎麼去幫助大家去解決原生安全下的一些安全性的問題當然了今天其實時間有限了其實沒有辦法去demo更多的工具那如果大家需要跟我們有一些交流的話其實可以隨時找到我們那這是aquart的中國的那個微信公眾號那我們在微信公眾號上其實會經常的會發布一些我們在一些技術的觀點看法還有一些技術的更新那如果大家想找到我們也可以通過公眾號來跟我們聯繫好嗎謝謝大家