极客前沿

Git 安全入门:防止密钥泄露的 pre-commit 设置

2026-05-27 01:31
DEV Tutorial
查看原文

学会用 pre-commit 钩子自动检查 Git 提交中的密钥,防止 AWS 密钥等敏感信息泄露。

为什么需要防止密钥泄露?

如果你在 Git 仓库中不小心提交了 AWS 密钥(访问云服务的密码)或数据库密码,这些信息可能被他人利用,造成数据泄露或经济损失。本文教你用两个工具在提交前自动拦截这些密钥。

准备工作:安装必要工具

你需要安装 Git(版本管理工具)和 Python(编程语言)。如果还没安装:

  • Git:访问 git-scm.com 下载安装包,一路默认即可。
  • Python:访问 python.org 下载,安装时勾选“Add Python to PATH”。

安装并配置 git-secrets

git-secrets 是一个基于规则(正则表达式)的扫描工具,能快速匹配常见的密钥格式。

Tutorial Image
  1. 打开终端(Windows 用 PowerShell 或 CMD,Mac/Linux 用 Terminal)。
  2. 执行命令安装:brew install git-secrets(Mac)或从 GitHub 下载脚本。
  3. 进入你的 Git 仓库目录:cd 你的仓库路径
  4. 执行 git secrets --install 安装钩子。
  5. 添加 AWS 密钥规则:git secrets --register-aws
  6. 如果你想全局生效(所有仓库),执行:git secrets --install ~/.git-templates/git-secrets 并配置 Git。

安装并配置 trufflehog

trufflehog 使用熵检测(识别随机字符串)和 API 验证,能发现未知格式的密钥。

  1. 安装 pre-commit 框架:pip install pre-commit
  2. 在仓库根目录创建 .pre-commit-config.yaml 文件,内容如下:
    repos:
      - repo: https://github.com/trufflesecurity/trufflehog
        rev: v3.63.0
        hooks:
          - id: trufflehog
            args: ["--only-verified"]
    
  3. 执行 pre-commit install 安装钩子。
  4. 现在每次 git commit 时,trufflehog 会自动扫描新增的变更。

验证是否成功

故意在代码中添加一个测试密钥(例如 AKIAIOSFODNN7EXAMPLE),然后尝试 git addgit commit。如果配置正确,提交会被阻止并显示警告。

常见坑: 默认情况下,git-secrets 只扫描新增的行,不扫描整个文件。如果你之前已经提交了密钥,它不会被发现。建议定期运行全仓库扫描:git secrets --scan-history

下一步可以做什么

你可以为更多服务添加自定义规则,比如 GitHub token、Slack token 等。也可以设置自动通知(如邮件或钉钉),当扫描到密钥时立即处理。

内容来源

DEV Tutorial

发布时间

2026-05-27 01:31

返回 AI技术