首页/开发/CI/CD 与发布速查/git-crypt 透明加解密
环境与配置管理60 条

git-crypt 透明加解密

按 .gitattributes 规则让指定文件在提交时自动加密:本地检出可透明使用,适合中小团队的敏感配置仓。

CI/CD 与发布速查开发更新于 2026-10-13

git-crypt 是什么

git-crypt 让仓库里指定的文件在提交时自动加密、检出时自动解密:通过 .gitattributes 声明加密范围,成员本地透明使用,适合中小团队托管敏感配置。它做的是文件内容的对称加密,不改变 Git 工作流;权限控制是整仓密钥级,细粒度分级权限要靠其它方案补足。

基本信息

机制对指定文件内容做对称加密;密钥分发给协作者(GPG/SMIME 或对称密钥文件)
声明在 .gitattributes 中写 filter=git-crypt diff=git-crypt
优点工作流透明,成员无需改变工具习惯
局限全仓单密钥、历史重写成本高、细粒度权限弱
常用命令init / lock / unlock / export-key / add-gpg-user
适用中小团队、敏感配置数量有限的仓库

初始化与加解密

初始化与加解密
git-crypt init  # 初始化密钥
# 或 git-crypt add-gpg-user 绑定 GPG 成员
echo 'secrets/** filter=git-crypt diff=git-crypt' >> .gitattributes  # 声明加密范围
git add .gitattributes && git commit -m 'enable git-crypt'  # 提交声明
git-crypt status -e  # 查看已加密文件清单
git-crypt export-key /secure/location/key  # 导出对称密钥并异地托管
git-crypt lock  # 锁定工作区,文件变为密文

典型使用场景

  • 配置仓托管:数据库口令、API 密钥等少量敏感文件随代码走同一仓库
  • 小团队协作:成员变动少,密钥分发走 GPG 或集中托管
  • 基础设施定义:与配置管理代码一起版本化,敏感值保持加密
  • 合规留存:加密内容可以进入内部 Git 平台并接受审计
  • 离线备份:导出对称密钥后,无 GPG 环境也能解锁
  • 临时协作:给外部成员单独分发密钥,合作结束后轮换

关键点与风险

项目说明风险点
加密范围.gitattributes 声明的匹配文件规则写错等于明文入库
密钥模式GPG 成员制或对称密钥对称密钥权限难回收
历史影响加密只对之后的提交生效之前的明文仍留在历史
轮换需要重写历史或换文件涉及所有分支与协作者
权限粒度有密钥即可解密全部范围做不到按目录分级
先明文提交过再启用:历史里仍保留明文,需要清理历史或轮换敏感内容,两者都要评估协作者影响。
密钥只掌握在一人手里:成员变动即阻塞,按团队流程托管与备份。
导出的对称密钥要像生产凭证一样保管:它等价于加密范围的全部解密权限。

易错点

  • 密钥集中在一人手里:休假或离职即阻塞团队。
  • 启用前已有明文历史:仓库克隆者仍可翻出旧内容。
  • 拿它做细粒度权限:任何拿到密钥的人可解密全部范围。
  • 把大文件加密入库:仓库体积与克隆成本上升。

数据来源与参考

  • git-crypt 文档(AGWA)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌