# 机密扫描检测范围

机密扫描使用模式匹配和验证来检测机密。 检测因模式对、令牌类型和推送保护设置而异。

> \[!NOTE]
> 网站管理员必须先为实例启用 secret scanning，然后你才能使用此功能。 有关详细信息，请参阅“[为设备配置密码扫描](/zh/enterprise-server@3.19/admin/code-security/managing-github-advanced-security-for-your-enterprise/configuring-secret-scanning-for-your-appliance)”。
>
> 如果企业所有者在企业级别设置了策略，你可能无法启用或禁用 secret scanning。 有关详细信息，请参阅“[强制实施企业的代码安全性和分析策略](/zh/enterprise-server@3.19/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-code-security-and-analysis-for-your-enterprise)”。

## 模式对检测

Secret scanning 如果 ID 和机密位于同一文件中，并且两者都推送到存储库，则仅检测模式对（例如 AWS 访问密钥和机密）。 对匹配有助于减少误报，因为对的两个元素（ID 和机密）必须一起使用才能访问提供商的资源。

推送到不同文件或未推送到同一存储库的对不会导致警报。 有关受支持模式对的详细信息，请参阅 [支持的机密扫描模式](/zh/enterprise-server@3.19/code-security/secret-scanning/introduction/supported-secret-scanning-patterns) 中的表。

## 关于旧 GitHub 令牌

对于 GitHub 令牌，我们将检查机密的有效性，以确定机密是活动机密还是非活动机密。 这意味着对于旧版令牌，secret scanning将无法检测到 GitHub Enterprise Server 上的 personal access tokenGitHub Enterprise Cloud。 同样，在GitHub Enterprise Cloud上也找不到personal access tokenGitHub Enterprise Server。

## 推送保护限制

如果推送保护未检测到你认为应该检测到的机密，你应首先检查推送保护是否支持受支持机密列表中的机密类型。 有关详细信息，请参阅 [支持的机密扫描模式](/zh/enterprise-server@3.19/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)。

如果你的机密位于受支持的列表中，则推送保护可能无法检测到它的原因有多种。

* 推送保护仅阻止最可识别的用户警报模式子集上的已泄漏机密。 当此类机密被阻止时，参与者可以信任安全防御，因为这些模式的误报数最少。
* 机密的版本可能太旧。 推送保护可能不支持某些旧版令牌，因为这些令牌生成的误报数可能高于其最新版本。 推送保护也可能不适用于旧令牌。 对于 Azure 存储密钥等令牌，GitHub 仅支持“最近创建”令牌，不支持与旧模式匹配的令牌。
* 例如，如果尝试推送数千个大文件，则推送可能过大。 如果推送过大，推送保护扫描可能会超时并且不会阻止用户。
  GitHub 推送后仍会扫描并创建警报（如果需要）。
* 如果推送导致检测到五个以上新机密，我们将仅显示前五个机密（我们将始终一次向你显示最多五个机密）。
* 如果推送包含 1,000 个以上现有机密（即已为其创建了警报的机密），则推送保护不会阻止推送。
* 如果看到没有提交或文件路径详细信息的绕过请求，则意味着推送保护已超时。 推送的内容过大，或者历史记录过于复杂，导致无法定位引入机密的提交。