极狐 GitLab

GitGuardian

Tier: 专业版,旗舰版

Offering: JihuLab.com,私有化部署

版本历史
  • 于极狐GitLab 16.9 引入,带有名为 git_guardian_integration功能标志。默认启用。在 JihuLab.com 上禁用。
  • 于极狐GitLab 17.7 在 JihuLab.com 上启用
  • 于极狐GitLab 17.8 GA。功能标志 git_guardian_integration 已移除。

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

你可以配置极狐GitLab 根据 GitGuardian 策略拒绝提交。

要设置 GitGuardian 集成:

  1. 创建 GitGuardian API 令牌
  2. 为你的项目设置 GitGuardian 集成

创建 GitGuardian API 令牌#

先决条件:

  • 你必须拥有 GitGuardian 账户。

创建 API 令牌:

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

现在,你已成功创建可用于集成的 GitGuardian API 令牌。

为你的项目设置 GitGuardian 集成#

先决条件:

  • 你必须拥有项目的维护者或所有者角色。

创建并复制 API 令牌后,配置极狐GitLab 以拒绝提交:

为你的项目启用集成:

  1. 在顶部栏中,选择 搜索或跳转到 并找到你的项目或群组。
  2. 在左侧边栏中,选择 设置 > 集成
  3. 选择 GitGuardian
  4. 启用集成 中,选中 活跃 复选框。
  5. API 令牌 中,粘贴来自 GitGuardian 的令牌值
  6. 可选。选择 测试设置
  7. 选择 保存更改

极狐GitLab 现在可以根据 GitGuardian 策略拒绝提交了。

跳过密钥检测#

版本历史
  • 于极狐GitLab 17.0 引入

如果需要,你可以跳过 GitGuardian 密钥检测。跳过推送中所有提交的密钥检测的选项与原生密钥检测的选项相同。请执行以下任一操作:

  • [skip secret push protection] 添加到一条提交信息中。
  • 使用 secret_push_protection.skip_all 推送选项

已知问题#

  • 推送可能延迟或超时。使用 GitGuardian 集成时:
    • 推送会发送到第三方。
    • 极狐GitLab 无法控制与 GitGuardian 的连接或 GitGuardian 的处理过程。
  • 由于 GitGuardian API 限制,集成会忽略超过 1 MB 的文件。这些文件不会被扫描。
  • 如果推送的文件的名称超过 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 个字符时。

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