Git仓库中的文件加密

27

有没有内置或外置的方法可以加密存储库中的个别文件,只能由少数人访问。这些人在签入文件时,文件将自动加密,并在签出时进行解密。如果其他人尝试访问这些文件,则它们会保持加密状态。


我不知道有什么现成的东西可以做到这一点,但理论上,你可以通过 .gitattributes 和清洗和涂抹过滤器来实现这个目标。这只是一个小编程问题... - torek
请查看 https://github.com/AGWA/git-crypt - match
2
git-crypt - git-crypt 可以在 git 存储库中实现透明的文件加密和解密。您选择保护的文件会在提交时加密,并在检出时进行解密。git-crypt 允许您自由共享包含公共和私有内容混合的存储库。即使没有秘钥,开发人员仍然可以克隆并提交带有加密文件的存储库,git-crypt 会优雅地降级处理。 - phd
@phd:git-crypt看起来就是我想要的(除了他们显然比我更懂加密——我可以理解描述,但对于他们提到的证明一无所知,但它肯定听起来像是正确的想法)。 - torek
1
我在底层使用gocryptfs,而在挂载的明文驱动器内使用普通的git。 - Martin Meeser
@MartinMeeser 关于gocryptfs,gec 在其基础上使用外部的git仓库。 - Asclepius
3个回答

18

我知道我的回答有点晚,但是有很多替代方案可以将秘密信息存储在git仓库中:

  1. Git-crypt
  2. BlackBox
  3. SOPS
  4. Transcrypt

其中大部分都使用GNU Privacy Guard(GPG),对称密钥加密和/或云密钥服务(SOPS)。如果你只想要一个简单的密码加密机制,你还可以看一下Ansible Vault,它不需要为每个账户生成密钥。


Git-crypt 简单易用。 - st0ne
2
Git-crypt自2017年以来没有发布任何版本。 - trash80
git-crypt 0.7.0于2022年4月21日发布,详情请见https://github.com/AGWA/git-crypt/releases/tag/0.7.0。 - mmoya

2
也许 Blackbox 会有帮助?
从他们的网站(https://github.com/StackExchange/blackbox):
“安全地将秘密存储在 VCS 存储库中(即 Git、Mercurial、Subversion 或 Perforce)。这些命令使您可以轻松地使用 Gnu Privacy Guard(GPG)对存储库中的特定文件进行加密,以便它们在您的存储库中处于“静止状态”。但是,这些脚本使查看或编辑时轻松解密它们,并在生产中解密它们。最初为 Puppet 编写,BlackBox 现在适用于任何 Git 或 Mercurial 存储库。”
“与所有文件共享一个 GPG 密码不同,每个有权限的人都有自己的 GPG 密钥。任何人都可以使用他们的 GPG 密钥解密任何文件。这样,如果有人离开公司,您无需向所有有权限的人通信新密码。只需禁用不再具有访问权限的密钥即可。这个过程非常简单,只需要运行两个命令(一个禁用他们的密钥,一个重新加密所有文件)。 ”

0
我创建了这个工具,以便更简单和幂等,因为Ansible vault没有提供确定性加密方法。它可能不是所有用例的推荐工具,但提供了一个非常简单的界面来进行数据加密。 https://github.com/shyce/shield

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接