你如何处理公共git仓库中的敏感数据?

orl*_*rlp 21 git sensitive-data

当你将代码保存在公共git仓库中时,如何处理秘密API密钥,哈希盐等敏感数据?

显然,将敏感数据保留在代码中会对其造成损害.

另一种解决方案是不对代码中的秘密信息进行硬编码,而是将其存储在独立文件中并对文件进行gitignore.这样做的缺点是,当有人第一次提取您的代码时,秘密信息将会丢失,并且不会开箱即用.这可以通过在代码中编写"初始化,如果缺少"例程来解释,但是然后你让git系统滑入你的代码,这对IMO来说不是一件好事.

另一个解决方案是制作一个"默认"秘密信息文件,在项目开始时提交它,然后使用您自己的信息而不提交它.但这可能会让git抱怨你在拉动时有未提交的更改.

那么处理这个问题的常用方法是什么?

lis*_*nko 9

尝试将.gitattributes用于配置了加密/解密过滤器的路径:

*secure.yml filter=crypt
Run Code Online (Sandbox Code Playgroud)

并在.git/config中添加crypt过滤器的配置:

[filter "crypt"]
    clean = openssl enc ...
    smudge = openssl enc -d ...
    required
Run Code Online (Sandbox Code Playgroud)


sim*_*ont 2

最好的解决方案是私有git submodule和公共 git 存储库。

请参阅此问题以获取更多信息;给你一个很好的报价:

当您排除或忽略时,您只是阻止将文件添加到存储库中。存储库中甚至没有任何“敏感文件”文件,只是在您的工作目录中。