Skip to main content

从机密扫描中排除文件夹和文件

可以通过在仓库中配置 secret_scanning.yml 文件来自定义 secret scanning,以自动关闭在特定目录或文件中发现的密钥警报。

谁可以使用此功能?

具有管理员角色的存储库所有者、组织所有者、安全管理员和用户

可能存在需要将机密提交到存储库的情况,例如在文档或示例应用中提供虚假机密时。 在这些场景中,可以快速驳回警报并记录原因。 但在某些情况下,可能希望完全忽略某个目录,以避免大规模产生误报警报。 例如,你可能有一个包含多个集成的整体应用程序,其中包含一个虚拟密钥文件,可能会引发大量虚假警报,需要进行会审。

可以配置 secret_scanning.yml 文件,以自动关闭 secret scanning 在特定目录中发现的警报,并将这些目录排除在推送保护之外。 这些警报将被关闭,并标记为“根据配置忽略”。

从 用户的机密扫描警报

中排除目录

  1. 在 GitHub 上,导航到存储库的主页面。1. 在文件列表上方,选择“Add file” 下拉菜单,然后单击“ Create new file”********。

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

    仓库主页的屏幕截图,其中突出显示了“添加文件”和“加号”两个图标(如上所述以橙色框出)。

  2. 在“文件名”字段中,输入“.github/secret_scanning.yml”。

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

    YAML
    paths-ignore:
      - "docs/**"
    

    这会告知 secret scanning 自动关闭 docs 目录中的针对所有内容的警报。 可以使用此示例文件作为模板来添加想要从自己的存储库中排除的文件和文件夹。

    也可以使用特殊字符(如 *)筛选路径。 有关筛选模式的更多信息,请参阅 GitHub Actions 的工作流语法

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

    注意

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

验证目录已从 secret scanning 中排除

  1. 在已从机密扫描中排除的目录中打开一个文件
  2. 粘贴一个预先失效的机密或测试机密。
  3. 提交更改。
  4. 在 GitHub 上,导航到存储库的主页面。
  5. 在仓库名称下,单击 “Security”****。 如果看不到“Security”选项卡,请选择 下拉菜单,然后单击“Security”********。
    存储库标头的屏幕截图,其中显示了选项卡。 “安全性”选项卡以深橙色边框突出显示。
    刚引入文件的机密不应有新的未处理警报。

最佳做法

最佳做法包括:

  • 尽量减少排除的目录数量,定义排除规则时尽可能精确。 这可确保说明尽可能清晰,且排除规则按预期生效。
  • secret_scanning.yml 文件的注释中说明排除特定文件或文件夹的原因。 与常规代码一样,使用注释可明确意图,让他人更容易理解预期行为。
  • 定期查看 secret_scanning.yml 文件。 随着时间推移,某些排除规则可能不再适用,保持文件整洁和最新是良好做法。 如前所述,使用注释有助于实现这一点。
  • 告知安全团队已排除的文件和文件夹及其原因。 良好的沟通对于确保所有人达成共识、理解排除特定文件夹或文件的原因至关重要。