跳至主要内容

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

您可以通过在存储库中配置 `secret_scanning.yml` 文件来自定义密钥扫描以排除目录或文件进行分析。

谁可以使用此功能?

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

关于密钥扫描

密钥扫描会自动检测已签入存储库的令牌或凭据。您可以在存储库的 **安全** 选项卡中查看用户的密钥扫描警报,以便了解哪些令牌或凭据应视为已泄露。有关更多信息,请参阅“关于密钥扫描警报”。

关于为用户排除密钥扫描警报中的目录

您可能需要将密钥提交到存储库,例如当您想要在文档或示例应用程序中提供虚假密钥时。在这种情况下,您可以快速忽略警报并记录原因。但是,在某些情况下,您可能希望完全忽略某个目录以避免大规模创建误报警报。例如,您可能拥有一个包含多个集成的单体应用程序,其中包含一个虚拟密钥文件,这可能会触发许多需要分类的误报警报。

您可以配置 `secret_scanning.yml` 文件以排除密钥扫描中的目录,包括在使用推送保护时。

为用户排除密钥扫描警报中的目录

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

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

    或者,您可以单击左侧的文件树视图中的 。

    Screenshot of the main page of a repository. Above the list of files, a button, labeled "Add file," is outlined in dark orange. In the file tree view of the repository, a button with a plus sign icon is also outlined in dark orange.

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

  4. 在 **编辑新文件** 下,键入 `paths-ignore:`,后跟要从密钥扫描中排除的路径。

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

    这会告诉密钥扫描忽略 `docs` 目录中的所有内容。您可以使用此示例文件作为模板来添加您希望从自己的存储库中排除的文件和文件夹。

    您还可以使用特殊字符,例如 `*` 来筛选路径。有关筛选模式的更多信息,请参阅“GitHub Actions 的工作流语法”。

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

    注意

    • 如果 `paths-ignore` 中的条目超过 1000 个,密钥扫描将仅从扫描中排除前 1000 个目录。
    • 如果 `secret_scanning.yml` 大于 1 MB,密钥扫描将忽略整个文件。

验证文件夹是否已从密钥扫描中排除

  1. 打开您已从密钥扫描中排除的目录中的文件
  2. 粘贴预先无效的密钥或测试密钥。
  3. 提交更改。
  4. 在 GitHub 上,导航到存储库的主页。
  5. 在仓库名称下,点击 安全。如果您看不到“安全”选项卡,请选择下拉菜单,然后点击安全
    Screenshot of a repository header showing the tabs. The "Security" tab is highlighted by a dark orange outline.
    您刚刚引入文件中的密钥不应有任何新的未关闭警报。

最佳实践

最佳实践包括:

  • 尽量减少排除的目录数量,并在定义排除项时尽可能精确。这确保了指令尽可能清晰,并且排除项按预期工作。
  • secret_scanning.yml文件中用注释解释为什么排除特定文件或文件夹。与常规代码一样,使用注释可以阐明您的意图,使其他人更容易理解预期的行为。
  • 定期检查secret_scanning.yml文件。随着时间的推移,某些排除项可能不再适用,保持文件整洁和最新是一个好习惯。如上所述,使用注释可以帮助您做到这一点。
  • 告知安全团队您排除了哪些文件和文件夹,以及原因。良好的沟通对于确保每个人都在同一页面上,并理解为什么排除特定文件夹或文件至关重要。