Golang 1.13 模块镜像,索引和校验数据库现在可以投入生产了


上周,Golang团队宣布Go module 镜像,索引和校验数据库现已投入生产,从而为Go生态系统增加了可靠性和安全性。 对于Go 1.13 模块用户,go命令默认使用模块镜像和校验数据库。

适用于Go 1.13 module

module 镜像

module 镜像是一种特殊的模块代理,它将元数据和源代码缓存在自己的存储系统中。 这允许镜像继续提供原始位置不再可用的源代码,从而加速下载并保护用户免受消失的依赖性。

根据团队的说法,模块镜像在proxy.golang.org上提供,go命令将默认为模块用户使用Go 1.13。 对于仍在运行早期版本的go命令的用户,他们可以在他们的本地环境中通过设置GOPROXY=https://proxy. golang.org来使用此服务。

模块索引

模块索引由index.golang.org提供。它是通过proxy.golang.org提供的新模块版本的公共源代码。模块索引对于希望保留自己在proxy.golang.org中可用内容的缓存的工具开发人员非常有用,或者能够及时了解开发人员使用的一些最新模块。

校验数据库

模块引入了go.sum文件,源代码的SHA-256哈希列表以及首次下载时每个依赖项的go.mod文件。 go命令可以使用这些哈希来检测原始服务器或代理的错误行为,该服务器或代理为同一版本提供不同的代码。但是,go.sum文件有一个限制,它完全基于用户首次使用的信任。当用户添加以前从未见过的依赖项的版本时,go命令会获取代码并快速向go.sum文件添加行。问题是那些go.sum行没有被别人检查,因此它们可能与go命令刚刚为其他人生成的go.sum行不同。

校验数据库确保go命令始终向每个人的go.sum文件添加相同的行。每当go命令收到新的源代码时,它都可以针对此全局数据库验证该代码的哈希值,以确保哈希值匹配,从而确保每个人对给定版本使用相同的代码。

校验数据库由sum.golang.org提供,构建在由Trillian支持的哈希的透明日志(或“Merkle树”)上,Trillian是一个透明,高度可扩展且可加密验证的数据存储。 Merkle树的主要优点是它具有防篡改功能,并且具有不允许不被发现的不良行为的特性,使其更加值得信赖。 Merkle树在将新的go.sum行添加到用户模块的go.sum文件之前检查包含证明(如果日志中存在特定记录)和“一致性”证明(树没有被篡改)。

这个校验和数据库允许go命令安全地使用其他不可信的代理。因为它上面有一个可审计的安全层,所以代理服务器或源服务器不能故意、任意或意外地开始提供错误的代码而不被捕获。

要详细了解此新闻,请阅读官方博客文章。

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-09/160490.htm

相关内容

    暂无相关文章