Skip to main content

为存储库配置机密扫描

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

谁可以使用此功能?

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

Secret scanning alerts for partners runs automatically on public repositories and public npm packages to notify service providers about leaked secrets on GitHub.

Secret scanning alerts for users are available for user-owned public repositories for free. Organizations using GitHub Enterprise Cloud with a license for GitHub Advanced Security can also enable secret scanning alerts for users on their private and internal repositories. Additionally, secret scanning alerts for users are available and in beta on user-owned repositories for GitHub Enterprise Cloud with Enterprise Managed Users. For more information, see "About secret scanning" and "About GitHub Advanced Security."

For information about how you can try GitHub Advanced Security for free, see "Setting up a trial of GitHub Advanced Security."

启用 用户的机密扫描警报

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

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

注意: 拉取请求和 GitHub Discussions 中的内容的扫描和 wiki 目前处于 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 功能:

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

Note

合作伙伴模式的验证检查目前为 beta 版,可能会发生更改。 GitHub.com 上所有类型的存储库都提供针对合作伙伴模式的有效性检查。 若要使用此功能,必须具有 GitHub Advanced Security 的授权许可。

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

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

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

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

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

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

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

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

为非提供商模式启用扫描

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

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

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

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

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

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

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

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

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

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

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

  1. 在 GitHub 任意页的右上角,单击个人资料照片,然后单击“设置”。
  2. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。
  3. 在“代码安全和分析”下的“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 的个别警报。 有关详细信息,请参阅“管理来自机密扫描的警报”。

延伸阅读