用途
本技能提供 2025-2026 年 Git 安全最佳实践,围绕签名提交、零信任安全模型和密钥扫描三大主题,帮助开发者在仓库配置、开发工作站和工作流三个层面加固 Git 使用安全。技能会在配置签名提交(GPG、SSH)、实施零信任 Git 工作流、扫描或阻止密钥泄露等场景下主动激活。
主要能力
零信任安全模型
以“永不信任、始终验证”为核心原则,要求每次提交都经过验证、采用最小权限访问、持续监控所有操作并假设已发生入侵。具体实现包括:强制签名提交、身份验证、持续审计日志、最小权限访问控制和持续监控。
签名提交
支持两种签名方式:
- GPG 签名(传统方式):生成 GPG 密钥、配置 Git 使用签名密钥、导出公钥添加到 GitHub/GitLab/Bitbucket,并提供 GPG agent 未运行、缓存口令等故障排查方法。
- SSH 签名(2023+ 现代替代方案):复用现有 SSH 密钥,无需 GPG,配置
gpg.format ssh和user.signingkey,并支持配置 allowed signers 文件用于验证。
密钥扫描与防护
- GitHub Secret Scanning(推送保护):在仓库设置中启用,可在推送时阻止密钥泄露,支持 AI 驱动的检测(AWS 凭据、Azure 服务主体、Google Cloud 密钥、GitHub 令牌、数据库连接字符串、API 密钥、私钥、OAuth 令牌及自定义模式)。
- Gitleaks(本地扫描):提供 macOS、Linux、Windows 安装命令,支持扫描整个仓库、未提交更改、指定目录,可生成 JSON 报告并用于 CI/CD,也可配置为 pre-commit 钩子。
- Git-secrets(AWS 聚焦):安装、初始化、注册 AWS 模式、添加自定义模式并扫描。
强制签名提交
提供 GitHub、GitLab、Azure DevOps 的分支保护规则配置,以及服务端 pre-receive 钩子脚本,用于拒绝未签名提交。
安全配置
推荐 Git 全局配置,包括签名、协议版本、fsckobjects 传输校验、凭据助手、行尾安全和编辑器安全。同时提供 .gitignore 安全模板,覆盖密钥、云服务商、数据库、日志、IDE 密钥和构建产物。
凭据管理与 CodeQL 扫描
详细的凭据管理指导(PAT、SSH 密钥、Git Credential Manager、轮换、存储)和 CodeQL/安全扫描设置位于 references/credential-and-code-scanning.md,在加固开发者凭据或添加仓库级静态安全分析时加载该参考文件。
审计追踪
提供启用详细日志的 Git 别名、提交验证检查、审计日志导出和分支提交验证命令。
安全检查清单
覆盖仓库设置、开发者工作站和工作流三个层面的检查项,包括启用分支保护、要求签名提交、启用密钥扫描与推送保护、启用 CodeQL、配置 Dependabot/Renovate、要求 2FA、使用 GPG 或 SSH 签名、配置凭据管理器、安装 gitleaks、创建 .gitignore、启用 fsckobjects、使用带口令的 SSH 密钥、不提交密钥、提交前审查、验证签名、定期安全审计、定期轮换凭据、使用环境变量存储密钥。
事件响应
提供密钥泄露和未签名提交检测后的处理步骤,包括立即轮换凭据、从最新提交或历史中移除密钥、通知团队重新克隆、启用推送保护,以及重新签名提交并强制推送。
使用方式
技能以 Markdown 文档形式提供,包含可直接复制使用的 Git 配置命令、CI/CD 工作流 YAML 示例、pre-receive 钩子脚本和检查清单。用户可根据自身仓库平台(GitHub/GitLab/Azure DevOps)和签名方式(GPG/SSH)选择对应章节执行。
适用场景
- 配置 GPG 或 SSH 签名提交
- 实施零信任 Git 工作流
- 扫描或阻止密钥泄露
- 设置分支保护规则强制签名提交
- 配置 CI/CD 中的提交验证和密钥扫描
- 加固开发者凭据和仓库安全
限制
- 部分内容(如凭据管理和 CodeQL 扫描)需加载外部参考文件
references/credential-and-code-scanning.md。 - 具体平台设置路径可能随平台版本变化,需以实际界面为准。
- 技能未提供收费、价格或效果保证等信息。