
214
第 14章
部署代码
撰写人:
Jeremiah Spradlin
、
Mark Lodato
、
Sergey Simakov
和
Roxana Loza
在生产环境中运行的代码是否是我们以为的那样?系统需要控件来预防或检测不安全
的部署操作:部署本身会更改系统,而任何这些操作都可能引入可靠性或安全性问题。
为了避免部署不安全的代码,需要在软件开发生命周期的早期阶段就开始管控。本章
首先定义了软件供应链威胁模型,并分享防范这些威胁的最佳实践。然后,本章会深
入探讨高级缓解策略,例如可验证的构建和基于来源的部署策略。最后给出一些关于
如何部署此类变更的实用建议。
前几章讨论了在编写和测试代码时如何考虑安全性和可靠性。但在构建和部署之前,代码
不会产生实际的影响。因此,仔细考虑构建和部署过程中所有因素的安全性和可靠性是很
重要的。仅仅通过检查工件本身难以确定已部署工件是否安全。管控软件供应链的各个阶
段有助于增强软件的安全性。例如,代码审查可以减少出错的概率并阻止恶意篡改的发
生,而自动测试有助于使代码正确地运行。
围绕编写、构建和测试的基础架构做管控的效果有限,因为攻击者可通过直接部署到系统
中来绕过这些机制。因此,系统应该拒绝并非来自正确软件供应链的部署操作。为此,供
应链中的每一步都必须能够提供证据来证明其已正确执行。
14.1
概念和术语
我们使用术语“软件供应链”来描述编写、构建、测试和部署软件系统的过程。通常,这
些步骤需要版本控制系统(
version control system,
VCS
)、持续集成(
continuous ...