用于公共存储库的 CircleCI 2.0 私有环境密钥

Posted

技术标签:

【中文标题】用于公共存储库的 CircleCI 2.0 私有环境密钥【英文标题】:CircleCI 2.0 private environment keys for public repos 【发布时间】:2018-01-14 12:00:34 【问题描述】:

我有一个 当前 私有的 repo。我的 Firebase 部署令牌作为 Env Var 存储在 CircleCI GUI 中。 CircleCI 2.0 文档明确指出

不要向公共 CircleCI 项目添加密钥或秘密

此外,从我在常见问题解答中可以找到的内容来看,如果相关的 GitHub 存储库被公开,CircleCI 项目就会被公开。

现在,我打算在 GitHub 上开源该项目,由于 CircleCI 项目将公开,它是否会使 CircleCI 中的 Env Var 对任何人可见?

如果 Env Var 是公开可见的,有什么建议的方法可以让我的部署令牌不被其他人看到?我是否必须求助于 GCP KMS 之类的解决方案?

【问题讨论】:

【参考方案1】:

听起来您正在将 CircleCI 用于您的存储库,但您的项目的开源版本不需要像 Firebase 这样的部署工具。如果这是正确的,那么您应该将 Firebase 部署令牌保存在对您来说方便且安全的地方。

听起来您现在可能只是将部署令牌直接保存在您的存储库中,因为这是私有的。如果您的存储库中只有少数秘密,git-crypt 之类的内容可能会满足您的需求。一旦你达到更大的音量,你可能会想要一些集中的东西,使用Cloud KMS to encrypt secrets 是一种选择。

【讨论】:

嗨@Maya,感谢您的回复。我更新了我的问题以澄清我的设置是什么。对任何混淆表示歉意。我会考虑您链接的选项,但如果您进一步了解 CircleCI 2.0 如何处理具有公共回购的项目的环境变量,我将不胜感激。【参考方案2】:

CircleCI 员工澄清了this for me on their forums。

该警告是针对 config[.yml] 的。您可以安全地使用基于 UI 的 CircleCI 环境变量。

如果 repo/项目是公开的,您只需确保:

分叉构建中的 envar 在设置中已关闭 您根本不需要回显/打印这些变量来构建输出,因为这可能对公众可见

因此,可以在 CircleCI GUI 中安全配置部署密钥的公共 repo(以及公共 CircleCI 项目)。

【讨论】:

以上是关于用于公共存储库的 CircleCI 2.0 私有环境密钥的主要内容,如果未能解决你的问题,请参考以下文章

使用标准库的 Python 中的私有/公共加密

apache_conf CircleCI 2.0配置,用于从PHPUnit到Code Climate获取代码覆盖率

用于依赖项的 Gradle 私有存储库

Bitbucket API 2.0 - 私有存储库列表

私有存储库的 GitHub 页面 [关闭]

用于存储简单数据的“公共静态”和“私有静态”之间的区别。啥是更好的? [复制]