在 GitLab 中安全地存储秘密和凭据

Posted

技术标签:

【中文标题】在 GitLab 中安全地存储秘密和凭据【英文标题】:Storing secrets and credentials securely in GitLab 【发布时间】:2020-04-06 19:10:33 【问题描述】:

我想知道是否可以在我的 GitLab 项目中安全地存储密码、令牌和密钥等凭据。

目前有一堆 Java 文件,其中存储了一些密码用于测试目的。但是,出于安全原因,我不想在我的仓库中推送这些信息。我尝试在项目中使用环境变量,但它们似乎只适用于 .gitlab-ci.yml 文件。

我的问题是,是否有人使用 Hashicorps 或 Blackbox 之类的保险库来加密敏感信息?

谢谢

【问题讨论】:

【参考方案1】:

您可以查看 GitLab 12.9(2020 年 3 月),它附带:

HashiCorp Vault GitLab CI/CD Managed Application

GitLab 希望让用户能够轻松地进行现代机密管理。作为 GitLab CI 托管应用程序流程的一部分,我们现在为用户提供在 Kubernetes 集群中安装 Vault 的能力。

这将支持在 Helm 图表安装中的项目级别安全管理密钥、令牌和其他机密。

请参阅 documentation 和 issue。


另请参阅GitLab 13.4(2020 年 9 月)

仅适用于高级/白银:

在 CI 作业中使用 HashiCorp Vault 机密

在 GitLab 12.10 中,GitLab 为 GitLab Runner 引入了获取机密并将其注入 CI 作业的功能。 GitLab 现在通过在 .gitlab-ci.yml 文件中构建新的 secrets 语法来扩展 JWT Vault Authentication method。这使您可以更轻松地通过 GitLab 配置和使用 HashiCorp Vault。

https://about.gitlab.com/images/13_4/vault_ci.png -- 在 CI 作业中使用 HashiCorp Vault 机密

参见Documentation 和Issue。

【讨论】:

【参考方案2】:

如果您没有在 GitLab 中使用环境变量,那么您是在询问是否可以在 GitLab 中存储机密。我自己没有这样做,但我发现了这篇关于它的帖子:

https://embeddedartistry.com/blog/2018/03/15/safely-storing-secrets-in-git/

作者提出了三种在 git 中存储秘密的方法:

Blackbox git-secret git-crypt

作者使用的是 BlackBox,但打算迁移到 git-crypt。快速浏览一下,git-crypt 看起来像是我可以自己使用的东西。

【讨论】:

以上是关于在 GitLab 中安全地存储秘密和凭据的主要内容,如果未能解决你的问题,请参考以下文章

GitHub的秘密扫描功能可能暴露PyPI和RubyGems的密码

什么是最安全的存储和使用API 密钥和秘密的方法?

詹金斯是否具有非秘密凭证等功能?

如何处理 Google App Engine 中的秘密?

如何使用存储在Vault中的github-private-key安全地使用大厅

JavaCard 存储(秘密)数据