Skip to main content

为存储库配置机密扫描

可以配置 GitHub 如何扫描存储库中遭到泄露的机密并生成警报。

谁可以使用此功能?

People with admin permissions to a repository can enable secret scanning for the repository.

合作伙伴的机密扫描警报 在 GitHub.com 上的公共存储库和公共 npm 包中自动运行,以向服务提供商通知泄漏的机密情况。

用户拥有的公共存储库可免费使用用户的机密扫描警报。 使用 GitHub Enterprise Cloud 且拥有 GitHub Advanced Security 许可证的组织也可以在其专用存储库和内部存储库上启用 用户的机密扫描警报。 此外,用户的机密扫描警报可(在用户自有的存储库中为 beta 版本)用于具有 Enterprise Managed Users的 GitHub Enterprise Cloud。 有关详细信息,请参阅 “关于机密扫描”和“关于 GitHub 高级安全性”。

有关如何免费试用 GitHub Advanced Security 的信息,请参阅“安装 GitHub Advanced Security 试用版”。

启用 用户的机密扫描警报

可以为任何组织拥有的存储库以及用户帐户拥有的存储库(使用具有 Enterprise Managed Users 的 Enterprise Managed Users 时)启用用户的机密扫描警报。 启用后,secret scanning 将在 GitHub 仓库中存在的所有分支上扫描整个 Git 历史记录的任何密钥。 此外,secret scanning 会扫描:

  • 问题中的描述和评论
  • 打开和结束的_历史_问题中的标题、描述和评论 。 当检测到历史合作伙伴模式时,会向相关合作伙伴发送通知。
  • 拉取请求中的标题、描述和评论
  • GitHub Discussions

注意: 拉取请求和 GitHub Discussions 中的内容的扫描目前处于 Beta 版,可能会有变动。

中的标题、描述和评论

还可以同时为组织中的多个存储库启用 secret scanning。 有关详细信息,请参阅“保护你的组织”。

注意:如果组织由企业帐户拥有,则企业所有者还可以在企业级别启用 secret scanning。 有关详细信息,请参阅“管理企业的 GitHub Advanced Security 功能”。

存储库管理员可以选择随时为存储库禁用secret scanning。 有关详细信息,请参阅“管理存储库的安全和分析设置”。

  1. 在 GitHub.com 上,导航到存储库的主页。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

  4. 如果尚未对存储库启用 Advanced Security,请在“GitHub Advanced Security”右侧单击“启用”。

  5. 查看启用 Advanced Security 的影响,然后单击“为此存储库启用 GitHub Advanced Security”。

  6. 当您启用 Advanced Security 时,secret scanning 可能会因为组织的设置而自动启用。 如果显示“Secret scanning”带有“启用”按钮,则仍需通过单击“启用”来启用 secret scanning 。 如果你看到“禁用”按钮,则表示 secret scanning 已启用。

    “代码安全和分析”页的“Secret scanning”部分的屏幕截图,其中“启用”按钮以深橙色边框突出显示。

启用 用户的机密扫描警报 的额外功能

可以通过存储库的“代码安全和分析”设置启用以下附加 secret scanning 功能:

为合作伙伴模式启用有效性检查

注意: 合作伙伴模式的验证检查目前为 beta 版,可能会发生更改。

GitHub.com 上所有类型的存储库都提供针对合作伙伴模式的有效性检查。 若要使用此功能,必须具有 GitHub Advanced Security 的授权许可。

通过将机密发送给相关合作伙伴,你可以允许 secret scanning 自动检查在存储库中找到的机密的有效性。 有关验证检查的详细信息,请参阅“管理来自机密扫描的警报”中的“检查机密的有效性”。

注意: 在为存储库启用自动验证检查时,还允许针对该存储库中检测到的模式执行按需验证检查。

  1. 在 GitHub.com 上,导航到存储库的主页。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

  4. 在 Secret scanning 下,选中“通过将机密发送给相关合作伙伴自动验证其是否有效”旁边的复选框。

还可以使用 REST API 为存储库的合作伙伴模式启用有效性检查。 有关详细信息,请参阅“存储库的 REST API 终结点”。 或者,组织所有者和企业管理员可以为组织或企业设置中的所有存储库启用此功能。 有关详细信息,请参阅“管理组织的安全和分析设置”和“管理企业的 GitHub Advanced Security 功能”。

为非提供商模式启用扫描

注意: 非提供商模式检测目前处于 beta 版本阶段,可能会发生变化。

可以为非提供商模式启用扫描。 非提供商模式对应于私钥等机密,其误报率较高。

  1. 在 GitHub.com 上,导航到存储库的主页。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

  4. 在 Secret scanning 下,选择“扫描非提供商模式”旁边的复选框。

有关非提供商模式的详细信息,请参阅“机密扫描模式”。

为所有用户拥有的公共存储库启用用户的机密扫描警报

可以通过个人帐户设置为所有现有的用户拥有的公共存储库启用secret scanning。

注意****:从 2024 年 3 月 11 日起,你新创建的所有用户拥有的公共存储库将会默认启用secret scanning和推送保护。 仍然可以在存储库的“代码安全和分析”设置页面中选择为单个存储库禁用这些功能。 有关详细信息,请参阅“管理存储库的安全和分析设置”。

  1. 在任何页面的右上角,单击个人资料照片,然后单击“设置”。

    Screenshot of a user's account menu on GitHub. The menu item "Settings" is outlined in dark orange.

  2. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

  3. 在“代码安全和分析”下的“Secret scanning”右侧,单击“全部禁用”或“全部启用”。

  4. (可选)如果要启用推送保护,请单击“推送保护”右侧的“启用”。 为组织或存储库启用推送保护时,secret scanning 还会检查推送是否支持受支持的机密。 Secret scanning 列出了它检测到的所有机密,便于作者进行查看和删除,或者根据需要允许推送这些机密。 有关详细信息,请参阅“存储库和组织的推送保护”。

    “Secret scanning”部分的屏幕截图。 在“推送保护”部分中,“启用”按钮以深橙色边框突出显示。

从 用户的机密扫描警报 中排除目录

可以将 secret_scanning.yml 文件配置为从 secret scanning 中排除目录,包括使用推送保护时。 例如,可以排除包含测试或随机生成内容的目录。

  1. 在 GitHub.com 上,导航到存储库的主页。

  2. 在文件列表上方,选择“添加文件” 下拉菜单,然后单击“ 创建新文件” 。

    也可在左侧的文件树状视图中单击

    存储库主页的屏幕截图。 在文件列表上方,标有“添加文件”的按钮以深橙色框出。 在存储库的文件树状视图中,带加号图标的按钮也以深橙色框出。

  3. 在文件名字段中,键入 .github/secret_scanning.yml。

  4. 在“编辑新文件”下,键入 paths-ignore:,后跟要从 secret scanning 中排除的路径。

    paths-ignore:
      - "foo/bar/*.js"
    

    可以使用特殊字符(例如 *)来筛选路径。 有关筛选器模式的详细信息,请参阅“GitHub Actions 的工作流语法”。

    注意:

    • 如果 paths-ignore 中的条目超过 1,000 个,secret scanning 只会从扫描中排除前 1,000 个目录。
    • 如果 secret_scanning.yml 大于 1 MB,secret scanning 将忽略整个文件。

您也可以忽略来自 secret scanning 的个别警报。 有关详细信息,请参阅“管理来自机密扫描的警报”。

延伸阅读