跳至主要内容

排查密钥扫描故障

当使用密钥扫描检测代码库中的密钥或即将提交到代码库中的密钥时,您可能需要排查意外问题。

谁可以使用此功能?

密钥扫描适用于以下代码库

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

模式对的检测

密钥扫描仅在 ID 和密钥位于同一文件中并且两者都推送到代码库时才会检测模式对,例如 AWS 访问密钥和密钥。由于必须将一对中的两个元素(ID 和密钥)一起使用才能访问提供商的资源,因此配对匹配有助于减少误报。

推送到不同文件或未推送到同一代码库的对不会导致警报。有关支持的模式对的更多信息,请参阅“支持的密钥扫描模式”中的表格。

关于旧版 GitHub 令牌

对于 GitHub 令牌,我们检查密钥的有效性以确定密钥是活动还是非活动状态。这意味着对于旧版令牌,密钥扫描不会在 GitHub Enterprise Cloud 上检测到 GitHub Enterprise Server 个人访问令牌。类似地,GitHub Enterprise Cloud 个人访问令牌不会在 GitHub Enterprise Server 上被找到。

推送保护限制

如果推送保护未检测到您认为应该检测到的密钥,则应首先检查推送保护是否在支持的密钥列表中支持密钥类型。有关更多信息,请参阅“支持的密钥扫描模式”。

如果您的密钥在支持的列表中,则推送保护可能无法检测到它的原因有很多。

  • 推送保护仅阻止最容易识别的用户警报模式子集上的泄露密钥。当此类密钥被阻止时,贡献者可以信任安全防御,因为这些模式的误报率最低。
  • 您的密钥版本可能很旧。某些令牌的旧版本可能不受推送保护的支持,因为这些令牌产生的误报可能比其最新版本多。推送保护也可能不适用于旧版令牌。对于 Azure 存储密钥等令牌,GitHub 仅支持最近创建的令牌,而不支持与旧版模式匹配的令牌。
  • 推送可能太大,例如,如果您尝试推送数千个大型文件。如果推送太大,推送保护扫描可能会超时并且不会阻止用户。如果需要,GitHub 仍将在推送后扫描并创建警报。
  • 如果推送导致检测到超过五个新密钥,我们只会向您显示前五个(我们始终只会一次显示最多五个密钥)。
  • 如果推送包含超过 1000 个现有密钥(即已为其创建警报的密钥),推送保护将不会阻止推送。