⚡

开源依赖许可证审计Skill dependency-license-audit

面向软件发布与采购尽调的依赖开源许可证合规审计技能:汇总项目全部直接依赖与传递依赖的许可证信息,将写法各异的许可证声明归一化,并按 SaaS 网络服务、内部工具、对外分发(含静态链接)、嵌入式固件等场景分别给出允许、条件允许、禁止三档结论;对条件允许项输出必须履行的义务清单(版权声明、NOTICE 附件、修改标注、提供源码、商标限制),对阻断项给出替换、隔离、采购商业授权、豁免登记等处置建议,并生成署名清单、SBOM 与 CI 许可证门禁的重扫机制,帮助团队判断能否商用、能否闭源分发以及需要承担哪些合规义务。

合规 0 次安装 0 次浏览 更新于 11/9/2026
名称 dependency-license-audit
描述 当需要审查项目开源依赖许可证、判断能否商用分发或准备合规材料时使用。该技能汇总直接与传递依赖的许可证,按网络服务、内部工具、对外分发三种场景给出允许/条件允许/禁止结论,生成署名清单与替换建议。适用于商业软件发布、开源合规审查、供应链风险管理和采购尽调。关键词:开源许可证、License、合规、GPL、AGPL、MIT、Apache、BSD、MPL、传递依赖、SBOM、商用、分发、署名、NOTICE、供应链、许可证冲突。

开源依赖许可证审计

回答:这个项目能不能商用、能不能闭源分发、需要履行哪些义务。

何时使用

  • 产品发布前需要出具开源合规结论。
  • 引入新依赖,需要判断许可证风险。
  • 收到许可证合规问询或客户尽调。
  • 需要生成 SBOM 与署名清单。

不适用:专利侵权判断(需法务);商业授权谈判。

输入

  1. 依赖清单:锁文件或 SBOM(CycloneDX / SPDX)。
  2. 使用场景:SaaS 服务、内部工具、桌面或嵌入式分发。
  3. 是否修改依赖源码、是否静态链接。
  4. 公司政策:黑白名单与豁免流程。

场景不明确时,按“对外分发 + 静态链接”从严评估。

工作流

第 1 步:收集全量依赖

  • 直接依赖与传递依赖都要列出,传递依赖常被忽略。
  • 记录名称、版本、来源、许可证声明、是否修改。
  • 许可证缺失视为“未知”,按高风险处理,不能默认宽松。

第 2 步:归一化

把写法各异的声明映射为标准标识:

  • Apache License 2.0、Apache-2.0 视为同一。
  • BSD-3-Clause 与 BSD-2-Clause 区分。
  • 双许可证(MIT OR Apache-2.0)按有利分支选择,并在清单中注明。
  • 自定义许可证需要人工阅读原文。

第 3 步:按场景判定

按 references/license-matrix.md 对照:

场景 关注点
SaaS AGPL、SSPL 触发网络分发义务
内部工具 分发义务通常不触发,但仍需遵守署名
对外分发(含静态链接) GPL 类强传染,需开源或替换
嵌入式固件 GPL 与静态链接组合风险最高

第 4 步:义务清单

对每个“条件允许”的依赖列出必须履行的义务:

  • 保留版权声明与许可证文本。
  • 附带 NOTICE 文件(Apache 类)。
  • 标注修改过的文件。
  • 提供对应源码(GPL/AGPL)。
  • 不得使用商标。

第 5 步:处置

  • 替换:寻找 Apache/MIT 许可的替代库。
  • 隔离:拆成独立进程并通过接口调用,降低链接传染风险(需法务确认)。
  • 采购:购买商业授权。
  • 豁免:走公司豁免流程并登记期限。

第 6 步:持续监控

  • 每次依赖升级重新扫描。
  • 新引入依赖在 CI 中做许可证门禁。
  • 对“未知许可证”单独立项清零。

检查清单

  • [ ] 传递依赖已纳入统计。
  • [ ] 许可证标识已归一化,双许可已选择并记录。
  • [ ] 未知许可证已人工核实。
  • [ ] 使用场景与链接方式已明确。
  • [ ] 每个条件允许项都有对应义务与责任人。
  • [ ] AGPL/SSPL 已评估网络服务触发条件。
  • [ ] 署名与 NOTICE 已并入发布包。
  • [ ] CI 门禁与升级重扫已配置。

输出模板

## 结论
可商用发布 / 条件允许 / 存在阻断项

## 风险清单
| 依赖 | 版本 | 许可证 | 场景结论 | 义务 | 处置 |
| --- | --- | --- | --- | --- | --- |

## 阻断项
- ...

## 署名清单
- 组件名 版本 许可证 版权方

## 后续
- 替换计划 / 豁免申请 / 监控机制

反模式

  • 只看直接依赖,忽略传递依赖。
  • 把“仓库里有 LICENSE 文件”当作合规完成。
  • 认为 SaaS 不用管 GPL,忽略 AGPL 的网络条款。
  • 静态链接 GPL 库后闭源分发。
  • 许可证缺失时默认按 MIT 处理。

参考文件

  • references/license-matrix.md:常见许可证义务与场景结论。
  • references/sbom-guide.md:SBOM 生成与署名清单实践。
  • scripts/license_check.py:按策略文件批量判定依赖许可证。