Help us learn about your current experience with the documentation. Take the survey.

GitGuardian

  • Tier: Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

GitGuardian 是一种网络安全服务,可以检测源代码仓库中的敏感数据,如 API 密钥和密码。 它会扫描 Git 仓库,对策略违规发出警报,并帮助组织在黑客利用之前修复安全问题。

您可以配置 GitLab 根据GitGuardian策略拒绝提交。

要设置 GitGuardian 集成:

  1. 创建 GitGuardian API token
  2. 为您的项目设置 GitGuardian 集成

创建 GitGuardian API token

先决条件:

  • 您必须拥有 GitGuardian 账户。

创建 API token:

  1. 登录您的 GitGuardian 账户。
  2. 在侧边栏中转到 API 部分。
  3. 在 API 部分的侧边栏中,转到 Personal access tokens 页面。
  4. 选择 Create token。token 创建对话框打开。
  5. 提供您的 token 信息:
    • 为您的 API token 赋予一个有意义的名称来标识其用途。 例如,GitLab integration token
    • 选择适当的过期时间。
    • 选择 scan scope 复选框。 这是集成唯一需要的选项。
  6. 选择 Create token
  7. 生成 token 后,将其复制到剪贴板。 此 token 是敏感信息,请妥善保管。

现在您已成功创建了可用于集成的 GitGuardian API token。

为您的项目设置 GitGuardian 集成

先决条件:

  • 您必须拥有项目的 Maintainer(维护者)角色。

创建并复制您的 API token 后,配置 GitLab 拒绝提交:

为您的项目启用集成:

  1. 在左侧边栏,选择 Search or go to 并找到您的项目或组。
  2. 选择 Settings > Integrations
  3. 选择 GitGuardian
  4. Enable integration 中,选择 Active 复选框。
  5. API token 中,粘贴来自 GitGuardian 的 token 值
  6. 可选。选择 Test settings
  7. 选择 Save changes

GitLab 现在已准备好根据 GitGuardian 策略拒绝提交。

跳过密钥检测

如果需要,您可以跳过 GitGuardian 密钥检测。跳过推送中所有提交的密钥检测选项与原生密钥检测的选项相同。以下任一方式:

  • 在某个提交消息中添加 [skip secret push protection]
  • 使用 secret_push_protection.skip_all push 选项

已知问题

  • 推送可能会延迟或超时。使用 GitGuardian 集成时:
    • 推送会发送到第三方。
    • GitLab 无法控制与 GitGuardian 的连接或 GitGuardian 的处理过程。
  • 由于GitGuardian API 限制,集成会忽略超过 1MB 的文件。这些文件不会被扫描。
  • 如果推送的文件名超过 256 个字符,推送会失败。
  • 更多信息,请参阅 GitGuardian API 文档

下面的故障排除步骤展示了如何缓解其中一些问题。

故障排除

使用 GitGuardian 集成时,您可能会遇到以下问题。

500 HTTP 错误

您可能会收到 HTTP 500 错误。

当提交包含大量已更改文件时,请求超时会导致此问题。

如果在一次提交中更改超过 50 个文件时发生此问题:

  1. 将您的更改拆分为更小的提交。
  2. 逐个推送较小的提交。

错误:Filename: ensure this value has at most 256 characters

您可能会收到 HTTP 400 错误,提示 Filename: ensure this value has at most 256 characters

当您在该推送中更改的某些文件名(不是路径)超过 256 个字符时,会发生此问题。

解决方法是尽可能缩短文件名。 例如,如果文件名无法缩短,因为它是框架自动生成的,请禁用集成并尝试再次推送。 如果需要,之后不要忘记重新启用集成。