DevSecOps -启动和运行与JFrog x射线

斯文Ruppert
DevSecOps

从DevOps到DevSecOps。区别在哪里,你需要什么?您如何开始,JFrog x射线如何帮助您?我们将在这次演讲中讨论和研究所有这些问题。DevSecOps这个术语在每个人的嘴边,但它主要被用作DevOps的同义词。我们将看到情况并非如此,差异在哪里以及如何显示。一个重要的观点是,它为什么以及如何直接使业务受益,以及当谈到软件开发中最有效的安全#ShiftLeft时,Xray的实际应用。

视频记录

大家好,欢迎来到我在DevSecOps的演讲“使用JFrog Xray启动和运行”。我是Sven Ruppert,是JFrog的开发者倡导者。我们今天想做的是,首先,看看DevOps和DevSecOps之间的区别,只是想知道痛点在哪里,你应该避免什么。在这之后,我将花几分钟谈谈为什么DevSecOps可以将项目中的风险降到最低,在这之后,我们将以开发人员的角度来看,开发人员在日常生活中会看到什么,在这之后,我们将有一些关于架构的观点,以及你在这里可以做什么,最后一个是如何集成所有这些现有的基础设施。

DevOps和DevSecOps的区别。如果你查看互联网,尤其是维基百科,你会发现DevOps是一个定义良好的东西。有很多关于它的书,有时你有不同的观点,这是什么?但是……最后,有一些关键点是纯DevOps的一部分。这意味着,我们正在关注从编码、过度构建和测试软件到打包、发布,然后再到运行的过程,所以这是对生产系统的配置和监控。如果你看这个,你会看到它纯粹专注于开发本身,所以它或多或少是一个通用的东西。所以没有专门的性能部分,没有专门的质量部分,也没有专门的安全部分。
那么这是什么意思呢?如果你稍微看一下DevSecOps的历史或者DevSecOps或DevOps是从哪里来的,你会看到大多数情况下,在公司中你有开发部分和运维部分。开发部分主要专注于编码部分,构建和测试,在所有这些都完成之后,你有了一个类似于存储库的东西,可能是人工的,还有这个打包的东西,运维团队可以用它来配置,测试,部署,做任何他们想做的事情。所以,这并不好,因为你有两个专门的团队,所以他们之间有一个很大的边界,所以让这个或多或少透明是有意义的,这样你就没有开发或运营部分,这意味着每个人都应该知道所有这些事情。
如果你在看这个,第一个问题是,安全本身的正确位置是什么?我们是否必须在这个管道中添加一个专用点来进行安全性测试?也许你会问,安全是否只是一种可以买到的产品。或者,安全是否意味着我要放慢生产速度,因为我现在必须做更多的事情——我的流水线上又多了一个项目?因此,如果您只关注安全性本身,并将安全性定义为管道中的一个位置,那么它对您的流程和业务来说并不是最佳的。那么,为了回答其中的一些问题,安全性是在测试之后进行的,例如性能或其他。
不,安全性不是您应该关注的管道中的一个专用步骤,安全性应该无处不在。雇佣一个有安全背景的人是没有意义的,他忽视了团队的其他成员,或者团队忽视了他,或者你想要的任何东西。
所以这不仅仅是雇佣一个人来负责安全,仅此而已。所以安全是团队自身的事情,如果你考虑开发者的感受,如果他觉得安全只是给他带来了严格的边界,那就大错特错了。它不会失去安全,安全是一种整合的东西,实际上,安全可能会给你比以前更多的自由。
因为,你可以更快更容易地做出决定,因为你知道会发生什么。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中添加用户名和密码,并检查你是否有连接到你的实例。
在我的例子中,它是一个Xray版本3.2.6,就是这样。现在,它是可用的这个功能在你的IDE中是可用的在这个演示中,我用的是Maven一个非常简单的Maven项目典型的工作流程是你开始添加一个依赖项之后,这取决于你的IDE,你必须设置你的配置你必须触发重新加载这个重新加载定义有些人默认激活它,然后自动加载我只是手动做所以,现在,IDE知道,我有这种依赖性commons-collections 3.2版本,然后我可以去我的插件已经选择了许可证信息所以我看到commons-collection,这个版本上运行theApache许可我可以看一看安全问题,所以如果这是没有你可以说有时重负载,有时它已经加载,有时你做手动那么你可以看到commons-collections,现在,这里有三个安全问题,最重要的是您可以在这里看到,如果每个安全问题都有一个固定的版本可用。
在此之后,您可以决定是否要将此修复为升级或降级版本号,或者如果您要修复传递依赖关系,例如,我有一些具有传递依赖关系的东西,让我们看看今天我的互联网连接有多快,所以我选择现在依赖从大一点的项目我mem重载这执行根据互联网连接你和……我并不是最好的所以需要几秒钟得到这个信息IDE能够负荷依赖性,这里有一些新的依赖关系树很高兴让他们有时候你不得不说,“好吧,现在请JFrog”虽然这,在你的项目中,任何依赖树都会连接到x射线实例,同样,它也取决于你的网络连接你会看到这里,组件,依赖关系在这里它是可变的如果你在里面点击,你现在可以在传递依赖关系中导航不同级别的绿色,红色或橙色如果你在这里检查,这个版本的vaadin图表正在消耗或者有Jackson core的传递依赖,这个版本的Jackson数据绑定和传递依赖来自Jackson数据绑定它们是绿色的,所以他没有问题。
但是杰克逊数据库本身有一些问题你有信息,里面有什么。好的是,你看这里是否已经有固定的版本,比如这个,我们到现在还没有固定的版本,现在由你决定是否要覆盖传递依赖如果你想要排除图表,因为你不使用它,或者你要使用不同的vadin版本,这取决于项目。
但总的来说,你有可能浏览整个依赖树。就是这样。因此,如果您只是在项目中添加依赖项,那么如果您有一些遵从性或安全性问题,您可以立即得到通知。这就是你的IDE集成。好了,在我们了解了IDE中可能的功能以及它对开发人员来说是什么样子之后我想讲的下一件事是架构如何集成所有这些东西。例如,如果你有这个Artifactory作为互联网的第一道屏障,所有东西都将通过Artifactory存储和加载,例如,在Maven依赖项上,你有可能Xray只是扫描所有这些内容,并将给你打破构建和所有这些东西的可能性。
你在这里做的一切都可以通过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,如果你想确保受感染或受影响的组件甚至不在你的存储库中,你可以在这里说,阻止下载。如果有些东西没有被扫描,如果你阻止yes/no,发布包也是一样,最常见的事情就是构建失败。
是的,我知道这可以从管线、TeamCity和Jenkins中使用,无论你使用什么CI。我只是生成了违例现在我的策略中有了这条规则我可以创建它下一步是创建一个手表。创建监视意味着将策略或之前创建的策略与您想要查看的资源连接起来。2022世界杯阿根廷预选赛赛程所以我会说,new watch,同样的,一个合乎逻辑的名字watch -demo,现在你必须决定你想要看的资源是什么。2022世界杯阿根廷预选赛赛程我只是选择这里的一些存储库例如,我有我的Docker你可以在这里过滤,例如,我有我的Bintray我的Docker远程,就是这样,现在这两个存储库被扫描了。
这意味着这个手表连接到这个存储库现在我要说明应该发生什么我只是选择我想要合并的策略,这里的策略演示现在与这个手表相关联我可以创建所有东西完成后,你可以在这个菜单中看到手表的概述你可以看到连接的资源你可以计算这里的违规数量,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开始到一个外部进程,你可以让第三方产品抓取所有这些数据,从Xray,从Artifactory获取数据。hth华体会最新官方网站它可以用于报告法规遵从性报告,你可以启动基于Web钩子的动态工作流,所有这些都完成了,所以你可以真正集成所有这些东西。
好事是,所有产品都可以作为软件作为服务以及Onhth华体会最新官方网站-Prem的好处是,你可以把它所以你不必决定首先如果你想要软件作为服务或On-Prem你甚至可以混合起来如果你有一些特殊的需求你可以决定为每一个组件,如果是,软件即服务解决方案,如果是在云中托管在某种程度上如果亚马逊(AWS),谷歌(GCP)、微软(Azure),不管是什么,你都需要在你自己的网络里。
最好是你自己试一下自己试一下意味着你要到www.si-fil.com/platform/free-trial这是我现在给你看的URL然后你可以打开整个系统,demo环境,大概需要10-15分钟完成然后你可以自己试一下。
例如,在创建了一个试用版之后,您只需创建一个小项目,然后连接到这个Maven存储库,获取一个依赖项并检查关于它的可用信息。所以,就是这样,我准备了一个小项目,这样你就可以开始试用了,在这之后,你可以克隆这个项目,把URL改成Maven存储库_,然后你可以在不到半小时的时间内完成所有的事情。所以,我真的推荐它,因为你会看到它的全部力量。非常感谢,如果你想联系我,最好的方式是推特,我的推特账号是@SvenRuppert,非常感谢你的出席,再见。

免费试用JFrog !