依赖项与供应链安全(SCA)
使用软件组成分析、Dependabot、依赖项审查和固定版本的操作,保护流水线免受存在漏洞的第三方软件包影响
依赖项与供应链安全(SCA) 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
供应链风险
现代应用大多由第三方依赖项构建。依赖项树深处的单个易受攻击软件包,就可能危及整个应用。
这就是软件供应链风险,保护软件供应链是 DevSecOps 的核心部分。
什么是 SCA?
软件成分分析(SCA)会扫描项目的依赖项,并将其与已知漏洞(CVE)数据库进行比对。
与检查您的代码的 SAST 不同,SCA 关注的是您导入的库。
- 检测已知存在漏洞的版本
- 标记有风险或不兼容的许可证
- 建议安全的升级版本
Dependabot 警报
GitHub 提供 Dependabot,它会持续扫描您的清单文件,并在某个依赖项存在已知漏洞时发出警报。
您可以在设置 > 代码安全性与分析中启用它。警报会显示在“安全性”选项卡中,并附带严重性评级。
自动更新依赖项
Dependabot 还可以自动创建拉取请求,以升级存在漏洞的依赖项。请使用 dependabot.yml 文件进行配置。
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weeklyPR 中的依赖项审查
dependency-review-action 会在拉取请求上运行;如果某个 PR 引入了存在已知漏洞的依赖项,它就会阻止合并。
这会将安全性前移,在有风险的软件包进入主分支之前将其发现。
- name: Dependency Review
uses: actions/dependency-review-action@v4
with:
fail-on-severity: high固定操作版本
您在工作流中调用的操作本身也是依赖项。引用 @v4 就意味着信任控制该标签的人。
为了获得最高级别的安全性,请将操作固定到完整的提交 SHA,因为它不可变。
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11锁定文件很重要
锁定文件(例如 package-lock.json 或 poetry.lock)会固定精确的依赖项版本和哈希值。
在 CI 中,请使用确定性的安装命令,使构建可以复现,并避免在不知情的情况下拉取被篡改的版本。
- name: Install (locked)
run: npm ci生成 SBOM
软件物料清单(SBOM)是构建中每个组件的完整清单。为了满足合规要求,越来越多的场景需要提供它。
GitHub 可以以 SPDX 格式导出 SBOM,Syft 等工具也可以在 CI 中生成 SBOM。
- name: Generate SBOM
uses: anchore/sbom-action@v0
with:
format: spdx-json许可证合规
SCA 也涵盖许可证风险。将 GPL 许可的库引入专有产品,可能会产生法律义务。
请配置扫描器标记或拒绝不允许的许可证,以便问题在 CI 中暴露,而不是等到审计时才发现。
使构建失败
只有阻止不良代码,检测才有意义。请配置 SCA 门禁,在发现严重漏洞时使流水线失败。
设置严重性阈值:低风险发现发出警告,而严重发现则阻止合并或部署。
with:
fail-on-severity: critical持续监控
新的漏洞每天都会披露,因此只扫描一次是不够的。除了每个 PR 外,还要按计划运行 SCA。
这样可以发现那些在合并时安全、但后来变得易受攻击的软件包。
on:
schedule:
- cron: '0 6 * * 1'快速检查
请检验您对供应链安全的理解。
回顾
您已经学会保护软件供应链。
- SCA 扫描依赖项以查找已知漏洞
- Dependabot 会针对有风险的软件包发出警报并自动更新
- 依赖项审查会阻止有风险的 PR
- 将操作固定到 SHA,使用锁定文件,并生成 SBOM
再结合 SAST 和密钥管理,这套方法就完善了安全流水线。
常见问题解答
「依赖项与供应链安全(SCA)」课时是免费的吗?
是的 — 「依赖项与供应链安全(SCA)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「依赖项与供应链安全(SCA)」这节课中我会学到什么?
使用软件组成分析、Dependabot、依赖项审查和固定版本的操作,保护流水线免受存在漏洞的第三方软件包影响 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「依赖项与供应链安全(SCA)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CI/CD 安全最佳实践
- 使用 GitHub 管理机密信息
- 静态应用安全测试(SAST)
- 依赖项与供应链安全(SCA)