不可变基础设施
Table of contents
不可变基础设施是一种安全和运维模型,在该模型中,服务器、容器和镜像等组件在部署后永不修改。您不应修补或重新配置在线系统,而是直接用新版本完全替换它们。
在使用 Docker Hardened Images 时,不可变性是一种最佳实践,可增强软件供应链的安全态势。
为何不可变性至关重要
可变系统更难保护和审计。在线修补或手动更新会引入以下风险:
- 配置漂移
- 未跟踪的变更
- 不一致的环境
- 增加的攻击面
不可变基础设施通过仅通过受控、可重复的构建和部署来进行更改来解决此问题。
Docker Hardened Images 如何支持不可变性
Docker Hardened Images 的构建目标是极简、锁定且非交互式,这阻碍了就地修改。例如:
- 许多 DHI 镜像排除了 Shell、包管理器和调试工具
- DHI 镜像设计为在部署前进行扫描和签名
- 鼓励 DHI 用户重建并重新部署镜像,而不是修补正在运行的容器
这种设计符合不可变实践,并确保:
- 更新通过 CI/CD 管道进行
- 所有变更都经过版本控制且可审计
- 系统可以回滚或一致地重现
实践中的不可变模式
利用不可变性的一些常见模式包括:
- 容器替换:不要登录容器修复错误或应用补丁,而是重建镜像并重新部署。
- 基础设施即代码 (IaC):在版本控制的文件中定义基础设施和镜像配置。
- 蓝绿或金丝雀部署:将新镜像与旧镜像并行推出,并逐渐将流量转移到新版本。
通过将不可变基础设施原则与加固镜像相结合,您可以创建一个可预测且安全的部署工作流,能够抵抗篡改并最大限度地降低长期风险。