Skip to main content

定义密钥扫描的自定义模式

您可以扩展 > - 秘密扫描,用于高级安全 以检测默认模式之外的机密。

秘密扫描,用于高级安全 is available for organization-owned repositories in GitHub Enterprise Cloud if your enterprise has a license for GitHub Advanced Security. For more information, see "GitHub's products."

关于 秘密扫描 的自定义模式

您可以定义自定义模式来标识 秘密扫描 支持的默认模式未检测到的机密。 例如,您可能有一个属于您组织内部的密钥模式。 有关支持的机密和服务提供商的详细信息,请参阅“秘密扫描 模式”。

您可以为企业、组织或存储库定义自定义模式。 秘密扫描 最多支持 每个组织或企业帐户 500 个自定义模式,每个存储库最多 100 个自定义模式。

自定义模式的正则表达式语法

您可以将 > - 秘密扫描,用于高级安全 的自定义模式指定为一个或多个正则表达式。

  • 机密格式:描述机密本身格式的表达式。
  • 机密之前:描述机密之前的字符的表达式。 默认情况下,此值设置为 \A|[^0-9A-Za-z],这意味着机密必须位于行首或前面有非字母数字字符。
  • 机密之后:描述机密后面的字符的表达式。 默认情况下,此值设置为 \z|[^0-9A-Za-z],这意味着机密后面必须跟有新行或非字母数字字符。
  • 其他匹配要求:机密本身必须或不得匹配的一个或多个可选表达式。

对于简单令牌,通常只需指定机密格式。 其他字段提供了灵活性,以便您可以指定更复杂的机密,而无需创建复杂的正则表达式。 有关自定义模式的示例,请参阅下面的“使用附加要求指定的自定义模式示例”。

秘密扫描 使用 Hyperscan 库,只支持 Hyperscan regex 结构(PCRE 语法的子集)。 不支持 Hyperscan 选项修饰符。 有关 Hyperscan 模式构造的更多信息,请参阅 Hyperscan 文档中的“模式支持”。

定义仓库的自定义模式

在定义自定义模式之前,您必须确保仓库上启用了 秘密扫描。 更多信息请参阅“为仓库配置 秘密扫描”。

  1. 在 GitHub.com 上,导航到仓库的主页面。

  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮

  3. In the "Security" section of the sidebar, click Code security and analysis.

  4. 在“Code security and analysis(代码安全性和分析)”下,找到“GitHub Advanced Security”。

  5. 在“秘密扫描”下的“Custom patterns(自定义模式)”下,单击 New pattern(新模式)

  6. 输入新自定义模式的详细信息:

    1. 您至少必须提供模式的名称,以及秘密模式格式的正则表达式。
    2. 您可以点击更多选项 来提供密钥格式的其他周围内容或额外匹配要求。
    3. 提供示例测试字符串,以确保您的配置与预期的模式匹配。

    创建自定义 秘密扫描 模式表

  7. 当您准备好测试新的自定义模式时,要识别存储库中的匹配项而不创建警报,请单击 Save and dry run(保存并空运行)

  8. When the dry run finishes, you'll see a sample of results (up to 1000). 查看结果并确定任何误报结果。 显示空运行结果的屏幕截图

  9. Edit the new custom pattern to fix any problems with the results, then, to test your changes, click Save and dry run.

    Note: The dry run feature is currently in beta and subject to change.

  10. When you're satisfied with your new custom pattern, click Publish pattern.

在模式创建后,秘密扫描 将在 GitHub 仓库中存在的所有分支上扫描整个 Git 历史记录的任何密钥。有关查看 秘密扫描 警报的详细信息,请参阅“管理来自 秘密扫描 的警报”。

使用其他要求指定的自定义模式示例

公司具有具有五个特征的内部令牌。 它们使用不同的字段来指定如何标识令牌,如下所示:

特征字段和正则表达式
长度介于 5 到 10 个字符之间机密格式:[$#%@AA-Za-z0-9]{5,10}
不会以 .结束。机密后面:[^\.]
包含数字和大写字母其他要求:机密必须与 [A-Z][0-9] 匹配
一行中不包含多个小写字母其他要求:机密不得与 [a-z]{2,} 匹配
包含 $%@! 之一其他要求:机密必须与 [$%@!] 匹配

这些令牌将与上述自定义模式匹配:

a9@AAfT!         # Secret string match: a9@AAfT
ee95GG@ZA942@aa  # Secret string match: @ZA942@a
a9@AA!ee9        # Secret string match: a9@AA

这些字符串与上述自定义模式不匹配:

a9@AA.!
a@AAAAA
aa9@AA!ee9
aAAAe9

定义组织的自定义模式

在定义自定义模式之前,您必须确保在组织中为要扫描的仓库启用 秘密扫描。 要在组织中的所有存储库上启用 秘密扫描 ,请参阅“管理组织的安全和分析设置”。

  1. 在 GitHub.com 的右上角,单击您的头像,然后单击 Your organizations(您的组织)个人资料菜单中的组织

  2. 在组织旁边,单击 Settings(设置)设置按钮

  3. 在边栏的“Security(安全性)”部分中,单击 Code security and analysis(代码安全性和分析)

  4. 在“Code security and analysis(代码安全性和分析)”下,找到“GitHub Advanced Security”。

  5. 在“秘密扫描”下的“Custom patterns(自定义模式)”下,单击 New pattern(新模式)

  6. 输入新自定义模式的详细信息:

    1. 您至少必须提供模式的名称,以及秘密模式格式的正则表达式。
    2. 您可以点击更多选项 来提供密钥格式的其他周围内容或额外匹配要求。
    3. 提供示例测试字符串,以确保您的配置与预期的模式匹配。

    创建自定义 秘密扫描 模式表

  7. 当您准备好测试新的自定义模式时,要识别所选存储库中的匹配项而不创建警报,请单击 Save and dry run(保存并试运行)

  8. Search for and select up to 10 repositories where you want to perform the dry run. 显示为试运行选择的存储库的屏幕截图

  9. 当您准备好测试新的自定义模式时,请单击 Dry run(试运行)

  10. When the dry run finishes, you'll see a sample of results (up to 1000). 查看结果并确定任何误报结果。 显示空运行结果的屏幕截图

  11. Edit the new custom pattern to fix any problems with the results, then, to test your changes, click Save and dry run.

    Note: The dry run feature is currently in beta and subject to change.

  12. When you're satisfied with your new custom pattern, click Publish pattern.

创建模式后,秘密扫描 扫描组织的仓库中的任何密钥,包括其所有分支的整个 Git 历史记录。 组织所有者和仓库管理员将会收到发现的任何密钥警报通知,并且可以审查发现密钥的仓库中的警报。 有关查看 秘密扫描 警报的详细信息,请参阅“管理来自 秘密扫描 的警报”。

为企业帐户定义自定义模式

在定义自定义模式之前,必须确保为企业帐户启用机密扫描。 更多信息请参阅“为企业启用 GitHub Advanced Security”。

注意:

  • 在企业级别,只有自定义模式的创建者才能编辑该模式,并在试运行中使用它。
  • 企业所有者只能使用他们有权访问的存储库上的试运行,而企业所有者不一定有权访问企业内的所有组织或存储库。
  1. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

  2. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  3. 在企业账户侧边栏中,单击 Policies(政策)企业帐户侧边栏中的 Policies(政策)选项卡

  4. 策略下,单击“Advanced Security(高级安全性)”。 侧边栏中的"高级安全性"策略

  5. 在“GitHub Advanced Security”下,单击 Security features(安全功能)选项卡。

  6. 在“Secret scanning custom patterns(机密扫描自定义模式)”下,单击 New pattern(新建模式)

  7. 输入新自定义模式的详细信息:

    1. 您至少必须提供模式的名称,以及秘密模式格式的正则表达式。
    2. 您可以点击更多选项 来提供密钥格式的其他周围内容或额外匹配要求。
    3. 提供示例测试字符串,以确保您的配置与预期的模式匹配。

    创建自定义 秘密扫描 模式表

  8. 当您准备好测试新的自定义模式时,要识别存储库中的匹配项而不创建警报,请单击 Save and dry run(保存并空运行)

  9. Search for and select up to 10 repositories where you want to perform the dry run. 显示为试运行选择的存储库的屏幕截图

  10. 当您准备好测试新的自定义模式时,请单击 Dry run(试运行)

  11. When the dry run finishes, you'll see a sample of results (up to 1000). 查看结果并确定任何误报结果。 显示空运行结果的屏幕截图

  12. Edit the new custom pattern to fix any problems with the results, then, to test your changes, click Save and dry run.

    Note: The dry run feature is currently in beta and subject to change.

  13. When you're satisfied with your new custom pattern, click Publish pattern.

创建模式后,秘密扫描 扫描企业组织内存储库中的任何机密,并启用 GitHub Advanced Security,包括其所有分支上的整个 Git 历史记录。 组织所有者和仓库管理员将会收到发现的任何密钥警报通知,并且可以审查发现密钥的仓库中的警报。 有关查看 秘密扫描 警报的详细信息,请参阅“管理来自 秘密扫描 的警报”。

编辑自定义模式

将更改保存到自定义模式时,这将关闭使用该模式的先前版本创建的所有 秘密扫描 警报。

  1. 导航到创建自定义模式的位置。 可以在存储库、组织或企业帐户中创建自定义模式。
  2. 在“秘密扫描”下要编辑的自定义模式的右侧,单击
  3. 查看并测试更改后,单击 Save changes(保存更改)

删除自定义模式

  1. 导航到创建自定义模式的位置。 可以在存储库、组织或企业帐户中创建自定义模式。