{{< details >}}

  • Tier: 旗舰版
  • Offering: JihuLab.com, 私有化部署

{{< /details >}}

{{< history >}}

  • 引入于极狐GitLab 15.9,使用名为 license_scanning_policies功能标志
  • 在极狐GitLab 15.11 中 GA。功能标志 license_scanning_policies 被移除。

{{< /history >}}

使用许可证审批策略来指定在合并请求可以合并之前需要审批的标准。

{{< alert type=”note” >}}

许可证审批策略仅适用于受保护的目标分支。

{{< /alert >}}

创建新的许可证审批策略的前提条件

许可证审批策略依赖于依赖扫描作业的输出来验证是否满足要求。如果依赖扫描未正确配置,因此没有与开放 MR 相关的依赖扫描作业运行,策略则没有数据来验证要求。当安全策略缺乏评估数据时,默认情况下它们会关闭失败,并假设合并请求可能包含漏洞。您可以使用 fallback_behavior 属性选择退出默认行为并将策略设置为开放失败。开放失败的策略会解除所有无效和不可执行的规则。

为了确保您的策略得到执行,您应该在目标开发项目上启用依赖扫描。您可以通过几种不同的方式实现这一点:

  1. 创建一个全局扫描执行策略,以强制所有目标开发项目运行依赖扫描。
  2. 使用合规流水线来定义一个依赖扫描作业,该作业在由给定合规框架强制的项目上执行。
  3. 与开发团队合作,在每个项目的 .gitlab-ci.yml 文件中配置依赖扫描,或通过使用安全配置面板启用。

许可证审批策略需要来自极狐GitLab支持的软件包的许可证信息。

创建新的许可证审批策略

创建许可证审批策略以执行许可证合规性。

要创建许可证审批策略:

  1. 链接一个安全策略项目到您的开发群组、子群组或项目(需要拥有者角色)。
  2. 在左侧边栏中选择 搜索或转到 并找到您的项目。
  3. 选择 安全 > 策略
  4. 创建一个新的合并请求审批策略
  5. 在您的策略规则中选择 许可证扫描

定义哪些许可证需要审批的标准

可以使用以下类型的标准来确定哪些许可证是“批准”或“拒绝”的,并需要审批。

  1. 当检测到任何在明确禁止的许可证列表中的许可证时。
  2. 当检测到任何许可证,除非是已明确列为可接受的许可证。

比较在合并请求分支中检测到的许可证与默认分支中的许可证的标准

可以使用以下类型的标准来确定是否需要基于默认分支中存在的许可证进行审批:

  1. 拒绝的许可证可以配置为仅在拒绝的许可证属于在默认分支中不存在的依赖项时才需要审批。
  2. 拒绝的许可证可以配置为在拒绝的许可证存在于默认分支中已存在的任何组件时需要审批。

许可证审批策略

如果发现违反许可证审批策略的许可证,它将阻止合并请求并指示开发人员移除它。注意,除非许可证审批策略的合格审批者批准合并请求,否则合并请求无法合并,直到删除 拒绝 的许可证。

具有拒绝许可证的合并请求

故障排除

许可证合规小部件卡在加载状态

在以下情况下会显示加载旋转器:

  1. 当流水线正在进行时。
  2. 如果流水线已完成,但仍在后台解析结果。
  3. 如果许可证扫描作业已完成,但流水线仍在运行。

许可证合规小部件每隔几秒轮询一次以获取更新的结果。当流水线完成时,流水线完成后的第一次轮询会触发结果的解析。根据生成报告的大小,这可能需要几秒钟。

最终状态是在成功的流水线运行已完成、解析并在小部件中显示许可证时。

许可证审批策略因 未知 许可证而阻止合并请求

许可证审批策略可能会因某些情况下的 未知 许可证而阻止合并请求。这可能发生在以下任何情况下:

  1. 依赖扫描作业未能识别特定组件的许可证。
  2. 使用了扫描工具无法识别的新或不常见的许可证。
  3. 组件的元数据中缺少或不完整的许可证信息。

为了解决这个问题:

  1. 查看流水线页面中的 许可证 标签以识别哪些组件具有 未知 许可证,或查看由极狐GitLab安全机器人生成的 超出策略 许可证。
  2. 手动调查这些组件以确定它们的实际许可证。
  3. 如果无法确定许可证或许可证不可接受,考虑移除或替换受影响的组件。

如果您需要暂时允许合并具有 未知 许可证:

  1. 编辑您的许可证审批策略。
  2. 未知 添加到允许的许可证列表。
  3. 在解决问题后,记得从允许的许可证列表中移除 未知 以保持适当的许可证合规性。

在处理许可证合规问题时,尤其是在处理 未知 许可证时,请始终咨询您的法律团队。