首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git-crypt工作流-部署到多个服务器或循环/travisci

Git-crypt工作流-部署到多个服务器或循环/travisci
EN

Stack Overflow用户
提问于 2018-07-04 07:25:40
回答 1查看 849关注 0票数 5

试图理解基于git-crypt的秘密保存解决方案的完整工作流程。

在开发机器上,该工具本身工作得很好,甚至可以扩展到多个开发人员。

但是,我不清楚当部署到云上的多个服务器时,如何工作,其中一些是按需创建的:

  1. 在新服务器上无人参与地创建GPG密钥的挑战(有人需要创建密码,或者是在源代码管理中,而不是,这些都值多少钱?)
  2. 一旦GPG被创建,它是如何被添加到戒指上的?
  3. 假设我们决定跳过#1并在服务器之间共享一个密钥,密码是如何作为"git-crypt解锁“进程的一部分提供的?

我真的尝试过搜索,只是找不到一个好的端到端的工作流。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-10 14:51:20

和许多Linux一样,git-crypt是一个只做一件事情并且做得很好的例子。这种哲学规定,任何一个实用程序都不会尝试提供一整套工具或生态系统,而只是一个可以与其他任何您喜欢的功能链接在一起的函数。在这种情况下,git-crypt不会将自己定义为部署工具,也不会将任何特定的集成集成到工作流中。它的工作只是允许git存储库存储敏感数据,这些数据可以用于某些签出,而不是其他。用例可能会有所不同,使用其他工具的方式也会有所不同。

根据你问题的措辞,我也要澄清,git-crypt不是一个“保密解决方案”。事实上,它根本不保留你的秘密,它只允许你在你保存它们的地方乱搞。在这种情况下,它允许您沿非机密信息将秘密数据保存在存储库中,但这样做的代价是将保密负担置于另一个工具上。它用一个秘密来交换另一个秘密:你的项目的版本控制的秘密组件为一个GPG密钥。你如何管理秘密仍然取决于你,但现在你需要处理的秘密是一个GPG密钥。

秘密的掌握还是由你来决定。对于您和其他开发人员来说,这可能意味着在您的主目录中有一个GPG私钥文件,希望它受到一个密码的保护,该密码被输入到一个代理中,然后分配给调用它的其他程序,比如git-crypt

在能够自动将软件部署到服务器的情况下,某个地方必须有真正的秘密值得信任。这通常是顶级工具,如可抗木偶,也可能是CI环境,如Gitlab特拉维斯。通常,除了顶级部署工具之外,您不会信任任何东西,因为您知道什么时候应该在环境中注入秘密,什么时候不需要(或者在开发/阶段/生产环境中,哪些秘密需要注入)。

我不熟悉循环,但我知道Travis在您的projects Settings选项卡下有一个环境变量部分,您可以使用它将私有信息传递到虚拟机。有关于如何使用这个的一些文件。Gitlab在CI系统中的构建具有类似的东西,可以将不同的秘密传递给测试和部署环境等。

我建议您的工作流程最有可能的用例是:

  • 创建一个特殊的秘密变量,以便在生产机器上使用,该变量具有仅用于部署的GPG密钥的密码。无论您使用什么来创建您的机器,都应该将该密钥的副本放到系统中,并使用此变量来解锁并将其添加到代理中。
  • 项目的部署脚本将签出git项目代码,然后检查GPG代理。如果一个代理被加载,它可以尝试解密签出。

对于开发人员的个人机器,这将找到他们的密钥,对于自动创建的机器,它将找到部署密钥。无论哪种方式,您都可以像项目中的另一个开发人员一样管理对部署环境中的秘密的访问。

无论您使用什么工具创建机器,都会负责保存和注入秘密,可能是以私钥文件和环境变量中的密码(用于将密钥文件加载到代理中)的形式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51168048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档