Skip to main content

配置开放源代码许可证策略

创建并强制执行开源许可证策略,以控制您的依赖项允许使用哪些许可证。

谁可以使用此功能?

Organizations owned by a GitHub Enterprise account with GitHub Code Security enabled

注意

开源许可证合规性处于 公开预览,且可能会发生变更。

先决条件

在配置许可证策略之前,请确保:

  • 你的组织具有 GitHub Code Security
  • 你有权管理企业策略和规则集
  • 为要评估的存储库启用了依赖项关系图

关于许可证符合性

开源许可证合规功能可让您定义一项策略,用于指定您的依赖项允许使用哪些许可证。

通过规则集强制执行策略时,GitHub 会评估更改包清单的拉取请求,检查其直接依赖项和传递依赖项,并将检测到的许可证与你的策略进行比较。 包含不合规依赖项的拉取请求将持续被阻止,直到违规问题得到解决。

冲突通常由以下方法解决:

  • 更新拉取请求以使用合规依赖项
  • 批准针对某个软件包的例外情况
  • 更新策略以在适当情况下允许许可证

创建许可证策略

  1. 导航到您的企业。 例如,从 GitHub.com 上的 公司 页面。
  2. 在页面顶部,单击“ 策略”。
  3. 在边栏中,单击“ 许可证符合性”。
  4. 单击 “默认策略”。
  5. “编辑许可证策略 ”页上,单击“ 添加许可证 ”,然后选择“ 从列表中选择”。
  6. 从许可证选取器中,选择要允许的许可证。 此列表中的许可证根据其在企业环境中使用的一般风险级别进行分类,但这纯粹是信息性的,并不构成法律建议。 请始终与组织的法律团队联系以获取策略指导
  7. 保存所做的更改。

或者,如果有来自另一个工具的现有许可证策略,则可以将其导入为 SPDX 表达式列表。

  1. “编辑许可证策略 ”页上,单击“ 添加许可证 ”,然后选择 “手动输入”。
  2. 在新行中输入一个或多个 SPDX 许可证标识符。
  3. 保存所做的更改。

您添加的许可证形成您的基线策略。 稍后可以在处理警报时添加包级异常。

为企业开放源代码许可证管理器配置访问权限

  1. 导航到您的企业。 例如,从 GitHub.com 上的 公司 页面。
  2. 在页面顶部,单击“ 人员”。
  3. 在左侧栏中,单击“ 企业角色”。
  4. 单击 “角色分配”。
  5. 单击“ 分配角色”。
  6. 选择 企业开放源代码许可证管理器 角色。
  7. 选择要向其分配角色的用户或团队。
  8. 单击“ 分配角色”。

分配此角色还会使审阅者订阅请求通知,以便他们能够快速响应驳回请求。

(可选)使用自定义属性控制每个存储库的推出

如果需要逐步推出,请使用存储库自定义属性来控制每个存储库是否处于非活动、评估或活动强制模式。

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

  3. 在左边栏的“Code, planning, and automation”部分,单击“ Repository”,然后单击“Custom properties”********。

    组织的设置页面的屏幕截图。 在边栏中,标有“自定义属性”的链接以橙色标出。

  4. 例如 open_source_license_compliance,创建单选存储库自定义属性。

  5. inactiveevaluateactive 添加值。

  6. 将默认值设置为 inactive.

  7. 确定谁可以更改属性值。

  8. 根据存储库的推出阶段将属性值分配给存储库。

使用规则集在拉取请求中强制执行策略

建议创建两个规则集,一个用于 评估 模式,一个用于 活动 模式。 如果创建了自定义属性来控制推出,则可以在此处针对这些属性。

  1. 转到要强制执行的范围的规则集页。

  2. 创建分支规则集。

  3. 在规则集名称下,设置 “强制”状态

    • 对于第一个规则集,请选择“ 评估”。
    • 对于第二个规则集,请选择“启用”。
  4. 选择如何以存储库为目标:

    • 如果使用自定义属性,请通过 open_source_license_compliance 进行定位:
      • 对于评估模式规则集,将属性值为 evaluate 的存储库作为目标。
      • 对于活动模式规则集,将属性值为 active 的存储库设为目标。
    • 如果不使用自定义属性,则按存储库模式或显式存储库选择来定位存储库。
  5. 启用合并前要求提供许可证合规性结果

  6. 保存所做的更改。

有关规则集的详细信息,请参阅 关于规则集创建组织中存储库的规则集

测试策略强制实施

  1. 在目标存储库中,打开更改依赖项清单的拉取请求。
  2. 确认拉取请求注释显示许可证合规性结果。
  3. 如果依赖项违反策略,请查看生成的警报,并在需要异常时请求关闭。

当违规问题未解决时,拉取请求将继续处于被阻止状态。

查看和处理异常请求

  1. 作为企业开放源代码许可证管理器,请在企业安全视图中打开挂起的许可证警报请求列表。
  2. 查看每个请求,并确定是拒绝还是批准它。
  3. 如果批准,请选择异常是否应用于包、许可证或包模式。
  4. 选择要在存储库范围内还是企业范围内应用异常。
  5. 保存异常信息。

请求获得批准后,警报将被关闭,且拉取请求将解除阻止,前提是没有其他必需检查未通过。

查看存储库的有效策略

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

  2. 在仓库名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏中的“安全性”下,单击“ 许可证策略”。

  4. 查看针对该存储库生效的组合策略和异常集。

  5. 根据需要更新企业级或存储库级策略。

延伸阅读