跳至主要内容

关于密钥扫描

GitHub 扫描存储库以查找已知类型的密钥,以防止意外提交的密钥被欺诈使用。

谁可以使用此功能?

密钥扫描适用于以下存储库

  • 公共存储库(免费)
  • 在使用启用了 GitHub 高级安全功能 的 GitHub Enterprise Cloud 的组织中的私有和内部存储库

关于密钥扫描

密钥扫描是一项安全功能,有助于检测和防止敏感信息(如 API 密钥、密码、令牌和其他密钥)意外包含在您的存储库中。启用后,密钥扫描会扫描存储库中的提交以查找已知类型的密钥,并在检测到密钥时提醒存储库管理员。

密钥扫描会扫描 GitHub 存储库中所有分支的完整 Git 历史记录中的密钥。GitHub 还会定期对已启用密钥扫描的公共存储库中现有内容运行完整的 Git 历史记录扫描。

此外,密钥扫描还会扫描

  • 问题中的描述和评论
  • 公开和关闭的 *历史* 问题中的标题、描述和评论
  • 拉取请求中的标题、描述和评论
  • GitHub 讨论中的标题、描述和评论
  • Wiki

如果泄露了受支持的密钥,GitHub 会生成密钥扫描警报。警报会在 GitHub 上存储库的“**安全**”选项卡中报告,您可以在其中查看、评估和解决这些警报。有关更多信息,请参阅“管理密钥扫描警报”。

服务提供商可以与 GitHub 合作,提供其密钥格式以进行扫描。我们会在所有公共存储库和公共 npm 包上自动运行合作伙伴模式的密钥扫描。要了解有关我们的合作伙伴计划的信息,请参阅“密钥扫描合作伙伴计划”。

与密钥扫描合作伙伴提供的模式匹配的任何字符串都会直接报告给相关合作伙伴,并且不会显示在 GitHub 上。有关合作伙伴模式的更多信息,请参阅“关于密钥扫描警报”。

有关密钥扫描支持的密钥和服务提供商的信息,请参阅“受支持的密钥扫描模式”。

您可以使用 REST API 监控跨存储库的密钥扫描结果。有关 API 端点的更多信息,请参阅“密钥扫描的 REST API 端点”。

您可以使用 GitHub 工具审核响应密钥扫描警报所采取的操作。有关更多信息,请参阅“审核安全警报”。

密钥扫描的工作原理

以下是说明密钥扫描工作原理的典型工作流

  • **检测**:密钥扫描会自动扫描存储库内容以查找敏感数据,例如 API 密钥、密码、令牌和其他密钥。它会查找与已知类型的密钥匹配的模式和启发式方法。

  • **警报**:检测到潜在密钥时,GitHub 会生成警报并通知相关的存储库管理员和用户。此通知包含有关检测到的密钥的详细信息,例如其在存储库中的位置。有关警报类型和警报详细信息的更多信息,请参阅“关于密钥扫描警报”。

  • **审查**:检测到密钥时,您需要查看提供的警报详细信息。

  • **修复**:然后,您需要采取适当的操作来修复暴露问题。这可能包括

    • 轮换受影响的凭据,以确保它不再可用。
    • 从存储库的历史记录中删除密钥(使用 BFG Repo-Cleaner 等工具或 GitHub 的内置功能)。
  • **监控**:定期审核和监控存储库以确保没有其他密钥暴露是一个好习惯。

  • **与合作伙伴集成**:GitHub 与各种服务提供商合作以验证密钥。检测到合作伙伴密钥时,GitHub 会通知提供商,以便他们可以采取适当的措施,例如撤销凭据。有关合作伙伴计划的更多信息,请参阅“密钥扫描合作伙伴计划”。

关于密钥扫描的好处

  • **增强的安全性**—密钥扫描会扫描您的存储库以查找敏感信息,例如 API 密钥、密码、令牌和其他密钥。通过尽早检测这些信息,您可以在恶意行为者利用它们之前减轻潜在的安全风险。

  • **自动检测**—此功能会自动扫描您的代码库,包括提交、问题和拉取请求,从而确保持续保护,而无需手动干预。这种自动化有助于在存储库发展过程中保持安全性。

  • **实时警报**—检测到密钥时,密钥扫描会向存储库管理员和贡献者提供实时警报。此即时反馈允许快速采取修复措施。

  • 与服务提供商集成—GitHub 与各种服务提供商合作以验证检测到的密钥。当识别到密钥时,GitHub 会通知相应的服务提供商采取适当的操作,例如撤销公开的凭据。有关更多信息,请参阅“密钥扫描合作伙伴计划”。

自定义密钥扫描

启用密钥扫描后,您可以进一步自定义它

执行有效性检查

有效性检查通过告诉您哪些密钥是活动非活动来帮助您优先处理警报。有关更多信息,请参阅“评估密钥扫描的警报”。

进一步阅读