本文由 简悦SimpRead 转码,原文地址 opensource.googleblog.com
今天,我们很高兴分享一个探索性的可视化网站。开源洞察力
开源洞察力
谷歌多年来一直致力于软件供应链安全的研究,而横向依赖关系仍然是最复杂和最不被理解的方面之一。虽然我们将以各种方式把这些数据整合到我们的云计算和内部产品中,但我们相信在帮助开发者理解和可视化依赖关系方面有直接价值。今天,我们很高兴分享一个探索性的可视化网站。开源洞察,它提供了一个关于开源项目依赖关系的交互式视图。
在过去的几年里,软件开发实践有了很大的发展。分布式功能开发的合作开发,对开源和第三方软件包的消费,以及公开维护的软件库已经变得很普遍,部分原因是由于开源软件的广泛使用。开放源码的优势非常明显,以至于那些曾经拒绝开放源码的人和公司现在都把它作为他们环境中的一个重要元素。
但开源软件也带来了挑战。变化的速度很快,而且很难跟上。一个大型项目所依赖的软件包可能更新得太频繁,以至于无法清楚地了解所发生的事情。而这些软件包,反过来,可以改变它们的依赖关系,以提供新的功能或修复错误。安全问题和其他问题可能会因此而在你的项目中意外出现,而问题的规模会使这一切难以管理。即使是一个普通的开放源码软件项目也可能依赖于数百个软件包。
当然,有一些工具可以提供帮助:漏洞扫描器和依赖性审计,可以帮助识别一个软件包何时暴露在漏洞中。但是,要将大局可视化,了解你所依赖的东西,以及这意味着什么,仍然是很困难的。
Open Source Insights提供了一个项目的依赖性及其属性的可视化。我们的探索性网站可以用来了解一个特定的软件包是如何组合起来的。在其他功能中,它提供了交互式工具来可视化和分析完整的、反式的依赖关系图。它还有一个比较工具,可以突出显示一个软件包的不同版本如何影响你的依赖关系,也许是通过改变他们自己的依赖关系,增加许可要求,或修复安全问题。
Express 4.17.1的依赖关系图
Open Source Insights向你展示了关于一个软件包的所有这些信息,而不要求你先安装该软件包。你可以立即看到安装一个包--或一个更新的版本--对你的项目可能意味着什么,它有多受欢迎,找到源代码和其他信息的链接,然后决定是否应该安装它。Insights还通过显示依赖于你的项目的项目来帮助你了解你的项目的重要性:它的_依赖者_。即使是一个小项目,如果有大量的其他项目依赖它,无论是直接的还是通过横向的依赖关系,也是很重要的。
Open Source Insights持续扫描开源软件生态系统中的数百万个项目,收集有关软件包的信息,包括许可、所有权、安全问题以及其他元数据,如下载次数、流行信号和OpenSSF Scorecards。然后,它构建一个完整的依赖关系图--横向追踪依赖关系、依赖关系的依赖关系等等,并纳入元数据,然后公布出来,这样你就可以看到这一切可能对你的软件产生的影响。而且,它所提供的信息是不断更新的。
过滤后的依赖关系图显示了eslint 7.27.0是如何依赖粉笔2.4.2和4.1.1的。
这些信息可以帮助可视化软件是如何组合的,是否值得进行更新,或者如何修复一个问题。
今天,Open Source Insights支持npm、Maven、Go modules和Cargo。在我们努力增加其他打包系统的同时,我们想听听你的意见。这些数据如何能融入你的开发工作流程?怎样才能使它更有用?你可以联系deps.dev团队,分享你的想法;我们将在接下来的几个月里收集反馈,并期待听到你关于如何最好地改善供应链安全的想法。
请访问我们的网站deps.dev,试用一下。
来自谷歌云团队。这对GCP的开放云意味着什么
对于开源软件的用户来说,这可能是你第一次以有组织和可访问的方式看到依赖性和漏洞信息。如果你正在使用基于开源的管理服务,重要的是要记住,你可能不会受到列出的所有漏洞的影响。你的供应商可能已经采取了措施来加固你使用的产品,当一个新的漏洞被披露时,你的供应商可能会代表你负责修补这个漏洞。
谷歌云同时遵循这两个步骤,以帮助用户获得开放云的好处,同时优先考虑安全性。多层的加固创造了深度防御,这有助于保护谷歌Kubernetes引擎(GKE)、云运行和云功能等服务免受容器逃逸漏洞的影响。对于由用户负责的组件,我们不断推出新的服务,如GKE Autopilot,使这些责任自动化。
我们致力于保护我们的客户,通过我们的补丁奖励计划和最近推出的网络保险合作计划--风险保护计划,从责任共担到命运共享。我们期待着为我们的客户带来关于其开源依赖的新信息。
By Andrew Gerrand, Michael Goddard, Rob Pike and Nicky Ringland of the Open Source Insights Team.