【问题标题】:How to limit / stop golangs go tool from going to the internet如何限制/阻止 golangs go 工具上网
【发布时间】:2018-08-09 02:55:56
【问题描述】:

我们最近将 Golang 引入了我工作的公司以供一般使用,但我们在推出时遇到了障碍,因为 Go 可以使用 go get 命令从 Internet 获取包。通常,当我们推出 Java 和 Python 时,我们可以通过将包指向我们的内部工件来限制开发人员可以从何处提取包。

因此,对于 Python,我们可以通过将 pip 命令更改为从我们的内部工件中提取来更改它们从何处提取,而对于 Java,我们可以更改它们的 settings.xml 和 pom.xml 以指向我们的内部包。

我知道,在开发过程中,您可以将依赖项获取并拉入本地,然后将它们编译成独立的二进制文件。我正在寻找的是一种机制,可以阻止人们走出去并从开放的互联网中拉出来。

Go 中是否存在类似的东西?我可以阻止人们上网和go get'ing 包裹吗?

任何帮助将不胜感激。

【问题讨论】:

  • 您始终可以使用git clone your private repositories 而不是使用go get,并使其成为您团队的预期方式。
  • 是的。断开工作站/笔记本电脑/服务器的连接。如果你的公司允许 git clone go get 有什么问题?
  • go get 的全部目的是连接到互联网以获取依赖项。如果您不希望它连接到互联网,请不要使用它。其他go 命令不需要互联网访问。

标签: go


【解决方案1】:

这取决于您对“推出”的定义,但通常分为三个阶段:

  1. 开发 - 此时您无法阻止任意的go get 调用,除了将开发机器置于限制性代理或类似技术措施之后。
  2. 部署 - 由于 Go 程序可以(应该)部署为单个二进制文件,因此在部署期间根本不使用 go get
  3. 构建部署工件 - 这可能是您的问题:

通常的方法是在构建 Go 程序时不获取依赖项。取而代之的是,在开发期间获取依赖项,并使用vendoring(例如使用dep 工具)将其作为源代码树的一部分。

此时,构建步骤不再需要获取任何依赖项。现在,选择允许哪些依赖项成为您流程其余部分的一部分,例如代码审查。

【讨论】:

  • 好的,我们的打包团队最大的问题是,在开发过程中,他们可以上网下载任何包,然后将其编译成单个二进制文件,我们不知道该二进制文件中有什么可能(公司超过10000人,要管理的人很多)
  • @bR3nD4n 您可以运行 go list -f '{{ .Deps }}' binary 以查看该二进制文件中导入包的完整列表。您还可以将它指向一个目录以在源代码树中查看导入包的完整列表。
猜你喜欢
  • 2023-03-14
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多