了解你的依赖关系是良好安全实践的基础。GitHub的依赖关系图可以检测你的项目的依赖关系,并允许我们在其中发现漏洞时发送Dependabot警报。
到目前为止,GitHub完全通过对签入清单文件的静态扫描来构建依赖关系图。这限制了某些生态系统中图表的完整性。今天,我们发布了一个API,允许你直接向GitHub上传依赖性信息,例如,从你的构建工具上传。通过结合构建时间检测和静态扫描,GitHub可以提供一个更全面的依赖关系图,提醒你更多的漏洞,并在未来提供更广泛的生态系统支持。
超越对静态分析的依赖关系的警报
依赖关系图传统上支持软件包管理器,在那里可以从清单或锁文件中静态解析依赖关系。并非所有的软件包管理器都是这样工作的。有些软件在构建时拉入了额外的依赖关系,有些则有GitHub目前无法静态扫描的依赖关系声明。提交API补充了依赖图现有的静态扫描,为这些类型的软件包管理器提供支持。
获取依赖性扫描的全貌
如果你使用的是像Maven这样的软件包管理器,直接依赖关系在pom.xml中被定义,但横向依赖关系没有被定义,那么依赖图只能获得项目依赖关系的部分信息。当你不知道你所依赖的是什么时,你就会因为它们带来的任何漏洞而使自己面临风险。
让新的软件包管理器的依赖性扫描成为可能
对于其他软件包管理器,如Gradle和sbt,依赖关系不能可靠地进行静态解析。依赖关系是在构建时确定的,它们可以根据构建环境本身或非钉子的依赖关系在不同时间解决不同的版本而改变。通过提交API,你可以在CI工作流程中加入步骤,将最新构建的依赖关系提交给GitHub的依赖关系图。
向 GitHub 提交您的依赖关系
GitHub 的依赖关系提交 API 接受一个简单的依赖关系列表,该列表反映了你的仓库在提交中的当前状态。一个典型的流程是为你的仓库添加一个支持依赖性提交 API 的 GitHub 动作。我们正在推出支持Go的API动作,它增加了对反式依赖检测的支持,使你对Go的依赖有了更准确的了解,我们正在与社区合作,创建支持其他软件包管理器和工具的动作。请关注我们的博客,了解更多关于第三方集成的信息。
你也可以建立你自己的行动或直接向API提交依赖。提交与提交SHA相关联,需要以规定的格式进行。依赖关系提交工具箱可以帮助转换和提交,并且可以用来为你想要的软件包管理器制作GitHub动作。构建你自己的提交工作流程使你能够灵活地处理你的仓库设置中的任何复杂问题,并且具有同样强大的最终结果:一个更全面的依赖关系图!
在依赖关系图中查看已提交的依赖关系
依赖关系图将显示最近提交给你的版本库默认分支的依赖关系集。如果你的版本库有一个以上的工作流,为不同的软件包管理器提交依赖,那么每个工作流的最新提交将包括在你的依赖图中。
帮助我们改进依赖关系提交API
依赖关系提交API是一个早期测试版。我们正在努力改善提交、检索和查看依赖关系的体验,并将提供新的更新以改善整体功能。将来的改进包括查看已提交的依赖关系的元数据和访问历史提交,以及在依赖关系图场景中浮现已提交的依赖关系,如依赖关系审查和依赖关系洞察力。
随着我们的改进,我们渴望听到你的反馈,以使它变得更好让我们知道您是如何使用依赖性提交API的,以及您希望它如何发展。无论您是使用现成的操作还是建立自己的提交工作流程,您都可以使用GitHub讨论区留下任何和所有反馈。