关于 secret scanning
Secret scanning 是一项安全功能,可帮助检测和防止意外包含存储库中的敏感信息,例如 API 密钥、密码、令牌和其他机密。 启用后,secret scanning 会扫描存储库中的提交以查找已知类型的机密,并在检测到时提醒存储库管理员。
Secret scanning 会扫描 GitHub 存储库中所有分支的整个 Git 历史记录,以查找机密。GitHub 还会定期对添加新支持的机密类型时已启用secret scanning的公共存储库中的现有内容运行完整的 Git 历史记录扫描。
此外,secret scanning 会扫描:
- 问题中的描述和评论
- 打开和结束的_历史_问题中的标题、描述和评论
- 拉取请求中的标题、描述和评论
- GitHub Discussions中的标题、描述和注释
- Wiki
当支持的机密被泄露时,GitHub 将生成 secret scanning 警报。 警报在 GitHub 上存储库的“安全性”**** 选项卡上报告,你可以在其中查看、评估和解决警报。 有关详细信息,请参阅“管理来自机密扫描的警报”。
服务提供方可与 GitHub 合作提供用于扫描的机密格式。 对于所有公共存储库和公共 npm 包上的合作伙伴模式,我们会自动运行 secret scanning。要了解我们的合作伙伴计划,请参阅“密码扫描合作伙伴计划”。
与机密扫描合作伙伴提供的模式匹配的任何字符串将直接报告给相关合作伙伴,并且不会在 GitHub 上显示。 有关合作伙伴模式的详细信息,请参阅“关于机密扫描警报”。
有关 secret scanning 支持的机密和服务提供方的信息,请参阅“支持的机密扫描模式”。
可以使用 REST API 监视来自存储库中 secret scanning 的结果。 有关 API 终结点的详细信息,请参阅“适用于机密扫描的 REST API 终结点”。
可以使用 GitHub 工具审核为响应secret scanning警报而执行的操作。 有关详细信息,请参阅“审核安全警报”。
secret scanning 工作原理
下面是一个典型的工作流,说明 secret scanning 的工作原理:
-
检测****:Secret scanning 会自动扫描存储库的内容以查找敏感数据,例如 API 密钥、密码、令牌和其他机密。 该功能查找与已知机密类型匹配的模式和启发式方法。
-
警报****:检测到潜在的机密时,GitHub 将生成警报,并通知相关存储库管理员和用户。 此通知包括有关检测到的机密的详细信息,例如其在存储库中的位置。 有关警报类型和警报详细信息的详细信息,请参阅“关于机密扫描警报”。
-
查看****:检测到机密后,需要查看提供的警报详细信息。
-
修正:然后需要采取适当的措施来修正泄露****。 这始终都应该包括轮换受影响的凭据以确保其不再可用。 这还可能包括从存储库的历史记录中移除机密(使用
git-filter-repo
之类的工具;有关更多详细信息,请参阅“从存储库中删除敏感数据”),不过这可能会花费大量时间和精力,并且在撤销凭证的情况下通常是不必要的。 -
监视****:最好定期审核和监视存储库,以确保不会泄露任何其他机密。
-
与合作伙伴集成****:GitHub 与各种服务提供方合作来验证机密。 检测到合作伙伴机密时,GitHub 会通知提供方,以便他们可以采取适当的操作,例如撤销凭据。 有关合作伙伴计划的更多信息,请参阅“密码扫描合作伙伴计划”。
关于 secret scanning 的优点
-
增强的安全性****:Secret scanning 会扫描仓库查找敏感信息,例如 API 密钥、密码、令牌和其他机密。 通过提前检测这些内容,可以在恶意参与者利用之前减轻潜在的安全风险。
-
自动检测****:该功能会自动扫描代码库,包括提交、问题和拉取请求,确保无需手动干预即可持续提供保护。 即使存储库不断发展,这种自动化也有助于维护安全性。
-
实时警报****:检测到机密时,secret scanning 向仓库管理员和参与者提供实时警报。 此即时反馈允许快速修正操作。
-
与服务提供方集成****:GitHub 合作伙伴与各种服务提供方合作,以验证检测到的机密。 标识机密时,GitHub 会通知相应的服务提供方采取适当的操作,例如撤销泄露的凭据。 有关详细信息,请参阅“密码扫描合作伙伴计划”。
自定义 secret scanning
启用 secret scanning 后,可以进一步自定义该功能:
执行有效性检查
验证检查让您知道哪些机密属于 active
或 inactive
机密,帮助你排列 警报优先级。 有关详细信息,请参阅“评估来自机密扫描的警报”。