透明的 Git 加密,用于存储库中的选择性秘密
在 Git 中透明地加密文件:文件在提交时加密,在检出时解密,使用 .gitattributes 标记受保护的路径。Andrew Ayer 创建了 git-crypt 以支持开发者和 DevOps 工作流程,集成 GPG 或共享对称密钥以实现多用户访问。关键行为包括在标准 Git 命令期间的自动过滤、本地专用加密逻辑,以及适合必须保持某些仓库文件私密而让代码可见的团队的选择性范围模型。
git-crypt 在仓库操作期间实际上做了什么?
git-crypt 钩入 Git 的过滤机制,因此标记的文件在提交时会经过加密,在检出时会经过解密。您可以使用 .gitattributes 条目标记文件,例如 secretfile filter=git-crypt diff=git-crypt,该工具仅加密这些文件,保持提交消息和元数据不变。CLI 在本地运行,不需要后台守护进程,因此仓库工作流和诸如 diff 和 merge 的命令对授权用户有效。
它会影响系统性能或正常 Git 使用中的工作流吗?
加密和解密作为 Git 现有操作的一部分进行,因此额外的工作在开发者的机器上进行,而不是在远程服务器上进行。由于 git-crypt 在本地执行处理并使用标准 Git 过滤器,它与现有工作流集成,并且不会引入需要联系的外部服务。对于大型受保护文件,预计在提交或检出步骤期间会有额外的 CPU 和 I/O,因为文件在客户端进行转换。
在团队环境中使用 git-crypt 安全吗?
该工具支持基于 GPG 的多用户访问和共享对称密钥,允许团队使用现有的 GPG 身份授予仓库访问权限,而无需共享单一密码。它以一种保护未授权协作者的加密二进制文件的方式运行,因此他们仍然可以克隆和提交非受保护的部分。需要仔细的初始配置:如果在 .gitattributes 生效之前提交了敏感文件,这些提交可能包含明文。
您需要高级知识才能正确操作吗?
git-crypt 是一个命令行工具,期望用户熟悉 Git 和基本的 GPG 概念。设置需要编辑 .gitattributes,并且对于 GPG 访问,需要将用户 ID 添加到仓库密钥环中。对于熟悉 Git 和 GPG 的团队,该工具作为一个设置后即忘的过滤器运行;对于技术水平较低的协作者,初始密钥管理和属性设置可能会带来学习曲线。
适合接受配置权衡的开发团队
git-crypt 适合需要选择性、仓库级别保密的开发人员和 DevOps 工程师,而无需外部保险库。它在本地执行加密,并与标准 Git 命令集成,但需要仔细的初始设置和 GPG 熟悉度,以避免意外的明文提交。对于准备管理 .gitattributes 和密钥的团队,git-crypt 提供了一种实用的方法,可以在保持正常版本控制工作流程的同时,将秘密保留在单个仓库内。