# 关于开源许可证合规

使用开放源代码许可证符合性定义并强制实施存储库中依赖项的许可证策略。

> \[!NOTE]
> 开源许可证合规性处于 公开预览，且可能会发生变更。

## Overview

开源许可证合规有助于您**跟踪依赖项的许可证**，并**执行策略**，以管理您供应链中的开源软件。 可以使用许可证符合性来降低法律和操作风险，在合并更改 **之前** 捕获不合规的依赖项。

## 许可证策略的工作原理

可以定义一个企业或组织策略，用于控制允许使用哪些许可证依赖项。

您可以从内置列表中选择许可证；如果列表中未列出所需许可证，则可以手动添加 SPDX 许可证标识符。

您的策略在企业、组织和仓库范围生效。 当 **企业开放源代码许可证管理器** 批准请求时，还可以添加包或许可证例外。

许可证评估使用存储库中的依赖项数据，包括依赖项关系图中检测到的可传递依赖项。

## 拉取请求强制执行机制的工作原理

开放源代码许可证符合性是通过分支规则集强制执行的。 当拉取请求更改包清单时， GitHub 比较基础和拉取请求分支之间的依赖项更改、根据策略评估检测到的许可证，并报告冲突。

如果 **活动** 模式下有规则集使用“合并前需要许可证符合性结果”条件，则会阻止引入不合规依赖项的拉取请求，直到冲突得到解决。 具有该条件的 **评估** 模式规则集将运行许可证检查并批注拉取请求，但不会阻止合并。

此外，在合并之前需要注释解析的 [分支保护规则](/zh/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule) 将跟踪许可证检查中的批注，因此，即使 **评估** 规则集生成的警报也会受到保护的约束。

## 显示结果的位置

如果某个依赖项的许可证不在策略中，则结果将显示在拉取请求批注中。 批注不会自动生成异常请求，因为开发人员可以决定修改其代码以避免不合规依赖项。 如果他们确实想要使用依赖项， GitHub 将提示开发人员了解详细信息，然后将关闭请求发送到有权修改策略的企业开放源代码许可证管理器。

对于企业开源许可证管理员，待处理的例外请求可在企业安全视图中查看，并会通过电子邮件通知发送。

## 范围和治理模型

可以在企业范围内为通用基线创建策略，然后根据需要对特定于存储库的异常进行分层。

对于大型企业，常见的模式是：

* 集中定义广泛的策略
* 将企业开放源代码许可证管理器角色分配给策略审阅者
* 使用存储库自定义属性将存储库分类为非活动、评估或活动
* 使用面向自定义属性值的规则集按存储库控制强制模式

具有写入访问权限的开发人员可以从存储库的许可证策略设置页查看存储库的有效策略和例外。

## 后续步骤

若要开始操作，请参阅 [配置开放源代码许可证策略](/zh/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configure-license-policies)。

有关规则集的详细信息，请参阅 [关于规则集](/zh/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets)。