包含敏感数据的私有和公共Git存储库 [英] Private and public Git repositories with sensitive data

查看:0
本文介绍了包含敏感数据的私有和公共Git存储库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

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

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

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

推荐答案

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

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

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

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

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

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

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

这篇关于包含敏感数据的私有和公共Git存储库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆