依赖固定是什么
依赖固定按风险选择级别:精确版本优于范围约束,浮动版本最差;容器基础镜像与关键内部构件可固定到内容摘要。它解决「构建时内容被悄悄替换」的问题,前提是仓库侧不可变。固定必须配对更新机制——只固定不更新会错过安全补丁,从「稳定」滑向「冻结的老旧」。
固定级别
| 级别 | 写法示例 | 特点 |
|---|---|---|
| 浮动 | latest 或宽范围 | 自动跟随更新,可复现性差 |
| 精确版本 | 1.2.3 | 可读,仓库不可变时基本可复现 |
| 内容摘要 | 摘要或哈希锁 | 可复现性强,可读性差 |
典型使用场景
- 生产构建:锁定文件确保每次装出同一棵依赖树
- 基础镜像:固定版本标签,高保障场景再固定摘要
- 内部构件:按摘要引用并校验签名
- 审计响应:漏洞通报时快速圈定受影响范围
- 升级治理:定期批量更新、测试、评审一条龙
- 依赖审计:锁文件让漏洞扫描结果与线上一致,不随浮动变化
- 容器构建:锁定文件变更才触发依赖重装,构建缓存与固定策略配合
- 评审友好:锁文件变更单独成提交,升级内容在评审中一目了然
分层策略
分层策略
应用依赖:锁定文件(精确闭包)
容器基础镜像:固定具体版本;高保障场景固定到摘要
FROM node:20.11.1-slim@sha256:... # 标签加摘要双保险
内部构件:按摘要引用并校验签名
# 更新走机器人提合并请求,测试通过后合并固定与更新是一对:固定依赖必须配自动更新通道,否则陷入「冻结的老旧」。固定范围要覆盖构建输入:语言依赖、系统包与基础镜像三者缺一不可。
摘要的可读性差:在清单里附注「摘要对应的版本」,人工评审时不用去查编号。固定范围要覆盖构建输入:语言依赖、系统包与基础镜像三者缺一不可。