包含敏感数据的私有和公共Git存储库敏感数据、Git

2023-09-03 10:43:42 作者:人野性子浪

我当前在Heroku上运行服务。 使用Heroku进行部署的方式是将代码推送到Git存储库,这会触发构建并随后部署新代码。 由于这是将您的服务部署到Heroku的唯一方法,因此git存储库包含大量敏感信息,例如几个配置文件中的令牌和客户端机密。 正因为如此,该存储库当前是私有存储库,但我希望将其设置为公共存储库。

通常我只会.gitignore配置文件并将其完全排除,但由于提交文件是将它们发送到Heroku的唯一方法,所以我不能这样做。

Git使用教程与基本原理

我想我可以通过拥有两个分支来解决这个问题,我只需将这两个分支推送到不同的远程,其中一个是发往Heroku的私有分支,另一个是GitHub上的公共分支。

在开发期间,我会推送到私有分支,然后将这些更改(不包括配置)合并到公共分支,一切都会很好。 遗憾的是,这样做会导致合并包含来自专用分支的所有历史记录,这将包括敏感数据,因此这是不可行的。

是否可以通过其他方式完成此操作?

我也愿意接受其他解决方案。 这些情况通常如何解决? 我觉得这不可能真的是独一无二的情况。

推荐答案

您可以使用Heroku的Config Vars来存储您的敏感数据。您将能够从代码中以环境变量的形式访问数据。

如今大多数云托管服务都允许您设置环境变量,因此good practice可以将其用于敏感值。

例如,您可以使用Heroku CLI设置环境变量,如下所示:

heroku config:set GITHUB_USERNAME=joesmith
大多数编程语言都提供了访问环境变量的方法。例如,对于Python,您可以使用:

import os
print(os.environ['GITHUB_USERNAME'])

无论您当前在哪里使用敏感数据,只需将其替换为环境变量即可。

环境变量的另一个优势是它们无处不在。几乎每个操作系统和云服务都支持它们,因此,如果您希望将项目开源并支持尽可能多的平台,则可以减少对它们的担忧。