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