关于安全我需要知道什么?All Things Open 2022(罗利)

主讲人:Melissa McKay,开发者倡导者和Docker船长@JFrog

2022年12月28日

< 1

标题:一个易受攻击的开发者的自白:关于安全我需要知道些什么?
摘要:开发、运营和安全之间的界限已经变得模糊。最初是一种分而治之的方法,我们逐渐意识到,将不同类型的专业知识分离出来所产生的筒仓并不符合使用软件产品和服务的任何人的最佳利益。hth华体会最新官方网站特别是,安全性是需要在软件生命周期中尽早考虑的问题。但这对开发者来说意味着什么呢?关于安全性,开发人员需要了解哪些内容,其实际含义是什么?一开始可能会觉得难以承受,但不要担心!加入Melissa McKay,学习一些安全基础知识,以及有关免费和开源工具的知识,以添加到您的开发人员工具箱中。您将带着能够立即提供价值的知识离开,使您能够充满信心地继续编码,并提高软件的安全性。

查找有关All Things Open的更多信息:
网址:https://www.allthingsopen.org/

演讲者

梅丽莎·麦凯

    梅丽莎·麦凯

    Melissa是一名长期从事开发/软件工程师工作的国际演说家,目前是JFrog开发人员关系团队的开发人员倡导者,致力于用DevOps方法改善开发人员的体验。作为一名软件工程师,她的背景和经验涵盖了企业产品和服务开发和运营中使用的大量语言、技术和工具。hth华体会最新官方网站她是一位母亲,Java拥护者,Docker船长,即将出版的《DevOps Tools for Java Developers》一书的合著者,UNconferences的忠实粉丝,并且总是在寻找成长和学习的方法。她曾在Kubecon, DockerCon, CodeOne, JFokus, Java Dev Day Mexico, Great International Developer Summit上发表演讲,并且是JCrete和JAlba UNconference团队的一员。鉴于她对教学、分享和激励同行的热情,你可能会在会议上与她相遇——无论是在线的还是离线的!

    视频记录

    今天,请参观我们的展位,当我们完成这里,我也有一些很棒的
    贴纸你不能没有我这里有各种各样的粉丝俱乐部贴纸我
    我给《公主新娘》的朋友们准备了奇怪博士的贴纸,迭戈
    蒙托亚贴纸,我有星球大战贴纸和超级青蛙贴纸,来吧
    如果你们有什么想要的就来找我首先简单介绍一下我,我是Melissa McKay
    首先,我是一名开发人员,我已经做了20多年了
    两年前有幸成为一名演讲者让我们看看是什么时候
    我决定成为一名开发者倡导者,因为我已经准备好了
    很明显,这并没有发生,所以我得到了很多关于变焦的练习
    进行视频通话,视频会议,在线会议之类的
    我也是一个作家,在过去的几年里我和我的几个同事一起花了一些时间我们一起做了一个
    《面向Java开发人员的开发工具》一书
    我成为了一个Java冠军,同时也是一个
    Docker船长,所以我喜欢跟上集装箱世界的最新和最伟大的发展,我确实有一个演讲
    明天也会讲到容器标准给大家介绍一下
    今天我们要讲的是安全和
    顺便说一下,这是我的书当我开始写的时候
    谈到写这篇文章,我意识到我所关心的安全有很大关系
    作为一名开发人员,我有多关心开发
    我曾经在一个小组中被问到这个问题,这有点不同
    为什么开发人员要关心安全性为什么开发人员要关心devops结果是有一个
    有很多类似的原因,但我的意思是,我们已经被要求做很多开发商似乎正在接受
    我越来越清楚,当我加入一个开发团队时,我对所有的新工具都感到不知所措
    所有我需要学习的东西我都马上学会了
    穿上它,确保我们的管道为一个全新的项目启动并运行
    确保我们的构建服务器正常运行这些都是我没有的技能
    作为一名开发人员,随着时间的推移,我必须积累新的经验,所以当我们谈论安全性时,感觉
    就像又多了一件事,我想到的第一件事是,这不是一个安全团队吗
    专家,这是他们的工作,这是Ops负责的事情,当它发生时
    这是我们团队中每个人都需要关心的事情,也是开发者应该关心的事情
    在他们开发代码时,要注意并做好准备
    所以,与其责备别人,或者给别人指派任务
    所有的工作,或者当事情出错的时候,你知道,指责别人,我们确实有责任
    我们来谈谈不付钱的后果
    注意安全你可能会听到很多这样的
    如果你参加过安全会谈你可能会一遍又一遍地听到这些
    曾经发生过的攻击这次是相当严重的Equifax漏洞,它发生了
    是持续的,从2017年3月到7月,这真是一个
    但他们现在还在为此付钱他们被罚了很多钱
    清理成本14亿清理成本实际上是13.8亿消费者索赔
    嗯,1.43亿客户,而这仅仅是因为一个Apache
    人们知道存在的Struts漏洞,但在利用之前没有及时更新
    这是太阳风公司熟悉的另一个例子这是一个供应链
    当一个产品,这个软件的更新版本出现时,就会发生这种攻击
    给一群顾客买了,结果发现这不是这个软件的正版,这是
    相当严重,它给猎户座增加了大约4000行恶意代码
    这个二进制文件是在他们的CI系统上打开的,所以
    显然有一些安全问题,18000个客户收到了这个
    特别是有后门的更新
    然后我们有Shell日志,这是最新和最好的工作,作为一个Java开发人员,我真的很关心这个
    我检查了我所有的项目,确保我没有使用旧的版本
    所有这些都花了很多钱,背后的原因是
    因为我们的数据非常非常有价值所以我们投入了大量资金
    一开始,Equifax为此受到了相当严重的罚款
    同意支付5.75亿美元到7亿美元,如果先支付的话
    金额不足以支付所有索赔,你可能不知道的是,他们已经被罚款500英镑
    除此之外,还有1000英镑,这是一笔大买卖,还有其他一些大的东西
    家得宝在2014年发生了数据泄露,他们不得不支付至少134美元
    信用卡公司和银行因此损失了50万美元,2016年他们同意支付
    更多的钱1950万给了受影响的客户所以你可以看到这是持续的
    一直到太阳风我们还不知道是否会有钱
    这似乎仍在进行中,可能仍然会有一些钱从违约中出来
    另一个有趣的是2021年12月Capital one同意
    支付1.9亿美元解决一起数据泄露的集体诉讼
    2016年,优步有了大量的数据
    桥,这个很有趣,因为他们一开始没有告诉任何人,所以他们被罚款了很多
    然后,一旦一切都公开了,他们就会被罚款更多
    所以这需要投入大量资金,显然开发商也有一些优势
    他们能为解决方案做出贡献这张幻灯片你们知道我用过
    之前,你知道devops在devops领域的讨论,为什么要
    开发人员关心devops是因为所有的过程都涉及到所有的通信
    在不同的团队中,这与我们的安全需求非常相似
    我们的安全需求不能只局限于所有的左边或所有的右边不能
    就是在最后加上去的东西我是在最后进来的
    在之前的演讲中他提到向左移动是有代价的
    当然,在我看来,这在某些情况下是必要的,但也有适当的方法
    为开发人员实现这一点并不需要那么痛苦
    这就是我们将要讨论的四件事,我将从编写安全代码开始
    管理我们的依赖,负责任地构建我们的工件,这是很重要的
    这是我通过反复试验学到的,然后了解了如何保护和维护鸽子输送管道
    作为一名开发人员,这对我来说是新鲜的东西,在我加入开发团队之前,我经常处于
    写我的代码,提交它,这就是我所看到的,越过墙,别人的问题之后
    所以,由于所有这些违规行为,公司已经开始
    他们试图对开发者进行更多的教育,几年前我就开始了
    我们公司有安全培训吗有很多第三方培训吗
    组织愿意教开发人员,让他们更好地掌握如何编写代码
    我记得我参加的那个特别的项目你选择了你经常用的语言
    你会通过所有这些练习来学习我学到的关于跨站点脚本的所有东西
    了解了SQL注入,了解了ldap注入,了解了跨站点伪造,请求伪造和
    不安全的加密存储,之后我觉得自己很聪明
    我很确定我知道我在做什么,对自己很满意,继续认为我知道一切
    显然,这不仅仅是编写安全的代码
    有很多关于它的现在有很多资源来描述这些问题2022世界杯阿根廷预选赛赛程
    也存在这个页面,我发现这是一篇由一群人写的文章
    owasp组织(wasp代表开放web应用程序安全项目)
    是一个致力于开源项目的非营利性基金会
    为了提高我们所有人的安全性,他们试图让自己成为供应商
    不可知论者,这篇文章很有趣这里有几件事让
    我笑着说,这篇文章的写作方式就像如何编写不安全的代码一样
    与所有安全书写规则相反这些是一些有趣的点
    我喜欢安全语言,我以前听过这样的争论,哦,我的程序
    在Java中,我们没有安全问题,然后你知道,shell被锁了,然后你知道
    在rust中编写程序,或者我,你知道我很特别,从不写
    代码或使用的语言有任何明显的问题,这不是真正的混合
    我也喜欢这个,让我们看看我能成功地写多少种语言,并且能够知道
    安全模式,足以通过我所有的安全考试
    当我开始为容器编写Docker文件时,每种语言都有这个问题,这很有趣
    活动,稍后我们会看一个假的Docker文件,然后简单介绍一下我
    马上就看到了,这是更多的,我喜欢这个依靠安全的
    在别处做的检查有人在某处做安全检查所以我不需要担心
    这是非常好的和信任内部人士
    有一个非常真实的例子,恶意输入来自a内部
    公司这是一个大问题,代码想要免费投放
    源代码存储在公司内部所有人都可以访问的存储库中,这是我们真正感兴趣的
    因为多年来我一直在使用人工制品,而我自己都不知道
    那件艺术品是jfrog的一部分,我现在为jfrog工作
    但是作为一名开发者,我没有权利或许可去真正了解那里发生了什么
    所以当我加入一个开发团队的时候
    我意识到我需要一个放东西的地方,如果你有这样一个抽屉的话
    你的厨房里什么都有有订书钉橡皮筋胶水
    一把剪刀,可能是便利贴,呃发夹
    这就是我们的仓库的样子因为我不明白它背后的目的保存所有的
    这就组织了将一个存储库与另一个存储库分开的目的,该目的是基于它是否是产品
    存储库与QA或测试存储库或注册中心,这些都是
    我们需要考虑的事情当我们设置这些东西的时候,我们要保持自己的组织,也要设置
    这些东西的权限是非常重要的,我会讲到
    我们稍后再讨论这个问题好吧,我让你们去读剩下的部分
    如果你喜欢讽刺的话,你可以自己写一篇很好的文章
    首先,开发人员需要管理他们的软件依赖关系
    不要过多地讨论依赖关系在我看来,这对
    我知道,作为一名初级开发者,这可能是你在一段时间内不会接触到的东西
    因为我记得我大学毕业后的第一份工作是实习生
    被安排到一个项目中,给了一个脚本来构建和运行,就是这样,我呢
    我只是很兴奋地开始开发一个功能,开始修复一个我没有花足够时间理解的bug
    这个构建在幕后是如何工作的
    你们中有多少人使用maven, Gradle
    NPM啊,可怕
    派,派,好吧,很酷,这很可怕
    这个特殊的图形被过度使用了但是软件的概念是由大量的
    开发人员没有第一手知识的组件不能被低估为应用程序和服务
    今天构建的程序比以往任何时候都要复杂
    我们不想重新发明轮子,我们想要尽可能高效,我们想要完成我们的工作,我记得一个
    我的老板告诉我,他的目的是雇用懒惰的开发人员,因为他们是
    最有效的结果是一个相当懒惰的开发人员,所以我做得很好
    问题是许多像我们刚才讨论的包管理器使这一切变得如此容易
    我们使用它们来收集幕后所需的一切,包括Maven Gradle和PM
    Pepi等,有时我们会被传递依赖绊住
    不幸的是,许多软件可能仍然受到Shell日志的影响
    仅仅因为该项目不直接拉入该库,但它可能会拉入它作为一个
    传递依赖间接地有可能是一级依赖
    实际上是把它作为依赖项
    而且,能够使用这些包管理器来为我们处理所有这些的便利性
    [音乐]它们让我们看不清实际发生了什么这些依赖关系是怎样的
    除非您另有指定,否则这些包管理器是所有的
    将从公共存储库收集,除非您配置它们
    否则,这意味着现在有大量的开发人员在他们的平台上运行Maven构建版本
    机器,他们直接访问Maven中心,在PM中他们正在构建他们的节点应用程序
    直接进入公共NPM注册表并不重要
    如果他们使用的是Nexus或者其他设备,就会使用artifactory
    它们可以帮你管理这些依赖关系如果你不配置它们它就不会
    发生在魔法中,所以这里有一个例子
    这些实际上是从默认的Docker中提取的,当你运行时,Docker也是一个大的
    它是从Docker公共注册表中提取的,请注意
    这就是发生的事情,除非你配置一些不同的东西
    嗯,解决这个问题很简单,就像我说的,你可以建立人工的Nexus Harbor,任何一个都可以
    将它们设置为只从这些公共存储库中提取
    您正在寻找的特定依赖项或包尚未可用或在内部某处缓存
    听起来不错,但有个问题
    这就是为什么我担心我们大家不加思考地使用npm
    到目前为止,我们已经成功了,这个问题已经存在很长时间了,但在2021年,亚历克斯·博雅森
    有没有很好地描述过这个问题,它被称为依赖混淆
    它描述了他是如何入侵苹果、微软等十几家公司的
    其他公司使用新的供应链攻击
    它的描述是这是一个典型的Json文件
    描述了特定项目需要构建的包,我已经突出显示了其中的一些
    请注意,这些的版本控制方案表明任何更大的
    在这种情况下,指示的版本是可以接受的
    有一个可用的更新,保持更新是很好的,我们想要保持更安全
    随着这些更新,这里有一个问题,如果这个项目的构建
    是这样配置的:如果一个包在本地不可用,那么
    默认行为是访问公共注册表,这听起来不错,但如果这些
    突出显示的包名实际上是内部包名,它们不应该在public中可用
    注册表,结果是任何人都可以发布
    使用尚未使用的任何名称向公共NPM注册中心提交包
    所以如果你有内部包名并且它们没有在
    公共注册表有可能有人可以为你创建一个
    现在你有麻烦了这就是你想要的公司图书馆
    让别人发布了一个很棒的更新,而你却得到了那个更新
    不合法,然后你不知道会发生什么,当你把它拉到你的项目中并运行它
    所以预防这种情况的一种方法是确保你永远不要去
    内部包名称的公共注册表确保您没有忘记在默认情况下配置该步骤
    不是事情如何运作的[音乐]这里有另一个例子
    嗯,只是构建其他工件,这可能是一个问题,这是一个人为的Docker文件,它说明了一些
    我自己在打包我已经创建的应用程序时遇到的问题,所以这对我来说是新的
    我非常了解如何使用Docker文件构建Docker容器
    照顾好我的Maven项目我的Java项目我确保一切都是内部的
    我保护了所有这些,但最后我需要把它们放在云端,所以我最后把我的
    如果你在网上查找Docker,你可以在这个Docker镜像中找到它
    你会看到和这个很相似的东西第一个问题就是我说的第一行
    关于从公共注册表中提取,第一行是从docker公共注册表中提取的,如果你不知道的话
    父母的形象是什么你怎么能认为这是安全的
    确保你要做的任何事情都是你知道的至少已经说过或者已经说过了
    关于它的文档确保你已经深入到那个图像中确保它有你想要的东西
    确保你在扫描那个图像还确保你能在本地内部获取父图像
    我知道当Docker决定放
    对拉取请求的一些限制有很多CI服务器被配置为总是从
    Docker hub,你可能会想一旦映像构建好了就不用再构建了有缓存,但是想想
    CI服务器是如何工作的很多时候,我们故意擦去缓存,因为我们希望它是新的构建,所以每次
    每次每个人提交一个需要构建的新映像时,都需要从Docker Hub中提取,因此需要大量的CI
    当流被切断时,服务器在继续构建时会遇到一些麻烦
    所以不管你用的是什么父图像拉进去确保你有它
    从第二行到第四行,我们不仅有一个家长
    图像我们不确定,但它没有我们需要的一切,所以我们决定扔一些包在那里
    确保我们真正关心的应用程序可以正常运行,注意没有版本控制
    有些包可能是旧的这很容易
    错过了你知道在项目的回顾中你知道确保你是
    响应任何um漏洞通知或类似的内容
    确保您更新这些映像,这些额外的包可能应该放在另一个
    父母的形象和组合也许是由平台团队维护的
    了解所有开发者都可以使用的东西,这将是管理这些更新的一种方法
    确保底图是可以使用的东西
    第6行实际上是一个很大的效率和性能问题
    你没有使用git忽略文件当我第一次开始使用Docker文件时,我不知道我会得到一个
    Docker忽略文件抱歉,我不知道它的存在,它非常类似于git忽略文件,当你
    有这样一个复制语句你要从你知道的工作目录复制一堆文件
    在最后的图像中并且当它启动时在容器中可用
    复制所有东西想想你在复制什么你可以复制测试代码
    复制甚至不应该复制的环境配置
    在生产映像中,您可以复制。get目录,即
    可能不是最好的事情在我经历的过程中我注意到那里发生了很多事情
    这是我的构建花了很长时间,这是因为所有的材料必须传递给docker守护进程
    为了让它在构建过程中可用,这个过程需要很长时间,很多不必要的活动
    如果你复制了你不应该复制的东西,可能会出现安全问题
    嗯,第七,我经常看到这个,我在很多例子中看到,在第二行
    Docker文件,我记得我特别使用了这个,因为在我们的案例中,我们必须安装一个
    我们花钱买了一些软件,这就是我们如何做到的我们从他们给我们的链接上抓取了脚本
    把它卷进去,然后运行脚本然后我们的专有软件
    安装了这个问题,不,我们有足够的责任
    至少看一下剧本,但你认为这种情况发生过多少次,甚至没有人看剧本,他们
    只要运行它,你只要提供一个curl语句,你只要运行它,如果你这样做可能不太好
    最终发生的事情发生在我们身上,因为我们忽略了很长一段时间,这是我们的构建
    失败了,花了一点时间研究我们的构建失败的原因,结果发现它不再可用
    它是从我们使用它的公司的某个存储库中提取的
    不再使用了他们选择用它做别的事情把它放在别的地方这种事经常发生,所以
    每当你把你的东西,你需要建立你的项目在手中和责任
    对于一个外部团体来说,要做好事情随机失败的准备
    你这么做了,不同的地方越多,你遇到的问题就越多,所以至少要带上那个剧本
    在公司内部自己管理,按照自己的时间表更新,而不是按照别人的时间表
    我不知道你们中是否有人厌倦了电脑不断弹出窗口
    你知道这个东西现在在更新这个东西现在也在更新我就像我在这里演讲,我不
    我想要这个马上更新我想要控制这个我知道很多开发者关闭了这个
    我对我需要的东西也有同样的感觉
    可靠性将建立在我的时间表上,好吧,最后一个
    第九行运行是根,要遵守最小特权原则
    并且让脚本只拥有它实际需要的权限
    设置用户和组是很容易的确保你在这样做
    这些只是我在Docker中经常遇到的几个问题
    文件绝对不是一个详尽的列表,但它是一个很好的开始
    因为我关心的是容器和Docker映像,所以我们来回顾一下
    确保您使用的是可信的或官方的基础映像,不要使用庞大的父映像,使用多级构建
    这意味着你要确保你的形象中没有包含你知道的构建工具和东西,这不是真的
    必要时指定所有需要包含在映像中的包的所有版本,使用Docker忽略文件
    获取外部资源,在内部管理,不要跑路2022世界杯阿根廷预选赛赛程
    以root的身份处理上次姐姐做的报告
    um Cloud原生安全和使用报告称,在他们观察的300万个容器中,有76%的容器
    他们以root的身份运行进程,所以我觉得很抱歉一直在重复这个问题
    时间,但很明显,我们对这个问题不够重视
    好了,处理我们已经构建的依赖关系和工件
    这张幻灯片我经常在我们公司的甲板上看到我不希望你们能看到所有的
    这些都是很小的东西,但这基本上就是软件开发生命周期的全部
    从开发人员到部署到生产的过程中,它不包括监控和其他所有的东西
    发生在您部署到生产环境之后,但是看看我们关心的所有这些地方
    关于依赖关系和工件这是第二步这是一个开发人员解析依赖关系
    这是从远程存储库获取这些依赖
    这是另一个,这是我们的CI服务器再次解析依赖项
    每次你签到的时候我们都会在最后完成一个
    现在我们有了这个工件我们需要把它放到某个地方我们需要把它部署到某个地方,这样它就
    可供以后使用,以后的使用可以是提供分发
    在其他地方或实际部署到生产机器或服务
    所以从技术上讲,你看到的任何一条绿色的连接线都是an
    在构建和交付过程中出现中断的机会,所以我们需要关注我们必须讨论的问题
    更多的依赖关系和我们的工件以及它们如何在系统中移动还有效率问题
    安全问题需要我们注意,谢谢
    这是上一张幻灯片中管道的简化版本所以我们显然应该关注
    我们刚刚谈到了我是如何在本地开发环境中直接从Maven中提取内容的
    并直接从npm注册表中获取这些东西
    有时候我们需要能够重现一个构建来修复一个bug
    我们在生产中看到的,所以我们关心我们的依赖关系和我们的工件来自哪里
    我们每天所做的是排除故障,重复构建和设计,然后从头再来吗
    在持续集成中,我们谈到了一些CI服务器配置错误
    因为他们会在真正需要的时候不断地向公众回购
    你知道只有当它没有被缓存或者当工件没有被缓存的时候才会这样做
    已经在系统中可用然后最终我们想要存储我们的
    构建成功的工件,我们需要考虑我们把它们放在哪里
    当我们进行测试时,我们需要移动那些工件,它们不应该在此时被重新构建
    在持续集成中构建它,也就是说,你拿着那个工件,然后在其余部分中推广那个工件
    你的管道,直到它没有通过测试或任何其他的,然后最后
    它可以被推广到生产中,所有的东西都被检查过了,所有的东西都是绿色的
    这就是我们的释放,当我们把释放放在一起,我们想要
    确保我们收集了正确的工件我们用一个有意义的包来包装它们
    最终,我们希望能够部署这些工件,而不是意外地部署一些东西
    这可能是无意中和其他东西放在一起的
    厨房里的那个杂物抽屉我们要确保我们拿到的是正确的藏物
    所以你看到的任何一条绿色的连接线都可能是a
    问题是,这就是规格
    萨尔萨有谁听说过萨尔萨舞用过它好吧,它只是
    基本上描述了软件的供应链层次
    工件基本上就是最佳实践你如何处理所有这些
    行为和任何你看到这个红色三角形的地方都可能是
    现在的问题是,作为开发者,我们会更关注离我们最近的东西也就是所有依赖项
    我们在构建的时候解决了然后是源代码
    那么我们的CI服务器我们肯定会关注这些
    需要加强的最关键领域之一是在持续集成期间的构建过程,确保
    您导入的依赖项正是您所期望的,它们需要是预期的版本
    嗯,你需要验证它们是可信的依赖,而不是碰巧有相似名称的恶意包
    还记得太阳风被黑吗,我们刚才说的显然是他们的更新服务器他们最后被黑了
    当他们准备好向所有客户提供生产资产时,这一步被打断了
    他们的更新服务器可以使用密码solarwinds123公开访问
    如果你是新手,你就会犯错误,我做了一些尝试和错误,就像我用Docker展示的那样
    你能做的最重要的事情就是确保你能快速地对问题做出反应
    就像开发人员一样,我们被告知,我们永远不可能生产出百分之百没有bug的应用程序
    如果你没有做足够的测试那是不可能的,不可行的
    这都是一种平衡行为,但当你发现漏洞时
    问题和它会发生,确保你的过程是这样的,你可以立即作出反应,迅速得到你的
    东西更新了这就像维护房子一样永远都做不完院子里总有清理的时候
    我回到家,我要为冬天打扫我的院子,期待着如果你有屋顶可以修理
    冰雹风暴就像我住的地方,那里的热水器会爆炸这些事情会发生,也会发生
    软件,所以确保你花了钱来维护所有的东西,确保你的版本
    你在你的过程中花时间更新你所有的
    包只是为了确保您在这些问题之前保持领先
    快速回顾一下开发人员如何提高安全性所有这些我们都可以专注于编写安全的代码,确保
    你正在利用可用的资源来学习你所使用的特定语言2022世界杯阿根廷预选赛赛程
    要确保适当地管理依赖关系,需要关注哪些模式
    负责任地构建您的工件,就像我们刚刚看到的Docker文件一样,然后理解保护和
    维护你的开发交付管道,这意味着你不能更新你的东西
    自满,认为如果它只是没有坏,我没有什么可担心的,你可能有一些钱
    如果你沿着这些思路思考,你就会得到回报一些工具
    开发者可以在现实生活中使用这是frogbot很可爱很酷的开源软件
    项目中它使用jfrog x射线扫描漏洞,这是一种为您提供的方法
    管理漏洞,在提交源代码时检测它们
    当我使用一个新的Docker时,我经常使用这个
    镜像或创建一个或修改我一直在使用的Docker文件,我将在本地扫描它
    使用Docker桌面jfrog有一个插件可以帮助你
    有很多其他的扫描器可用,我们没有理由不这样做,关注这些变化
    在我们入住之前,我们就已经在我们的环境中做了
    这是另一个处理供应链安全的开源项目,我今天穿的是波斯t恤
    我们的展台上也有一些,这是一个正在CD中孵化的项目
    有多少人听说过CD基金会
    有多少人听说过CNCF CNCF是云原生的
    一般大家都听说过它,它很大,在kubecon后面
    CDF是持续交付的基础,它主要关注
    开源项目涉及到持续交付,所以这两个组织的实体要小一些
    它们是Linux基金会的姐妹组织,有很多合作的机会
    参与了这些项目波斯是其中之一波斯是一个开源项目
    基本上创建了一个分散的软件包网络,具有完整的来源
    作为开发人员,你所依赖的所有构件都是从Docker容器开始的,以确保这一点
    你可以相信你得到的Docker容器是
    Docker映像,这就是你所期望的,它基本上必须工作
    基于这种去中心化的思想,使得有多个可信节点必须
    我同意这个特殊的藏物就是它所说的那样是为了防止
    你知道有人试图插入一个不合法的包装
    这也适用于像go这样的语言
    直接从源代码构建,所以一个想法是这个分散的注册表
    会有几个可信的节点来构建这个源吗
    源,并确保哈希是相同的,如果它被标记为ok
    未来使用那件藏物是安全的
    嗯,有趣的是关于希腊起源或波斯的琐事,它与你有关
    知道灯光信息,多个山脉之间的多个信息,确保
    每个人都同意,事情正在按他们应该的方式发展
    我们已经讨论了一些安全模式,在展台上有更多关于波斯的信息
    随着这个项目的发展,我将会越来越多地谈论这个问题
    寻找贡献者哦,还有一件事我想分享
    这真的很酷
    然后我会开始提问这是我的IDE我用的是IntelliJ这是我的
    我们现在看到的是一个项目的文件
    这是一个春季靴项目,我一直在摆弄它,试图让它变得更好
    我在这里连接的一个东西是一个插件,它是安全的
    漏洞插件,告诉我是否有任何问题的包
    我把这些库放到这个pom文件中真正酷的是在我做任何改变之前
    或者检查这些代码,我知道有一个更好的版本
    spring boot starter parent就放2.7.4吧,我会更新的
    看看它,我可以告诉你,确实有改进,不是完美的,但它已经改进了
    开发人员甚至在检查代码之前就可以在开发环境中正确地做一些事情
    帮助帮助整个过程,这样就不会立即被标记
    在生产的最后,这只是一个可以做什么的例子
    这是jfrog插件jfrog IDE插件,它支持多个id
    这是我今天的选择
    是的,是的,它是公开的,它在x射线上进行手术,这是
    jfrog的产品,但它是免费的,有一个免费的可用版本
    这很好,如果你要作为一个开发者,你可以设置你的
    自己的实例,并能够使用它来解决您的大部分问题
    分析起来也很有趣,如果你有一个专职的安全团队,那很好
    如果他们制定了政策,在你看到它之前过滤掉一些东西,因为真的
    看到所有这些红色的开发人员可能会有点不知所措,其中一些并不适用于您想要做的事情
    确保你们注意了分析这没关系这也是作为
    插件里的解释你就能知道你是否知道了
    通过上下文来判断这是否真的是你应该关心的事情
    好了,就这些,今天我要讲的就这些
    如果你想联系我,我的推特账号是Melissa J McKay
    嗯,我正在申请另一个社交媒体账号,我赌了很多
    我以后会把它放到我的幻灯片里但是现在
    在那里你可以找到我别忘了贴纸酷J青蛙贴纸