本文档正在积极开发中,尚未最终定稿。
Skip to content

6.1 依赖政策 (Dependency Policy)

原则

1. 最小化原则

仅使用产品功能所必需的依赖项。不必要的依赖项会增加攻击面 (Attack Surface)。

2. 可信性

依赖项必须来自可信来源且处于积极维护状态。

3. 许可证合规

仅使用具有兼容许可证的依赖项。

4. 版本管理

依赖项必须固定到特定版本(禁止使用 latest、禁止使用范围)。

允许的许可证

许可证状态
MIT✅ 允许
Apache-2.0✅ 允许
BSD-2-Clause✅ 允许
BSD-3-Clause✅ 允许
ISC✅ 允许
CC0-1.0✅ 允许
Unlicense✅ 允许
MPL-2.0⚠️ 需审查

禁止的许可证

许可证状态原因
GPL-2.0❌ 禁止Copyleft — 可能影响专有代码
GPL-3.0❌ 禁止强 Copyleft
AGPL-3.0❌ 禁止网络 Copyleft
SSPL❌ 禁止服务端 Copyleft
EUPL(未审查)⚠️ 审查需进行兼容性审查

许可证合规检查通过 modules-license-compliance.yml 自动执行。

新依赖项的评估标准

采纳新依赖项之前:

标准最低要求
维护状况最近一次提交 < 6 个月
社区>100 GitHub Stars 或已建立的项目
安全历史无未解决的 CRITICAL CVE
许可证在允许列表中
传递依赖无已知风险
维护者可识别身份,非匿名临时账户

自动化执行

CI/CD 流水线

yaml
# 每个 PR 都会检查:
- Security Scan (Trivy/Grype) → 存在 CRITICAL 时阻止
- License Compliance → 存在禁止的许可证时阻止
- Dependabot Alerts → 新漏洞的信息通知

Dependabot 配置

  • 每周检查所有生态系统
  • 为安全更新自动创建 PR
  • 可信软件包的补丁更新自动合并

供应链攻击处理流程

如怀疑存在被入侵的依赖项(依赖混淆 (Dependency Confusion)、域名仿冒 (Typosquatting)、维护者接管 (Maintainer Takeover)):

  1. 立即: 在所有项目中识别受影响的依赖项(SBOM 搜索)
  2. 4 小时内: 将依赖项固定到安全版本或移除
  3. 24 小时内: 验证被入侵的版本是否曾部署到生产环境
  4. 如已被入侵: 启动事件响应手册

文档基于 CC BY-NC 4.0 许可 · 代码基于 MIT 许可