用途:本技能提供 GitHub 密钥扫描的操作指引,用于检测泄露的凭据、阻止密钥被推送、定义自定义模式并管理告警。适用于启用或配置仓库/组织的密钥扫描、设置推送保护、用正则定义自定义模式、处理命令行被拦截的推送、分诊或处置告警、配置推送保护的委派绕过、通过 secret_scanning.yml 排除目录、理解告警类型,以及启用有效性检查或在提交前扫描本地改动。
工作机制:密钥扫描会自动检测整个 Git 历史(所有分支)、issue 描述与评论与标题、Pull Request 标题与描述与评论、GitHub Discussions、Wiki 和 secret gist 中的泄露凭据。公开仓库自动且免费;私有或内部(组织所有)需 Team/Enterprise Cloud 的 GitHub Secret Protection;用户所有需带 Enterprise Managed Users 的 Enterprise Cloud。
启用步骤:仓库 Settings → Advanced Security 启用 Secret Protection;组织可用 Settings → Advanced Security → Global settings → Security configurations 批量启用。推送保护可拦截命令行推送、GitHub UI 提交、文件上传及 REST API 请求中的密钥。
可选配置:.github/secret_scanning.yml 通过 paths-ignore 自动关闭特定目录告警,最多 1000 条、文件须小于 1MB,被排除路径也跳过推送保护,建议路径尽量具体、加注释、定期复核并告知安全团队。还可启用非提供方模式、AI 驱动的通用密钥检测、有效性检查(状态为 active、inactive 或 unknown)和扩展元数据检查。
处理被拦截推送:可移除密钥(用 git commit --amend --all 或交互式 rebase 修改历史);或访问推送错误中的 URL,选择绕过原因(用于测试、误报、稍后修复)并点击允许推送,须在 3 小时内重新推送;启用委派绕过时可在该 URL 提交申请并等待邮件通知。
自定义模式:在 Settings → Advanced Security → Custom patterns 新建模式,填写名称与正则、添加示例串,可先 Save and dry run 测试(最多 1000 条结果),复核误报后 Publish pattern,并可为其启用推送保护。作用域分为仓库、组织、企业级。还可借 Copilot 由文字描述生成正则。
告警管理:告警类型包括用户告警(Security 标签)、推送保护告警(bypassed: true)和提供方告警(仅提供方可见)。处置优先立即轮换凭据,再查看上下文、有效性状态,必要时再从 Git 历史移除。可标记误报、已撤销或用于测试。通用告警每个仓库上限 5000 条。
提交前扫描:在 AI 编码代理内提交前扫描,可安装 Advanced Security 插件,它提供 run_secret_scanning MCP 工具和专用扫描技能。GitHub Copilot CLI 使用 /plugin install advanced-security@copilot-plugins;VS Code 在 Copilot Chat 中打开 Chat: Plugins 安装 advanced-security 插件,然后运行 /secret-scanning。
限制:价格、各功能具体可用版本细节及 REST API 端点等资料中未完整提供,需查阅相应引用文档。