DevSecOps -运行与JFrog x射线

斯文Ruppert
DevSecOps

从DevOps到DevSecOps。区别在哪里,你需要什么?你如何开始,JFrog x射线如何帮助你?我们将在这次演讲中探讨这些问题。DevSecOps这个术语经常挂在每个人的嘴边,但它主要是作为DevOps的同义词使用的。我们将看到,情况并非如此,差异体现在哪里以及如何体现。在谈到软件开发中最有效的安全#ShiftLeft时,本文展示了Xray为什么以及如何直接有益于业务的基本观点,以及它的实际使用。

视频记录

大家好,欢迎来到我在DevSecOps的演讲“与JFrog x射线一起运行”。我叫Sven Ruppert,是JFrog的开发人员。我们今天要做的是首先看看DevOps和DevSecOps之间的区别,只是想知道它们的痛点在哪里,以及应该避免什么。在这之后,我将花几分钟讲一下为什么DevSecOps将项目和业务中的风险降到最低,在这之后,我们将像开发人员一样,了解开发人员在日常生活中会看到什么,在这之后,我们将讲一些关于架构的观点,以及你可以在这里做什么,最后一个将是如何集成所有这些现有的基础设施。

DevOps和DevSecOps的区别。如果你在互联网上,特别是在维基百科上,你会发现DevOps是一个定义明确的东西。有很多关于它的书,有时候你会有不同的观点,它的一部分是什么?但是……最后,纯DevOps有一些关键点。这意味着,我们正在关注从编码、过度构建和测试软件到打包、发布,然后再到运行的过程,所以这是对生产系统的配置和监控。所以,如果你看这个,你会发现它纯粹关注于开发本身,所以它或多或少是一个通用的东西。所以没有关于性能的特殊部分,没有关于质量的特殊部分,也没有关于安全的专门部分。
这是什么意思呢?如果你稍微回顾一下DevSecOps的历史,或者DevSecOps或DevOps是从哪里来的,你会发现大多数公司都有开发部分和运维部分。开发部分主要关注编码部分,构建和测试,所有这些都完成后,你就有了一个类似于存储库的东西,也许是工件,有了这个打包的东西,运维团队可以获取配置,测试,部署,任何他们想做的事情。所以,这并不好,因为你有两个专门的团队,所以他们之间有很大的界限,所以让这个或多或少透明是有意义的,这样你就没有开发或运维部分,这意味着每个人都应该意识到所有这些事情。
如果你在看这个问题,第一个问题是,安全本身的正确位置是什么?我们是否必须在此管道中添加一个用于安全测试的专用点?也许你会问,安全性是否只是一种可以购买的产品。或者,安全是否意味着我放慢了生产速度,因为我现在必须做更多的事情,在我的管道中有更多的项目?所以,所有这些,如果如果你只关注安全本身,并将安全定义为管道中的一个地方,那么它对你的流程和业务来说并不是最优的。为了回答这些问题,安全性测试是在性能测试之后进行的。
不,安全性不是你应该关注的管道中的一个专门步骤,安全性应该无处不在。仅仅雇佣一个有安全背景的人是没有意义的,他忽略了团队的其他成员,或者团队忽略了他或者其他你想要的。
所以现在不仅仅是雇佣一个人来负责安全,就是这样。所以安全性更多的是,它是团队本身的事情,如果你在思考开发人员应该有什么感觉,如果他觉得安全性只是给他带来了严格的边界,那肯定是错误的。这并不是失去安全,安全是一种将被整合的东西,实际上,安全可能会给你比以前更多的自由。
因为,你可以更快更容易地做出决定,因为你知道接下来会发生什么。因此,DevSecOps更像是一种文化,比如你会看到“安全第一”或“零信任环境”之类的关键词。
所以安全更多的是或者说DevSecOps是一种哲学。比如性能,比如质量。质量不是一小步就能买到的东西,质量是在你的管道中无处不在的东西。这意味着从你制作的第一步开始,你的每一步都要有质量。安全也是一样。如果您现在要做安全性,那么从第一行代码开始,安全性就应该是您关注的一部分。这意味着,安全措施应该尽早引入。
因此,不仅在所有代码和用例都完成之后,现在引入安全性是有意义的,从第一行代码开始,我将向您展示这是如何为您设计的。这意味着,安全是整个生命周期的一部分它不是一个专门的步骤,它从第一行代码开始,就像我之前提到的,一直到监控,部署生产系统。所以每一个微小的步骤都会有一些安全性,东西,属性,你可以做的事情,甚至考虑测试,所以只考虑测试功能是一回事,但如果你在TDD阶段就考虑了安全性,它可能会有一些风险的有效负载测试和所有这些东西。
所以,安全应该无处不在。为什么DevSecOps会将您的风险或业务风险降到最低?这是个好问题,那么你为什么要这么做呢?记住,在Java世界中,很多东西都是基于开源的,你说的是60%以上的百分比。
所以,你的产品或项目中的很多东西都是依赖的会被其他人编码,由其他人维护。这是有道理的,因为你不想重新发明轮子。你不会想要自己编写所有这些东西,因为你需要所有的知识在你的房子里,这可能不是一个好主意。
最好的事情或者另一件事情是,你应该只关注用例,为你的客户带来最好的质量。但与此同时,您必须信任您必须信任其他人的实现。这个怎么做呢?这样你就有了安全性和遵从性。所以这两个信息都必须是可用的。所以开源很好,因为你可以轻松、快速地分析它,一切都是可访问的。
对于闭源来说,这通常有点棘手,因为你必须间接地做所有这些事情。所以,安全问题经常在开源的早期被发现,嗯,我没有关于这方面的数字,但它更容易发现它们,当然。另一件事,正如我提到的,合规开源意味着你有一大堆不同的许可证,不同的许可证意味着这些许可证中的一些对你的业务有好处,而一些许可证只是毒药。所以,有时候,如果你相信这个项目给你的许可证,或者声明一些可传递依赖关系,可能不是真正适合你业务的许可证,这真的是个坏主意。所以,你必须检查所有的可传递依赖关系,如果他们使用正确的许可,如果他们声明正确。所以…确保你对你的项目或业务的一部分有一个全面的概述。DevSecOps或者一般的DevOps,意味着你必须在自动化方面尽可能地加速你的生产。如果你有一个CI管道,这是在CI管道中尽可能多地做事情的方法,因为这是一次又一次地以相同的质量做事情,你可以通过自动化来提高速度,下一件事是,这对安全性和质量都有好处。如果你从你的产品中移除旧的、无聊的部分,因为这样人们更专注于真正重要的任务,这意味着你可以提高质量和安全性,那么……不仅bug,不合规和安全问题都应该在你的项目中尽快被消除。好的。 What the Dev will see… What the Dev will see… have in mind that for example, you have a new feature, a new use case, whatever, you want to integrate in your product or your project means that you have some ideas and you will start with a fresh tiny project, a side project just to clear a few dependencies and start coding. This can take a few hours a few days, maybe longer if you have done all this and the proof of concept is perfect, and you decide this feature is really worth to having a product it would be sub-optimal if at this point you will start analyzing dependencies and you find out that that dependencies are, the implementations you’re using are not fitting to a project in terms of security or compliance.
意思是,这意味着,即使你开始一个小的新项目,添加第一个依赖项,你应该有一个概述,如果一切都是绿色的,或者至少,你知道,例如,你知道你正在使用一个依赖项,你必须改变,因为你必须讨论许可证。所以,这是一件好事,如果你有这些,而JFrog Xray插件将给你的可能性有这些信息,现在从第一行代码,并检查安全和许可问题。现在我要展示的是如何使用InelliJ的Xray IDE插件。好了,接下来是IDE内部的集成,我在这里使用intelliJ,但我们有不同的插件,其他IDE,例如Eclipse或VSCode,所以,看看一个页面,看看你的IDE有什么版本和插件,对于这个,我必须安装这个插件,这意味着我要去插件的市场,我正在搜索JFrog,我会找到JFrog插件。在我的情况下,它已经下载和安装,因为我已经在使用它。所以,在你安装这个插件后,你有配置页面在intelliJ中,它在其他设置- JFrog x射线配置下,你可以添加到你的URL的用户名和密码,并检查你是否有一个连接到你的实例。
在我的例子中,它是x射线3.2.6版本,仅此而已。现在,它是可用的功能在你的IDE中是可用的在这个演示中,我使用的是一个Maven一个非常简单和小型的Maven项目典型的工作流程是,你开始添加一个依赖项,这取决于你的IDE,你必须设置你的配置你必须触发这个的重新加载重新加载定义有些人默认激活它,自动重新加载,我只是手动执行,现在,IDE知道了,我有这种依赖性commons-collections 3.2版本,然后我可以去我的插件已经选择了许可证信息所以我看到commons-collection,这个版本上运行theApache许可我可以看一看安全问题,所以如果这是没有你可以说有时重负载,有时它已经加载,有时你做手动那么你可以看到commons-collections,现在,这里有三个安全问题,最重要的是您可以在这里看到,如果每个安全问题都有一个固定的版本可用。
在此之后,你可以决定是否要通过升级或降级版本号来进行修复,或者如果你要修复传递依赖关系,例如,我有一个带有传递依赖关系的东西让我们看看今天我的互联网连接有多快,所以我选择现在依赖从大一点的项目我mem重载这执行根据互联网连接你和……我并不是最好的所以需要几秒钟得到这个信息IDE能够负荷依赖性,这里有一些新的依赖关系树很高兴让他们有时候你不得不说,“好吧,现在请JFrog”虽然这,你项目中的任何依赖树都会连接到Xray实例,这也取决于你的网络连接然后你会看到这里的组件,这里的依赖是vaadin如果你点击里面,你现在可以在不同级别的传递依赖中导航绿色,红色或橙色如果你选择这里,例如,这个版本的vaadin图表,它正在消耗或者有一个对Jackson核心的传递依赖,在这个版本中,Jackson数据关联和传递依赖来自Jackson数据关联,它们是绿色的,所以他没有问题。
但是Jackson数据绑定本身有一些问题这里你有信息,里面是什么。好的方面是,如果已经有固定的版本了,比如这个,我们现在还没有固定的版本,现在由你来决定是否要覆盖传递依赖项如果你想要排除图表,因为你不使用它,或者你要使用不同的vaadin版本,这取决于项目。
总之,你有可能浏览整个依赖树。就是这样。因此,如果您只是向项目添加一个依赖项,那么如果您遇到一些遵从性或安全性问题,您将立即得到通知。所以,这就是你的IDE集成。好,在我们了解了IDE中的可能性以及它对开发人员来说是怎样的之后接下来我想讲的是架构如何集成所有这些东西。例如,如果你有这个Artifactory作为互联网的第一道屏障,所有东西都将通过Artifactory存储和加载,例如,在Maven依赖关系上,你有可能x射线只是扫描所有这些内容,并给你破坏构建和所有这些东西的可能性。
你能做的一切都可以通过REST API和Web UI访问REST API和Web UI这意味着,所有东西都是统一的平台,都是JFrog产品的一部分你可以通过REST访问所有设施,也可以通过Web UI,这意味着你有存储库,你将开始添加规则,以确保你所有的合规性、安全问题和行为以及所有这些东西都被声明了,你将创建策略,如果你有策略,你可以将这个连接到应该检查的资源上,它可以是Maven依赖项、存储库、Docker存储库等等,我们支持大量不同的存储库,所以……2022世界杯阿根廷预选赛赛程
接下来,我想向你们展示如何声明,例如,一个规则和政策并连接方法对资源,我们没有审查速度可能是做什么类型的信息依赖树的是的,这一个,记住——一切都是可用的,接下来我给Web UI以及REST API的好,让我们看一看x光JFrog平台安装和这是她在我的软件作为一个服务实例,但你可以有和这个一样的,只有on - prem如果你想试试我现在在这里展示的东西,我稍后会给你试用的链接,这样你就可以增加试用,大约需要10分钟左右,然后你在云中有一个完整的平台安装,然后你可以自己尝试所有这些。
所以,如果你有你的平台登录到点,很多点安全遵从这里我们有两个不同的菜单项你必须从策略开始因为策略是在观察者内部使用的一个策略是一个无状态定义如果你发现了什么根据你的定义会发生什么在我们为它找到一个逻辑名称之后我会创建一个新策略policy-demo。
如果你需要处理很多政策想想命名方案,所以这是扩展首先,你必须决定如果这是区域的安全或许可或合规问题我会选择安全你可以添加一个描述,但记住,这个描述必须与所有更改同步,你正在做的所以我现在就让它成为空白。策略是规则的组合,规则是细粒度的东西,就像几秒钟前一样,你需要添加一个逻辑名称,然后你可以选择你可以使用一些预定义的级别,或者你可以自己定义CVSS核心。我只是说,拿起所有东西,现在你知道这个规则应该有多敏感了。
和下一件事就是你必须定义什么是应该被触发的动作或应该发生的事情,产生违反…抱歉…产生违反只是一个东西或者它只是条目和Web UI,我们将向你展示几分钟但你可以引发人与第三方集成程序或基础设施组件可以通知平台用户本身或外部的,如果你想,你可以通过电子邮件阻止下载,这样Xray总是连接到Artifactory,如果你想确保受感染或受影响的组件甚至不在你的存储库中,你可以在这里说,阻止下载。如果某些东西没有被扫描,如果你阻止是/否,对于发布包也是一样的,最常见的事情是构建失败。
是的,我知道这可以用在管线和TeamCity和Jenkins,无论你正在使用的CI。我只是在生成违例现在我的策略中有了这个规则我可以创建它下一步是创建手表。创建一个监视意味着您要将之前创建的策略或策略与您想要查看的资源连接起来。2022世界杯阿根廷预选赛赛程所以我要说,new watch,这里一样,逻辑名称watch -demo,现在你要决定你想要查看的资源是什么。2022世界杯阿根廷预选赛赛程我只是在这里选择了一些存储库例如,我有Docker,你可以在这里过滤,例如,我有Bintray,我的Docker远程,就是这样,这两个存储库现在被扫描了。
这意味着这个手表连接到这个存储库现在我要说明应该发生什么,我只是选择了我想要组合的策略,policy-demo现在与这个手表关联在这之后我可以创建所有东西,你可以在这个菜单中看到手表的概览你可以看到连接的资源是什么你可以计算这里的违规数量,2022世界杯阿根廷预选赛赛程你会0因为我刚刚创建的这个手表,没有触发重新计算所有因为没有变化没有在库,没有触发构建,不过你可以手动触发为例,看看过去的90天或任何你想定义,然后将开始计算这一需要几秒钟,但我在这里准备一些这个让我们早些时候回去如果我来计算的,你可以看到这里有400条违规信息你可以有一个详细的列表你可以过滤这个列表你有这个,然后你可以从你想看的项目中选择一个你可以看到这个小文本剪辑,它会给你一个简短的信息你可以看到所有这些安全问题的分类级别以及资源是什么。
你找到它了。这个组件是什么,这里是一个Debian:buster Docker映像,它被用于我创建的Docker映像。它基于这个组件或者包含这个组件,Debian:buster,你可以点击这里,你会看到影响图,它在Debian:buster IP表二进制中,在我的图像中的Docker层中。这里有一些额外的信息,好处是所有这些都可以通过REST获得,这意味着如果你想要这些信息用于你的报告系统或其他你想要做的事情,或者你想要触发一些外部的其他基础设施部件,你可以通过REST来做你可以消费这些信息,或者你可以触发一个webhook。这是一个web UI,也是Xray的核心功能。
我们已经看到了如何通过Web UI结合使用Artifactory和Xray现在我想谈谈集成的力量因为这是一个很大的话题。首先,我假设你有某种现有的基础设施,以及如何将其集成到现有的基础设施中,如果你有,例如,处理第三方产品的合规性,审计和我之前提到的所有这些东西,每个信息都可以通过Rest API获得,你可以触发Hooks web hook。hth华体会最新官方网站所以这意味着在你的CI管道中甚至不可能破坏一个构建,但你可以通过电子邮件通知,或者你可以开始一个webhook到外部进程,你可以让第三方产品抓取所有这些数据,从x射线中,从Artifactory中消费它们。hth华体会最新官方网站它可以用于报告遵从性报告,您可以启动基于Web钩子的动态工作流,所有这些东西都完成了,因此您可以真正集成所有这些东西。
好事是,所有产品都可以作为软件作为服务以及Onhth华体会最新官方网站-Prem的好处是,你可以把它所以你不必决定首先如果你想要软件作为服务或On-Prem你甚至可以混合起来如果你有一些特殊的需求你可以决定为每一个组件,如果是,软件即服务解决方案,如果是在云中托管在某种程度上如果亚马逊(AWS),谷歌(GCP)、微软(Azure),不管怎样,你需要的部分肯定在你自己的网络中。
最好的是,如果你自己尝试自己尝试意味着你去m.si-fil.com/platform/free-trial这就是我现在给你看的URL,然后你可以为你建立一个整个系统,演示环境,我不知道,大概需要10-15分钟来完成然后你可以自己尝试这些东西。
例如,在创建一个试用版之后,您只需创建一个小项目,然后连接到这个Maven存储库,获取一个依赖项并检查关于它的可用信息。所以,这就是我准备的一个小项目,这样你就可以开始一个试验,在这之后,你可以克隆这个项目,将URL更改为Maven资源库_然后你可以在半小时内完成所有事情,如果你想的话。所以,我真的推荐它,因为这样你就会看到它的全部力量。非常感谢,如果你想联系我,最好的方式是推特我的推特账号是@SvenRuppert非常感谢你的出席,再见。

试试JFrog免费!