先决条件
在配置许可证策略之前,请确保:
- 你正在使用 GitHub Enterprise Cloud(包括数据驻留的 GHEC),并且你的组织已在要用于许可证合规性的仓库上启用了GitHub Code Security。
- 有权管理企业策略和规则集。
- 为要评估的存储库启用了依赖项关系图。
关于许可证符合性
开源许可证合规功能可让您定义一项策略,用于指定您的依赖项允许使用哪些许可证。
通过规则集强制执行策略时,GitHub 会评估更改包清单的拉取请求,检查其直接依赖项和传递依赖项,并将检测到的许可证与你的策略进行比较。 包含不合规依赖项的拉取请求将持续被阻止,直到违规问题得到解决。
冲突通常由以下方法解决:
- 更新拉取请求以使用合规依赖项
- 批准针对某个软件包的例外情况
- 更新策略以在适当情况下允许许可证
配置许可证合规性
创建许可证策略
- 导航到您的企业。 例如,从 GitHub.com 上的 公司 页面。
- 在页面顶部,单击“ 策略”。
- 在边栏中,单击“ 许可证符合性”。
- 单击 “默认策略”。
- 在 “编辑许可证策略 ”页上,单击“ 添加许可证 ”,然后选择“ 从列表中选择”。
- 从许可证选取器中,选择要允许的许可证。 此列表中的许可证根据其在企业环境中使用的一般风险级别进行分类,但这纯粹是信息性的,并不构成法律建议。 请始终与组织的法律团队联系以获取策略指导。
- 保存所做的更改。
或者,如果有来自另一个工具的现有许可证策略,则可以将其导入为 SPDX 表达式列表。
- 在 “编辑许可证策略 ”页上,单击“ 添加许可证 ”,然后选择 “手动输入”。
- 在新行中输入一个或多个 SPDX 许可证标识符。
- 保存所做的更改。
您添加的许可证形成您的基线策略。 稍后可以在处理警报时添加包级异常。
为企业 Open-Source 许可证管理器配置访问权限
- 导航到您的企业。 例如,从 GitHub.com 上的 公司 页面。
- 在页面顶部,单击“ 人员”。
- 在左侧栏中,单击“ 企业角色”。
- 单击 “角色分配”。
- 单击“ 分配角色”。
- 选择 企业 Open-Source 许可证管理器 角色。
- 选择要向其分配角色的用户或团队。
- 单击“ 分配角色”。
分配此角色还会让审阅者订阅请求通知,以便他们可以快速响应解除请求。
(可选)使用自定义属性控制每个存储库的推出
如果需要逐步推出,请使用存储库自定义属性来控制每个存储库是否处于非活动、评估或活动强制模式。
-
在 GitHub 上,导航到组织的主页面。
-
在组织名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

-
在边栏中的“代码、规划和自动化”下,单击 “存储库”,然后单击“自定义属性”。

-
例如
open_source_license_compliance,创建单选存储库自定义属性。 -
为
inactive、evaluate和active添加值。 -
将默认值设置为
inactive. -
确定谁可以更改属性值。
-
根据存储库的推出阶段将属性值分配给存储库。
使用规则集在拉取请求中强制执行策略
建议创建两个规则集,一个用于 评估 模式,一个用于 活动 模式。 如果创建了自定义属性来控制推出,则可以在此处针对这些属性。
-
转到你要实施的范围的规则集页面。
-
创建分支规则集。
-
在规则集名称下,设置 “强制”状态:
- 对于第一个规则集,请选择“ 评估”。
- 对于第二个规则集,请选择“启用”。
-
选择如何以存储库为目标:
- 如果使用自定义属性,请通过
open_source_license_compliance进行定位:- 对于评估模式规则集,将属性值为
evaluate的存储库作为目标。 - 对于活动模式规则集,将属性值为
active的存储库设为目标。
- 对于评估模式规则集,将属性值为
- 如果不使用自定义属性,则按存储库模式或显式存储库选择来定位存储库。
- 如果使用自定义属性,请通过
-
启用合并前要求提供许可证合规性结果。
-
保存所做的更改。
有关规则集的详细信息,请参阅 关于规则集 和 创建组织中存储库的规则集。
测试策略强制实施
- 在目标存储库中,打开更改依赖项清单的拉取请求。
- 确认拉取请求批注显示许可证合规结果。
- 如果依赖项违反策略,请查看生成的警报,并在需要异常时请求关闭。
如果规则集处于 Active 模式,则拉取请求将一直被阻止,直到所有许可证策略冲突都得到解决。
管理许可证合规性请求和策略
查看和处理异常请求
- 作为企业开放源代码许可证管理器,请在企业安全视图中打开挂起的许可证警报请求列表。
- 查看每个请求,并确定是拒绝还是批准它。
- 如果批准,请选择异常是否应用于包、许可证或包模式。
- 选择要在存储库范围内还是企业范围内应用异常。
- 保存例外。
请求获得批准后,警报将被关闭,且拉取请求将解除阻止,前提是没有其他必需检查未通过。
查看存储库的有效策略
-
在 GitHub 上,导航到存储库的主页面。
-
在仓库名称下,单击 “Settings”****。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

-
在边栏中的“安全性”下,单击“ 许可证策略”。
-
查看对该存储库生效的组合策略和例外集。
-
根据需要更新企业级或存储库级策略。
在存储库策略中,在企业级设置的包和许可证条目将不可编辑。 带有 标记的项表示存储库级条目,这些条目可以删除。
审计事件
对许可证策略的更改会在审核日志中生成事件。 为了符合性目的,这些事件可用于查看更改的历史记录或向外部系统提供数据。 日志事件分类为 策略管理,前缀为 license_compliance_policy. 它们将具有操作类型 create 或 modify。 有关审核日志事件内容的详细信息,请参阅 组织的审核日志事件。
许可证合规性 API
有几个 REST API 终结点可用于管理许可证符合性策略。 可以使用 API 以编程方式备份和还原企业策略,并查询包列表在被包含在存储库的依赖项中时是否会造成任何策略违规。 此外,许可证符合性关闭请求的操作可以在创建请求、接收响应或取消时生成 Webhook 事件。
有关企业策略管理 API 的详细信息,请参阅 适用于依赖项关系图的 REST API 终结点。 有关包检查 API 的详细信息,请参阅 存储库的 REST API 终结点。 有关 Webhook 的详细信息,请参阅 Webhook 事件和有效负载。