首页/系统与基础设施/自动化运维速查/依赖包与供应链风险控制
排障与安全50 条

依赖包与供应链风险控制

依赖风险来自信任的传递:上游作者、构建过程与递归依赖都在链条上。控制手段是锁定精确版本与校验和、经由受控来源获取、最小化依赖数量,并维护一份可查的成分清单以便通告出现时快速定位影响范围。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌‌​​​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​​​‌‌​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌‌​​​​​‌‌‌​​​​​‌‌​‌‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌​​​​‌‌​​​​‌​‌‌​‌​​‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​‌​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

依赖风险在于信任的传递

自动化环境里的代码只有一小部分是自研的,其余都来自上游包、内容库与基础镜像。引入依赖的同时,也把「信任」传递给了它的作者、它的构建过程以及它依赖的其他包。攻击者的常见手法并不复杂:仿冒名称接近的包、接管长期无人维护的项目、通过传递依赖间接进入。防御的着力点因此也明确——锁定拿到的具体内容、校验其完整性、并减少不必要的依赖数量。

基本信息

适用对象语言包管理器、系统软件包、基础镜像与内容库
主要风险名称仿冒、维护者被接管、传递依赖、下载源被替换
控制手段锁定精确版本与校验和、使用受控来源、最小化依赖
配套机制维护可查的成分清单,便于通告出现时快速定位
更新策略有计划地升级,先评估变更与通告再上生产

落地控制点

  • 锁定精确版本:不用浮动版本范围,避免同一份配置在不同时间装出不同内容
  • 校验完整性:安装时使用校验和或签名验证,确保拿到的内容与锁定值一致
  • 统一来源:经由内部代理或镜像获取,避免直连不受控的第三方地址
  • 控制名称仿冒:提交前核对包名与拼写,警惕与常用包高度相似的名称
  • 减少依赖数量:每减少一个依赖,信任链条与后续维护成本都随之减少
  • 维护成分清单:出现安全通告时能立刻判断哪些主机受影响

常见锁定与校验方式

常见锁定与校验方式
pip install --require-hashes -r requirements.txt   # 按校验和安装
npm ci                                              # 严格按锁定文件安装
bundle install --frozen                           # 使用锁定文件且不允许变更
grep -rn 'version:' requirements.yml | head        # 内容库清单里的版本是否写死
rpm -q --verify <pkg>                             # 校验已安装包文件是否被改动
sha256sum -c checksums.txt                        # 手工校验下载产物

风险与对应控制

风险表现控制
名称仿冒包名相近但作者不同提交前核对名称与来源
维护者被接管版本跳变且无变更说明锁定版本后再评估升级
传递依赖直接依赖干净,间接引入可疑包梳理依赖树并逐项确认
下载源被替换内容与官方不一致校验和或签名验证
版本漂移同一配置装出不同版本使用锁定文件与精确版本
升级依赖是必要的,但要按计划进行:先在非生产环境安装新版本、观察差异与实际行为,再决定是否上生产。完全冻结不升级会让已知缺陷长期留存,无脑跟随最新则把决定权交给了上游。
成分清单不必依赖复杂工具起步:把直接依赖与锁定文件纳入版本管理,等于已经能回答「哪些主机装了哪个版本」这一最关键的问题,出现通告时的定位速度会明显提升。

易错点

  • 使用浮动版本范围:同一份配置在不同时间装出不同内容,故障无法复现
  • 只锁直接依赖不锁传递依赖:间接引入的包仍会随上游变动
  • 直连第三方来源不回源校验:内容被替换时没有任何校验手段
  • 无限期冻结不升级:已知缺陷长期存在,且越晚升级改动越大
  • 无可查成分清单:出现安全通告时无法快速判断影响范围,只能全量排查

数据来源与参考

  • OpenSSF 供应链安全指南
  • SLSA 供应链完整性框架
  • NIST SP 800-161:供应链风险管理

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/dependency-supply-chain-risk.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌‌​​​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌​​​‌‌​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌‌​​​​​‌‌‌​​​​​‌‌​‌‌​​​‌‌‌‌​​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌​​​​‌‌​​​​‌​‌‌​‌​​‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌​‌​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​